微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为多个文档中的字符串选择最佳匹配,其中两者的分数相等?

如何解决如何为多个文档中的字符串选择最佳匹配,其中两者的分数相等?

我在 Elm 中实现了一个算法,我将一个句子(用户输入)与其他多个句子(数据)进行比较。该算法的工作方式是将用户输入和数据转换为单词,然后我按单词进行比较。算法会将数据中用户输入单词最多的句子标记为最佳匹配。

现在,在第一次运行时,数据中的第一个句子将被视为最佳匹配,然后转到第二个句子并查找匹配。如果匹配数大于前一个,则第二个句子将被视为最佳匹配,否则为前一个

如果两个句子有相同的匹配,那么目前我正在比较这两个句子的大小,并选择大小较小的一个作为最佳匹配。

不涉及语义,所以这是选择最佳匹配的最佳方法在这种情况下,哪个尺寸更小?或者还有其他更好的选择吗?我试图寻找一些科学参考资料,但找不到。

编辑:

总结一下,如果你想将一个句子与另外两个句子进行比较,根据单词出现次数,如果两个句子的单词数量相同,并且在你的比较句子中也存在,那么可以将哪一个标记为最相似?使用哪些方法来检索这种相似性?

解决方法

您可以添加一些因素来改进比较:

  • 字符串相似度(例如 Levensthein、Jaro-Winkler 等)
  • 通过为不同的句子长度(字符或单词级别)添加线性或几何惩罚来为句子长度添加参数
  • 清理字符串(删除停用词、特殊符号等)
  • 添加单词的序列(位置)作为参数。因此哪个词在另一个词之前/之后。
  • 使用 Sentence Embeddings 来获取相似性,同时捕获一些语义 (https://www.analyticsvidhya.com/blog/2020/08/top-4-sentence-embedding-techniques-using-python/)

最后,总会有一些句子与您的输入具有相同的差异,尽管它们是不同的。没关系,只要它们实际上与您输入的句子相似。

,

好吧,如果您想更进一步,可以使用深度学习。 否则检查最常用的词(记住删除在所有文本中出现的词,例如“或”、“和”), 此外,检查点间标记的密度也很有用。
波兰奥运会期间有一项超酷的任务。我这里使用的是滚动哈希算法。

https://szkopul.edu.pl/problemset/problem/v2Y2_UW56ENMcbwP22tkTb7a/site/?key=statement

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。