【问题标题】:Replacing incorrect names with the right names using python similarity match使用 python 相似性匹配将不正确的名称替换为正确的名称
【发布时间】:2022-12-06 12:24:57
【问题描述】:

我需要用正确的名称替换一些国家的名称。下面是我的数据框

names   country
0   1   Austria
1   2   Autrisa
2   3   Egnald
3   4   Sweden
4   5   Swweden
5   6   India

我需要用正确的名称替换上面的国家。下面是我需要的输出

names   country
0   1   Austria
1   2   Austria
2   3   England
3   4   Sweden
4   5   Sweden
5   6   India
correct_names = {'Austria','England','Sweden'}
def get_most_similar(word, wordlist):
    top_similarity = 0.0
    most_similar_word = word  
    for candidate in wordlist:
        similarity = SequenceMatcher(None, word, candidate).ratio()
        if similarity > top_similarity:
            top_similarity = similarity
            most_similar_word = candidate
            # print(most_similar_word)

    return most_similar_word

我得到的输出如下:-

0    Austria
1    Austria
2    England
3     Sweden
4     Sweden
5    England  -- this should be India but it got converted to England

需要帮助来解决这个问题。

【问题讨论】:

  • 你告诉它从集合“奥地利”、“英格兰”和“瑞典”中选择最接近的词。这些是它唯一会分配的名称。也许你想限制可接受的相似性。
  • 如何更改代码以使其读取适当的名称。我尝试将 top_similarity 更改为 50.0,但仍然无法正确捕获。
  • 你的函数中的单词表是什么?和correct_names一样吗?

标签: python function matcher


【解决方案1】:

你分配了

correct_names = {'Austria', 'England', 'Sweden'}

但这不适合当前的用例, 因为 India 可能是一个正确的名称,但它确实出现在 set 中。

你想分配

correct_names = {'Austria', 'England', 'India', 'Sweden'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多