返回文本之间关联的函数?
考虑我有一个
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中找到(2个字你好和晚上是你好比你好更多)
有没有任何已知的算法来做到这一点?
ADD1:
在这种情况下,像编辑距离这样的算法是行不通的。
因为string1是一个完整的文本(如300-400个单词),并且比较字符串最多为4-5个单词。
没有找到相关结果
已邀请:
7 个回复
才脊烽馈低
我隔离了我们要匹配的片段,只是为了方便阅读。 我们将亲和力(或相似性)与字符串列表进行比较:
我已经实现了算法,所以我将计算相似度并将结果标准化:
然后我们绘制结果: 我认为这与您的预期结果非常相似。 HTH! 一些实现(带源代码) Smith-Waterman CUDA源代码 (GSW) S-M算法解释道 (介绍) 一个交互式的逐步演示 小程序 Java源代码 Python源代码
吠强祷豪硅
脖呐
将为您提供两个字符串之间的Levenshtein编辑距离,这是一个可能有用的指标。 请参阅:http://www.mindrot.org/projects/py-editdist/ 该页面的代码示例:
相关:https://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-string-comparison
稀瓣囊
骨酚柯
并调用d距离,你的函数试图计算
桔适丛
呕蹿尉