不确定这是用于元还是堆栈,但我有一个非常大的字符串列表,并且希望找到它们之间的相似性,以便我可以提取最相似的组并将它们重写为正则表达式以节省空间。
现在我正在查看列表并慢慢地手动筛选。
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/