【发布时间】:2011-06-14 20:56:02
【问题描述】:
考虑一下我有一个
string1 = "hello hi goodmorning evening [...]"
我还有一些次要关键字
compare1 = "hello evening"
compare2 = "hello hi"
我需要一个函数来返回文本和关键字之间的亲和力。示例:
function(string1,compare1); // returns: 4
function(string1,compare2); // returns: 5 (more relevant)
请注意 5 和 4 只是示例。
你可以说 - 编写一个计算出现次数的函数 - 但对于这个例子,这不起作用,因为两者都有 2 次出现,但 compare1 不太相关,因为在 string1 中没有完全找到“hello night”(两个词 hello和晚上比你好嗨更遥远)
是否有任何已知的算法可以做到这一点?
添加1:
在这种情况下,像编辑距离这样的算法将不起作用。 因为 string1 是一个完整的文本(如 300-400 个字),比较字符串最多 4-5 个字。
【问题讨论】:
-
您是在寻找简单的字符串编辑距离比较还是完全语义等价?例如cat 更类似于 cart 还是 feline?
-
两者都不是..我需要一些类似计算出现次数+根据单词距离给予权重的东西(正如我之前解释的那样:string1 是一篇有 300-400 字的文章,比较字符串只有 3- 4 个字)
-
您的关键字总是成对出现吗?更重要的是,有更多匹配的词或更好的接近度?
-
1.不总是成对的,比较字符串最多可以是 5-6 个单词 2. 50%-50%
标签: algorithm text full-text-search relevance