有没有一种简单的方法可以从 python 中的无空格句子生成可能的单词列表?

2024-02-16

我有一些文字:

 s="Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:"

我想将其解析为单独的单词。我很快地研究了附魔和nltk,但没有看到任何看起来立即有用的东西。如果我有时间在这方面投入,我会考虑编写一个动态程序,用 enchant 来检查单词是否是英语。我本以为可以在网上做一些事情,我错了吗?


使用 trie 的贪心方法

尝试使用这个生物蟒蛇 https://github.com/biopython/biopython (pip install biopython):

from Bio import trie
import string


def get_trie(dictfile='/usr/share/dict/american-english'):
    tr = trie.trie()
    with open(dictfile) as f:
        for line in f:
            word = line.rstrip()
            try:
                word = word.encode(encoding='ascii', errors='ignore')
                tr[word] = len(word)
                assert tr.has_key(word), "Missing %s" % word
            except UnicodeDecodeError:
                pass
    return tr


def get_trie_word(tr, s):
    for end in reversed(range(len(s))):
        word = s[:end + 1]
        if tr.has_key(word): 
            return word, s[end + 1: ]
    return None, s

def main(s):
    tr = get_trie()
    while s:
        word, s = get_trie_word(tr, s)
        print word

if __name__ == '__main__':
    s = "Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:"
    s = s.strip(string.punctuation)
    s = s.replace(" ", '')
    s = s.lower()
    main(s)

Results

>>> if __name__ == '__main__':
...     s = "Imageclassificationmethodscan beroughlydividedinto two broad families of approaches:"
...     s = s.strip(string.punctuation)
...     s = s.replace(" ", '')
...     s = s.lower()
...     main(s)
... 
image
classification
methods
can
be
roughly
divided
into
two
broad
families
of
approaches

Caveats

英语中有一些退化的情况,这不起作用。您需要使用回溯来处理这些问题,但这应该可以帮助您开始。

强制性测试

>>> main("expertsexchange")
experts
exchange
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有一种简单的方法可以从 python 中的无空格句子生成可能的单词列表? 的相关文章

随机推荐

  • DateTimePicker:选择日期和时间

    是否可以使用 DateTimePicker Winforms 选择日期和时间 在下拉列表中 如何更改所选值的自定义显示 另外 是否可以让用户手动输入日期 时间 将格式设置为自定义 然后指定格式 dateTimePicker1 Format
  • 在类中使用#pragma pack

    我们可以在上课前使用 pragma pack 吗 pragma 这里的意义是什么 我知道它用于向编译器提供有关实现的信息 但是如果我们将它与类一起使用怎么办 它有exact对类的影响与对结构的影响相同 影响数据成员的对齐 实际上在课堂上使用
  • 在另一个 .cs 文件类中使用一个 .cs 文件类中的方法

    我有 2 个 cs 文件 每个文件中都有一个类 如何在 Form2 cs 内的另一个类中调用 Form1 cs 中的类中的方法 看起来像这样 Form1 cs public partial class Class1 ClassContain
  • 如何使用相同的代码将 unicode 文本写入 python 2 和 3 中的文件?

    我正在尝试编写一个可以通过 python 2 和 3 运行的程序 它从网站读取字符并写入文件 我已经导入了unicode literals来自 未来 直接尝试编写一个如下所示的字符串 txt u his u2026 n 将导致 Unicod
  • 适用于 Web 应用程序的 3D 散点图

    我正在寻找用于 Web 应用程序的散点图 3D 组件 现在我正在使用数学图 http jmathtools berlios de doku php 在 Java Applet 内 生成如下内容 替代文本 http jmathtools be
  • 由 Array.prototype.fill() 填充的数组的奇怪行为

    我遇到了一些我不明白的数组 事实上 我创建了一个数组 并用空子数组填充以获得二维矩阵 但是当我操作数组时 它的行为并不像我预期的那样 var arr new Array 5 arr fill arr 2 push third rank it
  • Pandas Dataframe 按列排序[重复]

    这个问题在这里已经有答案了 我有一个 Python Pandas 数据框 df 有 2 列 我想按第二列对 df 进行排序 Kappa prod Angle 0 0 004511 5 457840 1 0 003977 5 312861 2
  • DockPanel.Dock="Right" 不适用于最大化窗口上的单个控件?

    我正在使用 DockPanel Dock 将控件停靠在特定位置 即左 右 问题是我的控件没有根据 DockPanel Dock 位置停靠 下面是单个控件的代码DockPanel Dock Right
  • 为什么需要 PrintWriter?

    我真的很困惑各种 io 类的用途 例如 如果我们有 BufferedWriter 为什么我们需要 PrintWriter BufferedReader reader new BufferedReader new FileReader fil
  • array_agg() 的替代品?

    有没有 PostgreSQL 的替代品array agg 函数 以便它不会返回以下格式的值 x y z 我可以让它返回吗 x y z In PostgreSQL 9 0或稍后使用string agg val https www postgr
  • wglShareLists 失败并出现错误 6:ERROR_INVALID_HANDLE 句柄无效

    我尝试在两个类之间共享 HPBUFFERARB TGLForm 和 TGLForm2 我尝试过 FBO 但有一个旧的 Borland Builder 6 版本 我无法使用 FBO 进行管理 我的目标是在两个 openGL 窗口中显示相同的缓
  • CSS 浮动页脚

    我想制作一个保留在可视窗口底部的页脚 除非当您调整窗口大小时它会与内容相抵触 我试过 底部 0 位置 绝对 但是当窗口较小时 页脚会妨碍 我相信这会做你想要的 CSS 布局 100 高度 包含页眉和页脚 http www xs4all nl
  • 按组顺序填充 NA 值

    我正在尝试填充数据集中的一些值 我的数据的简化版本如下 gt example df Date GROUP value 157 2018 01 31 10180 3 464 158 2018 02 28 10180 3 413 159 201
  • 将 Javascript 应用程序转换为 Windows 应用程序

    除了Adobe Air还有其他解决方案吗 我听说 V8 有点东西 只是现在没有时间 用另一种语言编写整个应用程序 然后编写 2 倍以上的代码 也许你可以使用jsc 从命令行编译 JScript 代码 http msdn microsoft
  • 如何在 Azure 中允许 URL 编码路径段

    我有一个在 Azure 中运行的 ASP NET 6 MVC 应用程序 我有一个控制器 其动作如下 HttpDelete Route image url public async Task
  • 使用柏林噪声来创造闪电?

    实际上 我有几个与主题标题中给出的主题相关的问题 我已经在我的应用程序中使用 Perlin 函数创建闪电 但我对我的实现并不完全满意 以下问题基于初始和改进的 Perlin 噪声实现 为了简化问题 我们假设我通过使用 1D Perlin 函
  • 我可以有两个 Fancybox 2.0 实例吗?

    我在我的网站上安装了 Fancybox 2 0 稍加修改使其看起来像 Facebook 图像预览框 我想要有 Fancybox 的第二个 实例 但它的定位不同 我的图像预览 Fancybox 当前实例 应距顶部 20 像素 目前 但我的共享
  • 使用 jquery 根据 4 个输入的总和设置数字输入最大值

    我有 4 个输入字段 我需要所有字段的总数不超过 100 我想设置要更改的字段的最大值 我一直在尝试调整 keyup 上的值 然后将其他字段的总和与当前字段的总和相区别并设置最大值 似乎工作了一段时间然后就停止了 JSfiddle 示例 h
  • Docker 添加当前目录中的每个文件

    我有一个简单的 Web 应用程序 我想将其放置在 docker 容器中 角度应用程序存在于frontend 文件夹 该文件夹位于application folder 当 Dockerfile 位于application 文件夹 内容如下 F
  • 有没有一种简单的方法可以从 python 中的无空格句子生成可能的单词列表?

    我有一些文字 s Imageclassificationmethodscan beroughlydividedinto two broad families of approaches 我想将其解析为单独的单词 我很快地研究了附魔和nltk