【问题标题】:How to get matched text from a given list which is given to fuzzy wuzzy partial_ratio()?如何从提供给模糊模糊partial_ratio()的给定列表中获取匹配的文本?
【发布时间】:2020-10-07 07:36:42
【问题描述】:

我有一个字符串和一个字符串列表。 我只想知道列表中的哪些文本与给定的字符串 100% 部分匹配。

from fuzzywuzzy import fuzz 

s1 = "Hello"
s_list= ["Hai all", "Hello world", "Thank you"]

fuzz.partial_ratio(s1, s_list)

为此我得到 100。因为“Hello”与“Hello world”有部分匹配 但是我怎样才能得到“Hello World”作为输出呢?

谁能帮我解决这个问题? 提前致谢。

【问题讨论】:

    标签: python nlp fuzzywuzzy


    【解决方案1】:

    精确匹配不需要fuzzywuzzy。 Fuzzywuzzy 用于模糊匹配。 Fuzzywuzzy 不能精确地为匹配生成索引,因为通常没有“匹配”,只有距离。

    您只需要 Python。

    s1 = "Hello"
    s_list= ["Hai all", "Hello world", "Thank you"]
    
    for item in s_list:
        if s1 in item:
            print("item: " + item + "\ns1" + s1)
    

    【讨论】:

    • 谢谢@Neil。这个答案完全符合我的要求。
    【解决方案2】:

    你可以使用不同的功能

    from fuzzywuzzy import process
    
    s1 = "Hello"
    s_list= ["Hai all", "Hello world", "Thank you"]
    
    [s for s, m in process.extract(s1, s_list) if m == 100]
    

    更多信息请查看help(process.extract)。 如果您严格想要 100% 的部分匹配,尼尔的答案会更好。

    【讨论】:

    • 这比使用“in”要贵得多。
    • 即使有另一个匹配项,也只会返回“Hello world”,例如列表中的“Hello there”。
    • @Neil 我认为 OP 想要使用这个库,尽管我可以看到这不是他的优先事项。
    • 感谢@kuco23 和尼尔的回答。我的意图是获得 100% 的部分匹配,因为我尝试过模糊模糊我张贴并卡在那里我以这种方式张贴。但尼尔的回答更适合我的要求。谢谢尼尔。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2022-12-24
    相关资源
    最近更新 更多