python 字数统计频率中的“名称‘word_tokenize’未定义”

新手上路,请多包涵

我试图从特定的词列中找出词频。

我想从字典中删除停用词。

这是代码:

代码

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 许可协议

阅读 467
1 个回答

NameError:未定义名称“word_tokenize”

错误告诉您的是,您正在调用函数 word_tokenize() ,而您的代码中没有它。

通常,您会像这样定义一个函数:

 def my_function(my_input):
    words = *do_something_with* my_input
    return words

然后你可以稍后调用它:

 words = my_function(my_input)

在您的情况下,您似乎正在尝试使用属于 nltk.tokenize 模块的函数。但是,您只导入了该模块的一部分 - sent_tokenize (顺便说一句,你似乎没有使用)

 from nltk.tokenize import sent_tokenize

所以也许你需要导入 word_tokenize 代替?

 from nltk.tokenize import word_tokenize

或者,如果您稍后要使用 sent_tokenize

 from nltk.tokenize import sent_tokenize, word_tokenize

原文由 ron_g 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题