عند استخدام دالة word_tokenize ، يتم استبدال علامات الاقتباس بعلامات اقتباس مختلفة.
مثال (ألماني):
import nltk
sentence = "\"Ja.\"" # sentence[0] = "
tokens = nltk.word_tokenize(sentence) #tokens[0] = ``
print(tokens[0] == sentence[0]) # Prints false.
هل هذا خطأ أم هناك سبب وراء هذا السلوك؟
نعم ، هذا هو الناتج المتوقع. يتم تغيير علامات التنقيط المزدوجة للإشارة صراحة إلى علامات الاقتباس المزدوجة الافتتاحية والختامية. يتم تحويل "
الافتتاحي إلى 2x backticks والإغلاق إلى 2x من علامات الاقتباس المفردة.
>>> from nltk import word_tokenize
>>> sent = '"this is a sentence inside double quotes."'
>>> word_tokenize(sent)
['``', 'this', 'is', 'a', 'sentence', 'inside', 'double', 'quotes', '.', "''"]
>>> word_tokenize(sent)[0]
'``'
>>> len(word_tokenize(sent)[0])
2
>>> word_tokenize(sent)[0] == '`'*2
True
>>> len(word_tokenize(sent)[-1])
2
>>> word_tokenize(sent)[-1] == "'" * 2
True
لست متأكدًا من سبب هذا السلوك بالرغم من ذلك. من المحتمل أن يكون ذلك واضحًا عند تحديد عروض الأسعار الافتتاحية / الختامية.
شكرا على الشرح.
ولكن عندما أستبدل علامات الاقتباس المزدوجة بعلامة اقتباس مفردة (أو اثنتين) أو علامات اقتباس خلفية ، لا يحدث هذا السلوك.
وأعتقد أنه من الغريب بعض الشيء أن يقوم الرمز المميز بتبديل أجزاء من النص الأصلي ، لأنه قد يؤدي إلى مشاكل وليس شفافًا حقًا.
أعتقد أنه سيتعين عليّ وضعها في الاعتبار ، لكنني أفضل أن تظل العناصر الأصلية للسلسلة كما هي.
mwess بعد إجراء بعض التدقيق ، فإن التحويل من "
إلى `` هو قطعة أثرية من كلمة penn treebank الأصلية .
يحدث ذلك فقط عندما تكون هناك علامات اقتباس مزدوجة ، قواعد regex التي تقوم بالبدائل هي https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L49
أما بالنسبة لعروض الأسعار المنفردة ، فإن رمز بنك الشجرة المميز STARTING_QUOTES
regexes نرى أنه لا يشير إلى الاتجاه. أعتقد أن هذا لا يزال متسقًا مع شروح بن تريبانك.
آمل أن تساعد التوضيحات.
شكرا جزيلا. في الواقع يساعد كثيرا.
لا ينصح بتعديل النص الأصلي في العديد من التطبيقات. أتمنى أن يكون لدى word_tokenize
علامة لإيقاف تعديل النص.
التعليق الأكثر فائدة
mwess بعد إجراء بعض التدقيق ، فإن التحويل من
"
إلى `` هو قطعة أثرية من كلمة penn treebank الأصلية .يحدث ذلك فقط عندما تكون هناك علامات اقتباس مزدوجة ، قواعد regex التي تقوم بالبدائل هي https://github.com/nltk/nltk/blob/develop/nltk/tokenize/treebank.py#L49
أما بالنسبة لعروض الأسعار المنفردة ، فإن رمز بنك الشجرة المميز
STARTING_QUOTES
regexes نرى أنه لا يشير إلى الاتجاه. أعتقد أن هذا لا يزال متسقًا مع شروح بن تريبانك.آمل أن تساعد التوضيحات.