从带有列表的列表中删除带有 nltk.corpus 的停用词
Remove stopwords with nltk.corpus from list with lists
我有一个列表,其中包含评论的所有分隔词的列表,看起来像这样:
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 has no attribute 'words',指的是停用词。我确保安装了所有软件包。可能是什么问题?
问题是您在代码中重新定义了 stopwords
:
from nltk.corpus import stopwords
stopwords=stopwords.words('english')
第一行之后,stopwords
是语料库reader,方法是words()
。第二行之后,是一个列表。相应地进行。
实际上在列表中查找东西真的很慢,所以如果你使用这个你会得到更好的性能:
stopwords = set(stopwords.words('english'))
而不是
[word for word in text_tokens if not word in stopwords.words()]
使用
[word for word in text_tokens if not word in all_stopwords]
我有一个列表,其中包含评论的所有分隔词的列表,看起来像这样:
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 has no attribute 'words',指的是停用词。我确保安装了所有软件包。可能是什么问题?
问题是您在代码中重新定义了 stopwords
:
from nltk.corpus import stopwords
stopwords=stopwords.words('english')
第一行之后,stopwords
是语料库reader,方法是words()
。第二行之后,是一个列表。相应地进行。
实际上在列表中查找东西真的很慢,所以如果你使用这个你会得到更好的性能:
stopwords = set(stopwords.words('english'))
而不是
[word for word in text_tokens if not word in stopwords.words()]
使用
[word for word in text_tokens if not word in all_stopwords]