如何匹配文字中的关键字/词组?

时间:2016-02-01 16:22:48

标签: linux node.js text text-analysis

我有......

  • 一个固定的大集(约1,000,000)个关键字和词组,例如birthdayhappy new yearvacation等。
  • 一些变量文本,介于10到500个单词之间。

我想......

  • 识别文本中存在的那些关键字/短语(例如Hi John, happy birthday to you.匹配birthday),最好是关于相等匹配数的一些信息
  • 容忍语法变体(vacations应与vacation匹配,countries应与country匹配)或"拼写错误" (nodejs == node.js)。

本质上是某些类似的 Google用于搜索的内容(但它们可能使用更复杂的方法)或Stackoverflow用于标记匹配/搜索答案。

基本上用户输入了一些文字,我的程序应该最好建议相关的关键字。

在我的情况下,算法需要主要使用英文文本,但也应适用于其他语言,如德语,意大利语,法语,西班牙语......

是否存在可以执行此操作的某些Linux / NodeJS库?或者至少是一个众所周知的算法?

1 个答案:

答案 0 :(得分:1)

关于第一个问题,您可以直接读取整个集合或逐行读取,并针对您需要搜索的每个单词创建一个String.match()。

第二个有点棘手,你不需要完全匹配,但你需要计算2个字符串的相似性。有许多算法可以测量两个字符串的相似程度。例如,请查看Levenshtein distance

有一个很好的库可以在node.js中实现上述所有功能 https://github.com/NaturalNode/natural 它可以对文本进行标记,搜索精确或类似的单词,并实现tf-idf,这是搜索引擎可以更简单的工作方式!