我有一个列表,其中列出了所有单独的评论词,如下所示:
texts = [['fine','for','a','night'],['it','was','good']]我想要删除所有的停止词,使用nltk.corpus包,并将所有的单词没有停止词返回到列表中。最终的结果应该是一个列表,由一个没有停止的单词组成的列表。这是我试过的
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‘,指的是停止词。我确保我安装了所有的软件包。有什么问题吗?
发布于 2017-03-31 13:55:53
问题是您在代码中重新定义了stopwords:
from nltk.corpus import stopwords
stopwords=stopwords.words('english')在第一行之后,stopwords是一个具有words()方法的语料库阅读器。在第二行之后,是一个列表。照此进行。
实际上,在列表中查找内容非常慢,所以如果您使用以下内容,您将获得更好的性能:
stopwords = set(stopwords.words('english'))发布于 2020-05-27 17:35:57
而不是
[word for word in text_tokens if not word in stopwords.words()]
使用
[word for word in text_tokens if not word in all_stopwords]

发布于 2022-06-20 09:37:00
我拆掉了那套,成功了,也许你也可以尝试同样的方法
https://stackoverflow.com/questions/43137125
复制相似问题