我在两台不同的机器(Mac和Linux)上运行相同的代码,尽管两台机器运行相同版本的nltk
,但它们提供不同语言的停用词列表(14为Mac) ,17 Linux)。
import nltk
nltk.__version__
from nltk.corpus import stopwords
stopwords.ensure_loaded
stopwords_dict = {lang:stopwords.words(lang) for lang in stopwords.__dict__.get('_fileids')}
stopwords_dict.keys()
len(stopwords_dict.keys())
两台计算机nltk
中的'3.2.5'
版本相同,但语言数量不同:
苹果:
dict_keys(['danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'portuguese', 'russian', 'spanish', 'swedish', 'turkish'])
14
的Linux :
dict_keys(['kazakh', 'swedish', 'spanish', 'danish', 'english', 'italian', 'portuguese', 'dutch', 'turkish', 'arabic', 'romanian', 'russian', 'french', 'hungarian', 'german', 'finnish', 'norwegian'])
17
我未能在nltk
文档中找到答案。
答案 0 :(得分:1)
我完全忘记了nltk
和"它为数十个语料库和训练有素的模型提供的内置支持"是两件不同的事情。这就解释了为什么即使nltk
版本相同,语料库也可能不同。
正如@alvas在评论中指出的那样,解决方案就是更新nltk_data
。
nltk.download("stopwords")
可以找到nltk_data
提供的资源的完整列表here。