如何在文本中匹配关键字/短语?

我有…

  • 一个固定的大集(约100万)关键词和短语,如birthdayhappy new yearvacation等。
  • 一些10至500字的variables文本。

我想…

  • 确定文本中出现的关键字/短语(例如, Hi John, happy birthday to you. birthday Hi John, happy birthday to you. birthday ),最好是关于相等数目的一些信息
  • 容忍语法变化( vacations应该与vacation匹配, countries应该匹配country )或者“拼写错误”( nodejs == node.js )。

本质上类似于谷歌search(但他们可能使用更复杂的方法)或Stackoverflow的标签匹配/search答案。

基本上用户input一些文本,我的程序应该尽量build议相关的关键字。

在我的情况下,该algorithm需要大部分操作英文文本,但也应该适用于其他语言,如德语,意大利语,法语,西class牙语,…

是否有一些Linux / NodeJS库可以做到这一点? 或者至less有一个众所周知的algorithm?

至于第一个问题,您可以简单地读取整个集合或逐行读取,并对每个需要search的单词进行String.match()。

第二个是有点棘手,你不需要完全匹配,但你需要计算2个string的相似性。有很多algorithm,可以衡量两个string是如何相似。 例如,看看Levenshtein的距离 。

有一个很好的库,在node.js https://github.com/NaturalNode/natural中实现上述所有function。它可以标记文本,search一个确切的或相似的单词,并且还实现了tf-idf ,它更简单search引擎可以工作的方式!