【问题标题】:Python finding regex patterns for a large list of stringsPython为大量字符串查找正则表达式模式
【发布时间】:2014-01-25 11:25:28
【问题描述】:

不确定这是针对元数据还是堆栈,但我有一个非常大的字符串列表,并且希望找到它们之间的相似性,以便我可以提取最相似的组并将它们重写为正则表达式以节省空间。

现在我正在查看列表并手动慢慢筛选。

在 python 中是否有一个函数可以在其中输入一个列表并按相似度对字符串进行分组?我有 scikits-learn,但如果已经有一个程序,我不想制作自己的程序。

在 NLTK 中会为此提供一些东西吗?

例如,对于一个打乱列表,我可以得到这样的东西作为回报或一个有组织的数据集

Cat
hat
bat
rat

snail
mail
fail
pail

rhino
dino

Milhouse

我会在哪里为他们编写正则表达式

patterns = ['^(c|h|b|r)at$', '^(sn|m|f|p)ail$', '^(rh|d)ino$', 'Milhouse']

【问题讨论】:

    标签: python regex machine-learning


    【解决方案1】:

    我不知道 NLTK 是否有这个,但这听起来像是 Burkhard-Keller 树的用途。我认为它们不在标准库中,但至少有一个可用的 Python 实现。

    如果你想坚持使用标准库,你可以尝试 difflib.get_close_matches(),但它可能会更慢。

    【讨论】:

    • 是的,我认为这就是我想要的。只是我可以返回一组单词,我可以在其中手动编写模式,以省去遍历大集合的麻烦。
    • 我找到了 BK 树的实现,但不了解结果code.activestate.com/recipes/572156-bk-tree
    猜你喜欢
    • 2021-09-15
    • 2016-05-16
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2015-11-28
    相关资源
    最近更新 更多