edit_distance 'findall' 在 pandas

edit_distance with 'findall' in pandas

我有一个标记列表,需要在文本中找到它们。我正在使用 pandas 来存储我的文本。但是,我注意到有时我正在寻找的标记拼写错误,因此我正在考虑添加 Levenshtein 距离来挑选那些拼写错误的标记。目前,我实现了一个非常简单的方法:

df_texts['Text'].str.findall('|'.join(list_of_tokens))

完美的发现。我的问题 是如何添加 edit_distance 来说明拼写错误的标记? NLTK 软件包提供了一个很好的计算编辑距离的函数:

from nltk.metrics import edit_distance

>> edit_distance('trazodone', 'trazadon')
>> 2

在上面的示例中,trazodone 是正确的标记,而 trazadon 拼写错误,应从我的文本中检索。

理论上,我可以检查我的文本中的每个单词并测量编辑距离来决定它们是否相似,但效率很低。任何 pythonian 想法?

我会首先使用 "spell check" 函数来获取语料库中所有拼写错误的单词的列表。这将大量减少数据集。然后,您可以使用 edit_distance 对所有长度足够相似的搜索标记(例如,在相同长度的一两个字符内)强制拼写错误的单词。

您可以预先计算由长度键控的搜索标记的字典,因此当您发现像 "portible" 这样的拼写错误的单词时,您可以检查它与具有 7、8、或 9 个字符。