问题标签 [nltk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
60881 浏览

python - 如何从代码配置 nltk 数据目录?

如何从代码配置 nltk 数据目录?

0 投票
2 回答
953 浏览

python - 古腾堡项目 Python 问题?

我正在尝试通过 python 的正则表达式和 NLTK 处理各种文本-位于http://www.nltk.org/book-。我正在尝试创建一个随机文本生成器,但我遇到了一个问题。首先,这是我的算法:

  1. 输入一个句子作为输入-这称为触发字符串-

  2. 获取触发字符串中最长的单词

  3. 在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 不管大写小写 -

  4. 返回包含我在步骤 3 中谈到的单词的最长句子

  5. 将步骤 1 和步骤 4 中的句子附加在一起

  6. 重复该过程。请注意,我必须在第二句中找到最长的单词并继续这样,依此类推-

到目前为止,我已经能够对前两个句子执行此操作,但我无法执行不区分大小写的搜索。Project Gutenberg 的整个句子数据库可通过gutenberg.sents()函数获得,但正则表达式 - 不区分大小写的搜索实际上是不可能的,因为gutenberg.sents()书籍中的句子输出如下 - 在列表格式列表中 - :

例子:莎士比亚的麦克白的所有句子都是通过打字来调用的

进入 python shell 命令行,输出为:

与[威廉莎士比亚的麦克白悲剧,1603]和Actus Primus。是前两句。

无论它是大写/小写,我如何才能找到我正在寻找的单词?我非常需要帮助,因为过去两天我一直在修补这个问题,而且它开始让我感到紧张。非常感谢。

0 投票
1 回答
553 浏览

python - 我有多种语言的文本文件。如何选择性地删除 NLTK 中的一种语言?

也许这是不可能的,我应该放弃所有希望。或者也许有一种我没有想到的非常聪明的方法。

这是我所拥有的两个示例:

يَبِسَ - يَيْبَسُ (yabisa, yaybasu)[ybs][ي-ب-س] (变得干燥、僵硬、僵硬)20:77 yabasan = 干燥。يَسَّرَ - يُيَسِّرُ (yassara, yuyassiru)[ysr][ي-س-ر] (为方便起见) 92:7 nuyassiruhuu = 我们会减轻他的负担。

祖胡尔夫!祖胡尔夫!帮助!帮助!
Sonst bin ich verloren!否则我迷路了!祖胡尔夫!祖胡尔夫!帮助!帮助!Sonst bin ich verloren!否则我迷路了!Der listigen Schlange zum Opfer erkoren,被选为对狡猾的蛇 Barmherzigige Götter 的供品!仁慈的众神!Schon nahet sie sich,已经越来越近了,Schon nahet sie sich,已经越来越近了,

...为了进一步处理这些文本行,通过并删除一种语言真的很烦人。

我认为这可以在 NLTK 中完成的一种方法是将文本拆分为标记,通过某种方式了解基于小型语料库的每个标记的出处,然后要求 NLTK 仅“重构”我选择的标记。这只是一个疯狂的幻想吗?

0 投票
4 回答
455 浏览

python - Python 代码流无法按预期工作?

我正在尝试通过 python 的正则表达式和 NLTK 处理各种文本-位于http://www.nltk.org/book-。我正在尝试创建一个随机文本生成器,但遇到了一个小问题。首先,这是我的代码流程:

  1. 输入一个句子作为输入-这称为触发字符串,分配给一个变量-

  2. 获取触发字符串中最长的单词

  3. 在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 不管大写小写 -

  4. 返回包含我在步骤 3 中谈到的单词的最长句子

  5. 将步骤 1 和步骤 4 中的句子附加在一起

  6. 将步骤 4 中的句子指定为新的“触发”句子并重复该过程。请注意,我必须在第二句中找到最长的单词并继续这样,依此类推-

到目前为止,我只能这样做一次。当我试图让这个继续下去时,程序只继续打印我的搜索产生的第一句话。它实际上应该在这个新句子中寻找最长的单词并继续应用我上面描述的代码流。

下面是我的代码以及示例输入/输出:

样本输入

“密码之王”

样本输出

“代码的领主挪威本人,数字可怕,在最不忠的叛徒考多领主的协助下,开始了一场小冲突,直到贝罗纳的新郎,在校对中,用自我比较来对抗他,点对点,叛逆的Arme'gainst Arme,抑制了他的狂妄自大的精神:最后,胜利落在了vs上

现在这实际上应该采用以“挪威自己......”开头的句子并寻找其中最长的单词并执行上述步骤等等,但事实并非如此。有什么建议么?谢谢。

0 投票
1 回答
578 浏览

python - 使用 NLTK 将早期现代英语转换为 20 世纪的拼写

我有一个字符串列表,这些字符串都是以“th”结尾的早期现代英语单词。这些包括hath、annepteth、requireeth 等——它们都变位为第三人称单数。

作为一个更大项目的一部分(使用我的计算机将 Gargantua 和 Pantagruel 的 Gutenberg etext 转换为更像 20 世纪的英语,以便我能够更轻松地阅读它)我想删除最后两个或三个所有这些单词中的字符并将它们替换为“s”,然后对仍然没有现代化的单词使用稍微修改的函数,两者都包括在下面。

我的主要问题是我从来没有设法在 Python 中正确输入。在这一点上,我发现这部分语言真的很混乱。

这是删除 th 的函数:

这是删除无关 e 的函数:

因此,“abateth”和“accuseth”这两个词将通过 ethrema,但不通过 ethremb(ethrema),而“abhorreth”一词则需要通过这两个词。

如果有人能想到一种更有效的方法来做到这一点,我会全力以赴。

这是我非常业余地尝试在需要现代化的单词列表中使用这些函数的结果:

所以,是的,这确实是打字的问题。这些是我用 Python 编写的第一个函数,我不知道如何将它们应用于实际对象。

0 投票
2 回答
1979 浏览

python - 如何让这个随机文本生成器在 Python 中更高效?

我正在开发一个随机文本生成器——不使用马尔可夫链——目前它没有太多问题。首先,这是我的代码流程:

  1. 输入一个句子作为输入-这称为触发字符串,分配给一个变量-

  2. 获取触发字符串中最长的单词

  3. 在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 不管大写小写 -

  4. 返回包含我在步骤 3 中谈到的单词的最长句子

  5. 将步骤 1 和步骤 4 中的句子附加在一起

  6. 将步骤 4 中的句子指定为新的“触发”句子并重复该过程。请注意,我必须在第二句中找到最长的单词并继续这样,依此类推-

这是我的代码:

我担心的是,循环主要到达了一遍又一遍地打印同一个句子的地步。因为它是最长的句子有最长的单词。为了反击一遍又一遍地重复同一句话,我想到了以下几点:

*如果当前句子中最长的单词与上一个句子中的相同,只需从当前句子中删除这个最长的单词并寻找下一个最长的单词。

我为此尝试了一些实现,但未能应用上述解决方案,因为它涉及列表和列表列表-由于古腾堡模块中的单词和句子-。关于如何找到第二长的单词有什么建议吗?我似乎无法通过解析简单的字符串输入来做到这一点,因为 NLTK 的 Gutenberg 模块的 .sents() 和 .words() 函数分别产生了 list 和 list 的列表。提前致谢。

0 投票
1 回答
493 浏览

python - 我怎样才能进一步随机化这个文本生成器?

我正在研究一个随机文本生成器 - 不使用马尔可夫链 - 目前它没有太多问题 - 实际上按照我的标准生成了大量随机句子,但我想让它更加准确以防止尽可能多的句子重复尽可能-。首先,这是我的代码流程:

  1. 输入一个句子作为输入-这称为触发字符串,分配给一个变量-

  2. 获取触发字符串中最长的单词

  3. 在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 不管大写小写 -

  4. 返回包含我在步骤 3 中谈到的单词的最长句子

  5. 将步骤 1 和步骤 4 中的句子附加在一起

  6. 将步骤 4 中的句子指定为新的“触发”句子并重复该过程。请注意,我必须在第二句中找到最长的单词并继续这样,依此类推-

这是我的代码:

根据我的代码,一旦我输入了一个触发语句,我应该得到另一个包含我输入的触发语句中最长单词的语句。然后这个新句子成为触发句子,并选择它的最长单词。这是有时会出现问题的地方。我观察到,尽管我放置了代码行——从第 47 行到最后——,该算法仍然可以在出现的句子中选择相同的最长单词,而不是寻找第二长的单词。

例如:

触发字符串 = “苏格兰是个好地方。”

句子 1 = -这是一个随机的句子,里面有苏格兰这个词-

现在,这就是我的代码中有时会出现问题的地方——不管它是出现在第 2 句还是 942 句还是无数个句子中,但我在 sent.2 中给出了它,例如,为了——

句子 2 = 另一个句子中包含单词 Scotland 但不是句子 1 中第二长的单词。根据我的代码,这句话应该是包含句子 1 中第二长单词的句子,而不是 Scotland!

我该如何解决这个问题?我正在尝试尽可能优化代码,欢迎提供任何帮助。

0 投票
3 回答
280 浏览

python - 在 awk 中可能更简单,但我怎么能在 Python 中这么说呢?

我有:

Rutsch 是为 rutterman 倾斜他的鱼子而设计的

这是来自 Finnegans Wake 的一句话。这本史诗般的谜语书充满了这样的主因,例如“脱掉那顶白帽子”和“小费”,所有这些都会根据你在书中所处的位置变异成听起来相似的词。我想要的只是一种找到这个特定主题的明显出现的方法,IE

[word1] 是为了 [word2] [word-part1] 他的 [word3]

0 投票
6 回答
17439 浏览

python - NLTK Python中的词义消歧

我是 NLTK Python 的新手,我正在寻找一些可以进行词义消歧的示例应用程序。我在搜索结果中有很多算法,但没有示例应用程序。我只是想传一句话,想通过参考wordnet库来了解每个单词的意思。谢谢

我在 PERL 中找到了一个类似的模块。http://marimba.d.umn.edu/allwords/allwords.html NLTK Python 中是否存在这样的模块?

0 投票
4 回答
2699 浏览

python - 创建一个 Python 函数来打开一个文本文件,读取它,标记它,最后从命令行或作为模块运行

我一直在尝试学习 Python 一段时间。一次偶然的机会,我通过指向此处的 Google 搜索链接偶然看到了官方教程的第 6 章 。当我从那个页面了解到函数是模块的核心,并且可以从命令行调用模块时,我全神贯注。这是我第一次尝试两者都做,openbook.py

我想要的是让这个函数可以作为模块 openbook 导入,以及让 openbook.py 从命令行获取一个文件并对它执行所有这些操作。

当我从命令行运行 openbook.py 时,会发生这种情况:

当我尝试将其用作模块时,会发生这种情况:

那么,我能做些什么来解决这个问题,并希望继续沿着漫长而曲折的道路走向启蒙呢?