我试图从特定的词列中找出词频。
我想从字典中删除停用词。
这是代码:
代码
import unicodecsv as csv
import nltk
import pandas as pd
import chardet
from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize
with open('data.csv','rb') as f:
result = chardet.detect(f.read())
file_band = file[file['article'].str.contains("first time")]
file.loc[:,'extracted'] = file_band['article']
top_N = 200
a = file_band['extracted'].str.lower().replace(r'\|', ' ').str.cat(sep=' ')
words = nltk.tokenize.word_tokenize(a)
word_dist = nltk.FreqDist(words)
print (word_dist)
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(word_dist)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
filtered_sentence = []
for w in word_tokens:
if w not in stop_words:
filtered_sentence.append(w)
print(word_tokens)
print(filtered_sentence)
错误
问题错误是:
() 27 #filter words 28 stop_words = set(stopwords.words(‘english’)) —> 29 word_tokens = word_tokenize(word_dist) 30 31 filtered_sentence = [w for w in word_tokens NameError Traceback(最近调用最后一次)如果不是停用词中的 w]
NameError:未定义名称“word_tokenize”
原文由 Cat.J 发布,翻译遵循 CC BY-SA 4.0 许可协议
错误告诉您的是,您正在调用函数
word_tokenize()
,而您的代码中没有它。通常,您会像这样定义一个函数:
然后你可以稍后调用它:
在您的情况下,您似乎正在尝试使用属于 nltk.tokenize 模块的函数。但是,您只导入了该模块的一部分 -
sent_tokenize
(顺便说一句,你似乎没有使用)所以也许你需要导入
word_tokenize
代替?或者,如果您稍后要使用
sent_tokenize
?