将单词添加到 nltk 停止列表

Posted

技术标签:

【中文标题】将单词添加到 nltk 停止列表【英文标题】:Adding words to nltk stoplist 【发布时间】:2011-07-27 13:41:59 【问题描述】:

我有一些代码可以从我的数据集中删除停用词,因为停用词列表似乎也没有删除我想要的大部分单词,我希望将单词添加到这个停用词列表中,以便在这种情况下,它将删除它们。 我用来删除停用词的代码是:

word_list2 = [w.strip() for w in word_list if w.strip() not in nltk.corpus.stopwords.words('english')]

我不确定添加单词的正确语法,而且似乎在任何地方都找不到正确的语法。任何帮助表示赞赏。谢谢。

【问题讨论】:

【参考方案1】:

您可以简单地使用 append 方法向其添加单词:

stopwords = nltk.corpus.stopwords.words('english')
stopwords.append('newWord')

或扩展以附加单词列表,正如查理在 cmets 上所建议的那样。

stopwords = nltk.corpus.stopwords.words('english')
newStopWords = ['stopWord1','stopWord2']
stopwords.extend(newStopWords)

【讨论】:

CustomListofWordstoExclude = ['cat','dog'] stopwords.extend(CustomListofWordstoExclude) 我使用了您的代码,但后来使用extend() 将我自己的列表添加到其中【参考方案2】:
import nltk
stopwords = nltk.corpus.stopwords.words('english')
new_words=('re','name', 'user', 'ct')
for i in new_words:
    stopwords.append(i)
print(stopwords)

【讨论】:

【参考方案3】:

我在我的 Ubuntu 机器上的做法是,我 ctrl + F 在 root 中输入“停用词”。它给了我一个文件夹。我走进了里面,里面有不同的文件。我打开了只有 128 个单词的“english”。加上我的话。已保存并完成。

【讨论】:

【参考方案4】:

英文停用词是 nltk/corpus/stopwords/english.txt 中的一个文件(我想它会在这里...我在这台机器上没有 nltk..最好的办法是在其中搜索 'english.txt nltk 回购)

您可以在此文件中添加新的停用词。

如果您的停用词列表增加到数百个,请尝试查看 bloom filters

【讨论】:

有什么好的英语停用词列表吗? nltk 似乎很差 @fabrizioM fs1.position2.com/bm/txt/stopwords.txt 这是我在上一家公司使用的列表.. @Rafi 这是一个比 NLTK 更好的列表!谢谢!【参考方案5】:

我总是在任何需要它的模块的顶部做stopset = set(nltk.corpus.stopwords.words('english'))。然后很容易向集合中添加更多单词,而且成员资格检查速度更快。

【讨论】:

【参考方案6】:

也在寻找解决方案。经过一些跟踪和错误后,我必须将单词添加到停止列表中。希望这会有所帮助。

def removeStopWords(str):
#select english stopwords
cachedStopWords = set(stopwords.words("english"))
#add custom words
cachedStopWords.update(('and','I','A','And','So','arnt','This','When','It','many','Many','so','cant','Yes','yes','No','no','These','these'))
#remove stop words
new_str = ' '.join([word for word in str.split() if word not in cachedStopWords]) 
return new_str

【讨论】:

【参考方案7】:

我使用此代码在 python 中将新的停用词添加到 nltk 停用词列表

from nltk.corpus import stopwords
#...#
stop_words = set(stopwords.words("english"))

#add words that aren't in the NLTK stopwords list
new_stopwords = ['apple','mango','banana']
new_stopwords_list = stop_words.union(new_stopwords)

print(new_stopwords_list)

【讨论】:

【参考方案8】:

我找到了(Python 3.7、Windows 10 上的 jupyter notebook、企业防火墙) 创建一个列表并使用 'append' 命令会导致整个停用词列表作为原始列表的一个元素附加。

这使得“停用词”成为列表列表。

Snijesh 的回答和 Jayantha 的回答一样有效。

【讨论】:

【参考方案9】:
 import nltk
 nltk.download('stopwords')
 from nltk.corpus import stopwords
 #add new words to the list
 new_stopwords = ["new", "custom", "words", "add","to","list"]
 stopwrd = nltk.corpus.stopwords.words('english')
 stopwrd.extend(new_stopwords)

【讨论】:

【参考方案10】:

STOP_WORDS.add(“Lol”) #根据需要将新的停用词添加到语料库中

【讨论】:

以上是关于将单词添加到 nltk 停止列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 NLTK 分词器去除标点符号?

从NLTK中的大型令牌中删除垃圾单词

使用 Kable 将简单的表格添加到单词列表

Python:将关键字保存在列表中并将另一个列表添加到其中的单个单词中[关闭]

从NLTK for Python中的同义词列表中提取单词

如果用户已经提供了对象,如何停止将用户提供的对象添加到数组列表中? [关闭]