Nltk: text.generate() 不存在,但仍被引用

创建于 2014-08-20  ·  27评论  ·  资料来源: nltk/nltk

我一直在尝试遵循自然语言处理这本书,但是在第一章中我遇到了一些问题。 在importnltk.book获取所有内容之后,我的第一个想法是尝试text3.generate() ,如其中一个示例所示。 当然,我得到了一个可爱的AttributeError ,因为 Text 类在我安装的 NLTK 中显然没有该方法。
此外,即使运行nltk.text.demo()也会尝试生成文本 - 并返回相同的错误。
当然,我找不到generate()方法的任何文档,所以我假设它已被删除; 如果是这种情况,您应该从nltk.text.demo()和教科书中删除对它的引用。

我正在使用带有 NLTK 3.0.0b1 的 Python 2.7.8(在撰写本文时,这是通过 PyPI 的 Windows 安装程序包提供的版本)。 text3.generate()示例在教科书的旧版本和当前版本中都有。

language-model

最有用的评论

这在本书的第一章中仍然提到: http ://www.nltk.org/book/ch01.html

这没什么大不了的,但我可能通常会花几分钟在谷歌上搜索这个问题。 那些几分钟的时间,但是很多人都在努力阅读这本书...... :)

所有27条评论

对困惑感到抱歉。 NLTK 的语言建模存在问题
类,因此我们将其删除,直到问题得到解决。 这打破了
文本生成功能。 我已经更新了这本书的在线版本
对此进行说明,并更新了文本演示(将包含在
很快发布 3.0.0b2)。

-史蒂文·伯德

2014 年 8 月 20 日 17:12,Kasran [email protected]写道:

我一直在尝试跟随自然语言处理
书,但在第一章我遇到了一些问题。 后
从 nltk.book 导入所有内容,我的第一个想法是尝试
text3.generate() 如示例之一所示。 当然,我
有一个可爱的 AttributeError 因为 Text 类显然没有
在我安装的 NLTK 中使用该方法。
此外,即使运行 nltk.text.demo() 也会尝试生成文本 -
并返回相同的错误。
当然,我找不到 generate() 方法的任何文档,
所以我假设它已被删除; 如果是这种情况,您应该删除
从 nltk.text.demo() 和教科书中引用它。

我正在使用带有 NLTK 3.0.0b1 的 Python 2.7.8。 text3.generate() 示例是
在教科书的旧版本和当前版本中。

直接回复此邮件或在 GitHub 上查看
https://github.com/nltk/nltk/issues/736。

好的! 完全可以理解。 我想我将不得不使用旧的粗略方式应用马尔可夫链编写我自己的聊天机器人,直到它得到修复。

谢谢你的及时回复。

我也遇到了同样的问题,这让我有点困惑。 感谢谷歌搜索带我去的这个线程。

嗯。 这有帮助吗(https://github.com/alvations/nltk/blob/develop/nltk/translate/decoder.py#L33)? 解码时语言模型似乎工作正常。 我将很快为translate库推送更新且正确记录的代码。

抱歉,我背靠背参加了黑客马拉松、研讨会和会议。 我希望能在本周末之前推动它。

啊,但是我的模型加载了一个预先确定的模型,而不是从头开始构建模型。 有人在构建语言模型模块吗?

我发现当前代码存在两个问题(除了它不起作用的事实),用户体验方面:

  1. 在书中,该方法不带任何参数(至少当它第一次出现在书中时),但当前签名需要一个words参数。 因此,当您阅读本书时,您会得到以下内容:

    >>> text1.generate()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: generate() missing 1 required positional argument: 'words'
    

    这不是很用户友好。 我建议在签名中给单词一个默认值(例如words=None )以避免这个问题。

  2. 按照书籍说明使用常规 Python 控制台,我看不到代码记录的DeprecationWarning 。 这是我从一开始就做的:

    [adrian<strong i="17">@chakra</strong> temporal]$ mkdir nltk
    [adrian<strong i="18">@chakra</strong> temporal]$ cd nltk/
    [adrian<strong i="19">@chakra</strong> nltk]$ python3 -m venv venv
    [adrian<strong i="20">@chakra</strong> nltk]$ . venv/bin/activate
    (venv) [adrian<strong i="21">@chakra</strong> nltk]$ pip install nltk
    Collecting nltk
    Using cached nltk-3.2.2.tar.gz
    Collecting six (from nltk)
    Using cached six-1.10.0-py2.py3-none-any.whl
    Installing collected packages: six, nltk
    Running setup.py install for nltk ... done
    Successfully installed nltk-3.2.2 six-1.10.0
    You are using pip version 8.1.1, however version 9.0.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    (venv) [adrian<strong i="22">@chakra</strong> nltk]$ python
    Python 3.5.2 (default, Jan 18 2017, 23:05:33) 
    [GCC 5.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import nltk
    >>> # Download the book resources, which requires GUI interaction.
    ... 
    >>> nltk.download()
    showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
    True
    >>> from nltk.book import *
    *** Introductory Examples for the NLTK Book ***
    Loading text1, ..., text9 and sent1, ..., sent9
    Type the name of the text or sentence to view it.
    Type: 'texts()' or 'sents()' to list the materials.
    text1: Moby Dick by Herman Melville 1851
    text2: Sense and Sensibility by Jane Austen 1811
    text3: The Book of Genesis
    text4: Inaugural Address Corpus
    text5: Chat Corpus
    text6: Monty Python and the Holy Grail
    text7: Wall Street Journal
    text8: Personals Corpus
    text9: The Man Who Was Thursday by G . K . Chesterton 1908
    >>> text1.generate(words=None)
    >>>
    

    由于generate()不仅像“它将被删除”那样被简单地弃用,而且像“它不再起作用”那样被弃用,我建议提出NotImplementedError而不是记录警告。 这样做既会使现有代码失败(这是我作为开发人员希望它做的事情,而不是在没有实际做它曾经做的事情的情况下显然成功)并显示在书籍读者的控制台中。

如果您同意这些更改但没有时间或动力来实施它们,请告诉我,我将发送合并请求。

我还想知道我们是否可以从书中删除对generate()的引用。 至少在第 1 章中,本章的其他部分似乎不需要它们。

在我看来,我完全同意你们删除(生成()引用)。

这在本书的第一章中仍然提到: http ://www.nltk.org/book/ch01.html

这没什么大不了的,但我可能通常会花几分钟在谷歌上搜索这个问题。 那些几分钟的时间,但是很多人都在努力阅读这本书...... :)

Bump,generate() 引用仍然存在。

它现在还在那里。

它现在还在那里。

它现在还在那里(在 NLTK 书的 Safari 在线版本上)

哦,我看到在示例之后插入了一条注释,即 generate() 已从 NLTK 3 中删除——抱歉

它仍然抛出错误

generate方法应该从 NLTK 3.4 开始出现。 查看nltk.lm包!

您好,目前有哪些可能的替代自动生成文本的方法来替代此功能? 我正在阅读本书第 1 章生成的文本,我也想产生奇妙的句子,例如“他兄弟的开头是一个毛茸茸的人”或这个基本问题:“你的工资应该是多少?” .

抱歉@eric-burel 我不太明白你的评论。 我会试着用我的话来表达它,你告诉我这是否正确,好吗?

除了训练语言模型并使用其generate方法之外,您还想要其他方式来生成文本吗?

嗨,对不起,我不清楚,在到达文本生成部分时,我只是在阅读 NLP with Python 这本书时笑得很开心,因为句子非常逼真,但仍然很奇怪,而且我觉得这个主题总体上很有趣。
我只是想知道当前推荐的自动生成文本的替代方法是什么,以替代generate() 。 我应该更新 smth 还是加载另一个库?

好吧,从 NLTK 3.4 版开始,您实际上可以访问generate() 。 查看lm模块的文档:

>>> from nltk import lm
>>> help(lm)

如果您愿意,也可以构建自己的生成: http: //www.cyber-omelette.com/2017/01/markov.html ¶

我正在尝试遵循 O'Reilly Natural Language Processing with Python 一书中的示例,这就是我进行此讨论的方式。 我认为人们在谈论 nltk.text.generate 函数而不是 nltk.parse.generate 函数,这似乎引起了一些混乱。

我输入 text1.generate(),我应该得到一个 Moby Dick 风格的短语列表。 相反,我得到的只是错误消息TypeError: generate() missing 1 required positional argument: 'words'

这似乎来自定义为def generate(self, words)的 site-packages/nltk/text.py ,它的唯一目的似乎是打印生成器功能不再可用的警告,但它无法做到即使您确实为 words 参数传递了一个值。

我正在使用 nltk 版本 3.5.2。

这可以从generate was added开始关闭。

谢谢@Copper-Head

是否再次删除了生成? 我正在关注这本书,并得到了错误generate() missing 1 required positional argument: 'words' 。 请问有什么帮助吗?

这个功能仍然有问题:/

@Tserewara @AlbertSawZ您使用的是哪个版本的 NLTK? 您能否发布一个我们可以尝试运行以重现此问题的最小示例?

根据您迄今为止发送的信息来帮助您有点困难:(

我也在关注这本书,但问题仍然存在
此生成功能的任何替代方式

TypeError                                 Traceback (most recent call last)
<ipython-input-36-463eb7c367ab> in <module>()
----> 1 text3.generate()

TypeError: generate() missing 1 required positional argument: 'words'
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

stevenbird picture stevenbird  ·  4评论

alvations picture alvations  ·  4评论

BLKSerene picture BLKSerene  ·  4评论

stevenbird picture stevenbird  ·  3评论

jeryini picture jeryini  ·  5评论