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