Python 查找大量字符串的正则表达式模式

标签 python regex machine-learning

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

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

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']

最佳答案

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

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

关于Python 查找大量字符串的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345939/

相关文章:

javascript - 运行正则表达式替换,同时忽略(但保留)某个字符

javascript - 使用西里尔字母的正则表达式

python - Blender 和 Tensorflow 之间的通信

machine-learning - 如何利用 KL 散度进行聚类?

matlab - 如何使用 MATLAB 从 WEKA 中检索类值

python - 在python中用通配符分隔字符串

python - jupyter 笔记本中的 Ipython 错误,没有堆栈跟踪

python - 如何检查显示= :0 exist from python?

python - 如何更改对象类和关联函数

regex - 新函数中的无效字符范围错误