2016-02-01 5 views
0

У меня есть ...Как совместить ключевые слова/фразы в тексте?

  • фиксированной большого набор (около 1000000) ключевых слов и фраз, как birthday, happy new year, vacation и т.д.
  • некоторых переменной текста от 10 до 500 слов.

Я хотел бы ...

  • определить те ключевые слова/фразы, которые присутствуют в тексте (например, Hi John, happy birthday to you. матчи birthday), предпочтительно с некоторой информацией о количестве одинаковых матчей
  • допускать различия в грамматике (vacations должно соответствовать vacation, countries должно соответствовать country) или «орфографическим ошибкам» (nodejs == node.js).

В сущности то похож, что Google делает для поиска (но они, вероятно, использовать способ более сложные методы) или Stackoverflow делает для сравнения тегов/поиск ответов.

В основном пользователь вводит какой-либо текст, и моя программа должна делать все возможное, чтобы предлагать релевантные ключевые слова.

В моем случае, алгоритм должен работать в основном на английском тексте, но также должны быть применимы и к другим языкам, как немецкий, итальянский, французский, испанский, ...

ли какой-либо библиотеки Linux/NodeJS существует что можно сделать? Или, по крайней мере, известный алгоритм?

ответ

1

Что касается первого вопроса, вы можете просто прочитать весь набор или по строкам и создать String.match() для каждого слова, которое нужно искать.

Второе немного сложнее, вам не нужно точное совпадение, но вам нужно рассчитать сходство 2 строк. Существует много алгоритмов, которые могут измерять, насколько похожи две строки. Например, посмотрите на Levenshtein distance.

Существует хорошая библиотека, которая реализует все выше в node.js https://github.com/NaturalNode/natural Это может разметить текст, поиск точного или подобное слово, а также он реализует tf-idf, который является простым способом поисковой система может работать !