首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用nltk.corpus从列表中删除停止词

用nltk.corpus从列表中删除停止词
EN

Stack Overflow用户
提问于 2017-03-31 09:25:39
回答 3查看 4.4K关注 0票数 0

我有一个列表,其中列出了所有单独的评论词,如下所示:

代码语言:javascript
复制
texts = [['fine','for','a','night'],['it','was','good']]

我想要删除所有的停止词,使用nltk.corpus包,并将所有的单词没有停止词返回到列表中。最终的结果应该是一个列表,由一个没有停止的单词组成的列表。这是我试过的

代码语言:javascript
复制
import nltk
nltk.download() # to download stopwords corpus
from nltk.corpus import stopwords
stopwords=stopwords.words('english')
words_reviews=[]

for review in texts:
    wr=[]
    for word in review:
        if word not in stopwords:
            wr.append(word)
        words_reviews.append(wr)

这段代码确实有效,但现在我得到了错误: AttributeError:'list‘object没有属性’word‘,指的是停止词。我确保我安装了所有的软件包。有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-31 13:55:53

问题是您在代码中重新定义了stopwords

代码语言:javascript
复制
from nltk.corpus import stopwords
stopwords=stopwords.words('english')

在第一行之后,stopwords是一个具有words()方法的语料库阅读器。在第二行之后,是一个列表。照此进行。

实际上,在列表中查找内容非常慢,所以如果您使用以下内容,您将获得更好的性能:

代码语言:javascript
复制
stopwords = set(stopwords.words('english'))
票数 4
EN

Stack Overflow用户

发布于 2020-05-27 17:35:57

而不是

[word for word in text_tokens if not word in stopwords.words()]

使用

代码语言:javascript
复制
[word for word in text_tokens if not word in all_stopwords]

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 09:37:00

我拆掉了那套,成功了,也许你也可以尝试同样的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43137125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档