我正在使用 nltk word_tokenizer
将句子拆分为单词。
我想象征这个句子:
في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء
我正在编写的代码是:
import re
import nltk
lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"
wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
问题是word_tokenize
函数不会被单词分开。相反,它通过字母分裂,以使输出为:
"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء"
有什么想法吗?
到目前为止我到达的内容:
通过在此处尝试文本,它似乎是由字母象征的。但是,其他标记器将其正确化。这是否意味着word_tokenize
仅适用于英语?这对大多数NLTK函数都适用吗?
我总是建议使用nltk.tokenize.wordpunct_tokenize
。您可以在http://text-processing.com/demo/tokenize/上尝试许多NLTK Tokenizers,然后亲自查看。
这是我使用代码获得的输出,但我记得Unicode在Python 2中的表现不佳,我使用了3.5
nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')
['فف__________ 'o', 'شش', 'idemelt', '迈 '培训', '...', '„ ZOLE', '', 'شاح了', 'فجأة', '} '..etherجة', 'ان缉', '骗', '贵 '„ ZOLE', 'شش']
import nltk
nltk.download('punkt')
st = 'في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء.... '
print(nltk.word_tokenize(st))
['ف妖',''كل',''''''''م','→ح了جج了','opth'...'...'...','。'›','..',','";»»»»'»»»„„اسو请','qفف还有','。
import nltk
nltk.download('punkt')
text = 'أسلوب المقاولات أغلى وأكثر خسارة لرب العمل من تشغيل العمال بالأجور اليومية العمل لكنه أكثر راحة له وأبعد عن القلق.'
nltk.word_tokenize(text)
print(nltk.word_tokenize(text))
['أسلوب', 'المقاولات', 'أغلى', 'وأكثر', 'خسارة', 'لرب', 'من', 'تشغيل', 'العمال', 'بالأجور', 'اليومية', 'العمل', 'لكنه', 'أكثر', 'راحة', 'له', 'وأبعد', 'عن', 'القلق', '.']