我尝试了这个,但它不起作用
from nltk.corpus import stopwords
stopwords_list = stopwords.words('arabic')
print(stopwords_list)
更新[2018年1月]:自2017年10月以来,nltk数据存储库已包含阿拉伯语停用词,因此不再出现此问题。上面的代码将按预期工作。
答案 0 :(得分:5)
截至2017年10月,nltk包含一系列阿拉伯语停用词。如果您在该日期之后运行nltk.download()
,则不会出现此问题。如果您已成为nltk的用户已有一段时间且您现在缺少阿拉伯语停用词,请使用nltk.download()
更新您的停用词语料库。
如果您在没有参数的情况下致电nltk.download()
,您会发现stopwords
语料库显示为“过时”(红色)。下载包含阿拉伯语的当前版本。
或者,您只需在交互式提示中运行以下代码一次,即可更新停用词语料库:
>>> import nltk
>>> nltk.download("stopwords")
注意:强>
查看列表中的单词非常慢。使用集合而不是列表。例如,
arb_stopwords = set(nltk.corpus.stopwords.words("arabic"))
为什么不检查stopwords
集合包含的内容:
>>> from nltk.corpus import stopwords
>>> stopwords.fileids()
['danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian',
'italian', 'norwegian', 'portuguese', 'russian', 'spanish', 'swedish',
'turkish']
所以不,没有阿拉伯语列表。我不确定你的意思是“添加它”,但是停用词列表只是单词列表。他们甚至没有进行形态分析,也没有其他你想用的语言。因此,如果你有(或者可以放在一起)一个阿拉伯语停用词列表,只需将它们放在set()
¹中,如果你的代码有效,你就比你的位置领先一步。
答案 1 :(得分:3)
这里有一个阿拉伯语停用词列表:
https://github.com/mohataher/arabic-stop-words/blob/master/list.txt
如果您使用文件名arabic
将此文件保存在nltk_data目录中,则可以使用上面的代码使用nltk调用该文件,其中包括:
from nltk.corpus import stopwords
stopwords_list = stopwords.words('arabic')
(请注意,通过在Python解释器中键入nltk.data.path
可以看到nltk_data目录的可能位置。
您也可以使用alexis'建议检查是否找到了。
请注意他的建议,将停用词列表转换为集stopwords_set = set(stopwords.words('arabic'))
,因为它可以对性能产生真正的影响。