首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么nltk word_tokenize在执行了nltk.download并且所有软件包都正确安装后仍然不能工作?

为什么nltk word_tokenize在执行了nltk.download并且所有软件包都正确安装后仍然不能工作?
EN

Stack Overflow用户
提问于 2020-04-05 18:32:17
回答 2查看 1.9K关注 0票数 2

我使用的是python 3.764位。nltk版本3.4.5。

当我尝试使用word_tokenize将nltk.book中的text6转换为令牌时,我得到了错误。

代码语言:javascript
运行
复制
import nltk
from nltk.tokenize import word_tokenize
from nltk.book import *
tokens=word_tokenize(text6)

代码在idle 3.7中完成

下面是我执行最后一条语句时的错误。

代码语言:javascript
运行
复制
    Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    tokens=word_tokenize(text6)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\__init__.py", line 144, in word_tokenize
    sentences = [text] if preserve_line else sent_tokenize(text, language)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\__init__.py", line 106, in sent_tokenize
    return tokenizer.tokenize(text)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1277, in tokenize
    return list(self.sentences_from_text(text, realign_boundaries))
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1331, in sentences_from_text
    return [text[s:e] for s, e in self.span_tokenize(text, realign_boundaries)]
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1331, in <listcomp>
    return [text[s:e] for s, e in self.span_tokenize(text, realign_boundaries)]
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1321, in span_tokenize
    for sl in slices:
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1362, in _realign_boundaries
    for sl1, sl2 in _pair_iter(slices):
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 318, in _pair_iter
    prev = next(it)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\nltk\tokenize\punkt.py", line 1335, in _slices_from_text
    for match in self._lang_vars.period_context_re().finditer(text):
TypeError: expected string or bytes-like object

请帮帮忙。提前谢谢。

在进行一些故障排除时,我创建了一个示例nltk.text.Text对象,并尝试使用nltk.word_tokenize对其进行标记化。尽管如此,我还是得到了相同的错误。请看下面的截图。

但是,当对字符串调用nltk.word_tokenize()时,它是有效的。

代码语言:javascript
运行
复制
>>> tt="Python is a programming language"
>>> tokens2=nltk.word_tokenize(tt) #Not throwing error
>>> type(tt)
<class 'str'>
>>> type(text6)
<class 'nltk.text.Text'>
>>> 
EN

回答 2

Stack Overflow用户

发布于 2021-10-06 16:03:23

检查nltk数据文件夹。以及它所期望的位置。

票数 0
EN

Stack Overflow用户

发布于 2020-07-07 11:30:02

尝试使用:

nltk.download('punkt')

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61041217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档