导入错误:无法导入名称 PunktWordTokenizer

Has*_*ash 6 python nltk importerror

我试图使用 PunktWordTokenizer,但发生了如下错误。

from nltk.tokenize.punkt import PunktWordTokenizer
Run Code Online (Sandbox Code Playgroud)

这给出了以下错误消息。

Traceback (most recent call last): File "file", line 5, in <module>
from nltk.tokenize.punkt import PunktWordTokenizer ImportError: cannot import name PunktWordTokenizer
Run Code Online (Sandbox Code Playgroud)

我已经检查过 nltk 是否已安装,并且 PunkWordTokenzer 也已使用 nltk.download() 安装。需要一些帮助。

Viv*_*vek 5

PunktWordTokenizer 以前向用户公开,但不再公开。您可以使用 WordPunctTokenizer。

from nltk.tokenize import WordPunctTokenizer
WordPunctTokenizer().tokenize(“text to tokenize”)
Run Code Online (Sandbox Code Playgroud)

区别在于:

PunktWordTokenizer 在标点符号上拆分,但与单词保持一致。WordPunctTokenizer 将所有标点符号拆分为单独的标记。

例如,给定输入:这是一个测试

PunktWordTokenizer: [‘This’, “‘s”, ‘a’, ‘test’]
WordPunctTokenizer: [‘This’, “‘”, ‘s’, ‘a’, ‘test’]
Run Code Online (Sandbox Code Playgroud)


Shu*_*m R 2

3.0.2 中似乎存在与 PunktWordTokenizer 相关的回归。该问题在 3.0.1 中不存在,回滚到该版本或更早版本修复了该问题。

>>> import nltk
>>> nltk.__version__
'3.0.2'
>>> from nltk.tokenize import PunktWordTokenizer
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name PunktWordTokenizer
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,请尝试pip install -U nltk升级您的 NLTK 版本。

  • 我的`nltk`版本是3.4,我仍然无法导入`PunktWordTokenizer` (2认同)