使用 python3 和 nltk 从模块调用函数的问题

problems with invokings functions from module, using python3 and nltk

摘自本书:使用 Python 进行自然语言处理,pg。 60. 我创建了一个带有一些功能的模块(在 EMACS 中),但是当我 运行 它们和 Python3 它们给我带来了问题。


 Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>import nltk
>>>import sys
>>> sys.path.append("/home/giovanni/Scrivania/Giovanni/programmi")
>>> from esempio import unusual_words
>>> unusual_words(nltk.corpus.gutenberg.words("austen-sense.txt"))
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/home/giovanni/Scrivania/Giovanni/programmi/esempio.py", line 14, in unusual_words
    english_vocab = set((w.lower()) for w in nltk.corpus.words.words())
    NameError: name 'nltk' is not defined

为什么说 nltk 未定义?

将以下语句添加到 esempio.py 的顶部。

import nltk

完整文件:

import nltk


def unusual_words(text):
    text_vocab = set(w.lower() for w in text if w.isalpha())
    english_vocab = set((w.lower()) for w in nltk.corpus.words.words())
    unusual = text_vocab.difference(english_vocab)
    return sorted(unusual)

然后在 python 交互式 shell 中发出以下命令。我从你的问题中复制了它们。

import nltk
import sys
sys.path.append("/home/giovanni/Scrivania/Giovanni/programmi")
from esempio import unusual_words
unusual_words(nltk.corpus.gutenberg.words("austen-sense.txt"))

祝你好运!