我想在NLTK的分类读物中读孟加拉文。对于gedit文本编辑器中的孟加拉语文本文件快照:
python - 使用python自然语言工具包阅读孟加拉语-LMLPHP
sublime文本编辑器中的文件快照:
python - 使用python自然语言工具包阅读孟加拉语-LMLPHP
从快照中可以看出问题所在。问题是unicode组合问题(虚线环是一个死赠品)。下面是阅读文本的代码段:

>>> path = os.path.expanduser('~/nltk_data/corpora/Bangla')
>>> from nltk.corpus.reader import CategorizedPlaintextCorpusReader
>>> from nltk import RegexpTokenizer
>>> word_tokenize = RegexpTokenizer("[\w']+")
>>> reader = CategorizedPlaintextCorpusReader(path,r'.*\.txt',cat_pattern=r'(.*)_.*',word_tokenizer=word_tokenize)
>>> reader.sents(categories='pos')

输出为:
python - 使用python自然语言工具包阅读孟加拉语-LMLPHP
输出应为“একবার”,而不是“একব”র怎么办??提前谢谢。

最佳答案

您需要为Bengali characters提供Unicode范围。
使用

word_tokenize = RegexpTokenizer("[\u0980-\u09FF']+")

撇号可以保留在字符类中。

08-16 08:05