gpt4 book ai didi

python - 古腾堡项目 Python 问题?

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:26 24 4
gpt4 key购买 nike

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

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

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

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

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

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

  6. 重复这个过程。请注意,我必须在第二句中获得最长的单词并继续这样等等-

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

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

import nltk

from nltk.corpus import gutenberg

gutenberg.sents('shakespeare-macbeth.txt')

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

[['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William', 'Shakespeare', '1603', ']'], 
['Actus', 'Primus', '.'], .......]

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

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

最佳答案

给定一个单词列表 L 和一个目标单词 t

any(t.lower()==w.lower() for w in L)

以不区分大小写的方式告诉您 L 是否有单词 t。这样做当然更快

lt = t.lower()
any(lt==w.lower() for w in L)

由于 Python 不会将常量计算“提升”到循环之外,除非您自己提升它,否则它将重复执行。

给定一个列表列表lol,包含t的最长子列表可以通过以下方式找到

longest = max((L for L in lol if any(lt==w.lower() for w in L)), key=len)

如果多个子列表包含 t 并且具有相同的最大长度,这将给您第一个,碰巧。

关于python - 古腾堡项目 Python 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com