【问题标题】:Dictionary based string matching algorithm - Java基于字典的字符串匹配算法 - Java
【发布时间】:2013-01-15 02:06:46
【问题描述】:

Java中有基于字典的字符串匹配算法吗?

根据字典给出两个字符串之间相似度百分比的东西?

喜欢

 public double getSimilarity(String str1, String str2);

实现如下:

 getSimilarity("Professor", "Teacher")

会给出很高的百分比吗?

提前致谢:)

【问题讨论】:

  • 将“教授”与“老师”联系起来是我们人类可以很容易做到的事情。对于计算机来说,这些只是两个不同的字符序列。对于这样的问题,您将不得不为计算机完成所有繁重的工作。
  • 通过词库运行它;)
  • 您可能需要主题的本体,可以对其进行分析以衡量“相似性”。
  • @Sanchit 感谢上帝提供人工智能、自然语言处理和统计方法。这个问题实际上在许多研究中都得到了解决,所以不要太早放弃,尽管它们只是“一个字符序列”,在正确的上下文中——你可以学到很多关于每个的含义是什么,以及它们如何彼此相关。
  • 投反对票的人:请详细说明投反对票的原因。我发现它非常有帮助并且非常清楚 OP 的要求。

标签: java algorithm similarity


【解决方案1】:

Shaul Markovitch 和 Evgeniy Gabrilovich 完成了一项伟大的工作,在他们的文章中进行了描述:Wikipedia-based Semantic Interpretation for Natural Language Processing

思路如下:索引维基百科(或其他上下文来源)。
为每个术语(单词)创建映射:term -> articles in which the term appears in

每个术语基本上都由一个向量表示 - 为简单起见,假设它是一个二进制向量 - 所以对于术语t,条目d 将是“1”当且仅如果 t 出现在文档 d 中。

现在,给定这些向量 - 要查找两个术语 t1t2 是否相似 - 您所要做的就是获取代表 t1 的两个向量的向量相似度t2


注意:二进制向量是一种简化,实际上本文使用了tf-idf 分数,即t 在文档d 中的术语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2018-04-05
    • 2013-12-24
    相关资源
    最近更新 更多