Python 3 - 句子的字符串距离 - 执行时间改进

时间:2016-11-15 14:57:08

标签: python string python-3.x time-complexity

我正在编写一个函数来确定"相似性"两句话之间。我首先简单地在difflib中使用python的SequenceMatcher,但是我在单词" swapped"的句子中得到的结果很差。

例如:

  • 球被卡尔
  • 击中
  • 卡尔击球

所以我编写以下函数来解决这个问题:

def similarity(a, b):
    a = a.lower()
    b = b.lower()

    a_tokens = a.split(" ")
    a_permutations = list(" ".join(word) for word in itertools.permutations(a_tokens))


    result = 0
    for a_permutation in a_permutations:
            similarity = SequenceMatcher(lambda w: is_stop_word(w), a_permutation, b).ratio()
            if similarity > result:
                result = similarity
    return result

该功能运行良好,效果更好但我担心大输入可能需要很长时间。关于如何改进它的任何建议?

0 个答案:

没有答案