gpt4 book ai didi

ruby - 用 ruby​​ 模糊匹配单词和短语

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:55 25 4
gpt4 key购买 nike

我想用少量的服务匹配一堆数据

我的数据看起来像这样

{"title" : "blorb",
"category" : "zurb"
"description" : "Massage is the manipulation of superficial and deeper layers of muscle and connective tissue using various techniques, to enhance function, aid in the healing process, decrease muscle reflex activity..."
}

我必须将它与

匹配

["Swedish Massage", "Haircut"]

显然 “Swedish Massage” 会胜出,但运行基准测试表明 “Haircut” 是:

require 'amatch'

arr = [:levenshtein_similar, :hamming_similar, :pair_distance_similar, :longest_subsequence_similar, :longest_substring_similar, :jaro_similar, :jarowinkler_similar]

arr.each do |method|
["Swedish Massage", "Haircut"].each do |sh|
pp ">>> #{sh} matched with #{method.to_s}"
pp sh.send(method, description)
end
end and nil

结果:

">>> Swedish Massage matched with jaro_similar"
# 0.5246896118183247
">>> Haircut matched with jaro_similar"
# 0.5353606789250354
">>> Swedish Massage matched with jarowinkler_similar"
# 0.5246896118183247
">>> Haircut matched with jarowinkler_similar"
# 0.5353606789250354

其余指数远低于 0.1

解决这个问题的更好方法是什么?

最佳答案

搜索是准确率和召回率之间的一场持久战。您可以尝试的一件事是按单词拆分您的输入 - 这将导致 Massage 上的匹配更强,但结果会扩大结果集。您现在会发现返回的句子中只有接近 Swedish 的单词。然后,您可以尝试通过对多个词的结果进行平均来控制这种扩大,使用停止列表来避免像 这样的常用词,提升查找彼此接近的标记等,但你永远不会看到真正完美的结果。如果您真的对微调感兴趣,我推荐 ElasticSearch - 相对容易学习且功能强大。

关于ruby - 用 ruby​​ 模糊匹配单词和短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21491217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com