gpt4 book ai didi

postgresql - pg_trgm 如何在只有口音不同时给出更高的相似度分数

转载 作者:行者123 更新时间:2023-11-29 12:10:20 26 4
gpt4 key购买 nike

pg_trgm 在这两个比较中都给我 0.4 分:

SELECT similarity('Noemie','Noémie');
0.4

SELECT similarity('Noemie','NoXmie');
0.4

显然第一个比第二个更“相似”,在数据输入中经常省略重音符号,因此对于仅因重音符号的存在而不同的字母具有高度相似性的分数是非常有用的。

他们是否是一种调整 pg_trgm 以便为仅重音不同的单词提供更高相似度分数的方法?

最佳答案

我首先建议您从字符集中删除重音符号。 Postgres 提供了一个函数来执行此操作,unaccent(),但您需要单独安装它。 Here是有关该主题的信息。

使用此函数(或类似函数),您可以:

SELECT similarity(unaccent('Noemie'), unaccent('Noémie'));

将这两个值同等对待可能有点过头了。两者的加权平均值可能更合适:

SELECT (alpha * similarity(unaccent('Noemie'), unaccent('Noémie'0)) + 
(1 - alpha) * similarity('Noemie', 'Noémie')
)

alpha 是一个介于 0 和 1 之间的值,它给出了重音字符相似性的权重。

Here是对这个问题的很好的讨论。

关于postgresql - pg_trgm 如何在只有口音不同时给出更高的相似度分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39331868/

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