Биграммная модель для прогнозирования текста - PullRequest
0 голосов
/ 03 февраля 2020

Я планирую реализовать двухграммную модель для прогнозирования поиска текста. Если пользователь часто выполняет поиск «Тестовое слово для поиска», а затем, если пользователь вводит «Тест», я хочу автоматически предложить «Тестировать слово для поиска»

. У меня есть список данных искомого текста. Я пытаюсь с биграммой, даже если пользователь вводит "Tast", он все равно должен предоставить "Тест поиска слова". Я реализую это в Java. Я ищу библиотеку для предоставления данных, которые у меня есть, и когда я передаю пользователю, введенному в тексте, она должна предоставить прогноз.

После исследования я нашел ниже ссылки

https://www.javatips.net/api/Solbase-Lucene-master/contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java

https://opennlp.apache.org/docs/1.8.1/apidocs/opennlp-tools/opennlp/tools/ngram/NGramUtils.html

но они не помогают в моем случае. Может кто-нибудь, пожалуйста, пролить некоторую информацию о java библиотеках, которые подходят для моей цели, или кто-нибудь сталкивался с этим сценарием?

1 Ответ

0 голосов
/ 03 февраля 2020

Я думаю о двух решениях:

Первый

  • Индексируйте каждый из ваших запросов пользовательских строк в MARISA ( Алгоритм сопоставления с рекурсивно реализованным StorAge) Структура данных TR IE (структура данных, оптимизированная для поиска по ключевым словам и автозаполнения).
  • Подготовьте метод измерения расстояния Левенштейна, чтобы выдержать опечатки.

Теперь для каждого нового пользовательского запроса q получите все строки, проиндексированные в MARISA TR IE, в котором ваш запрос q имеет префикс (после допуска опечаток).

Второй

Используйте подсказку поиска эластичного элемента

Документация https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-suggesters.html#completion -Suggester

Обратите внимание, что Части функции предложения все еще находятся в стадии разработки.

Надеюсь, что это помогло

...