Java - Как найти слово склонен формы в большой строке?
У меня есть случайное текстовое содержимое в строковой переменной. Я хочу посмотреть на все словосочетания конкретного слова, указанного пользователем.
Пример: если пользователь ищет слово "вспомогательный", ему следует перехватить все вхождения "вспомогательный, вспомогательный, вспомогательный, вспомогательный" в строке.
Вопрос заключается в следующем: есть ли библиотека Java для автоматического обнаружения таких перегибов в указанной строке?
Примечание: я видел библиотеку Java под названием WolframAlpha, которая утверждает, что она это делает, и вот ее веб-интерфейс, но я не вижу, чтобы эта библиотека работала, и нет никакого руководства по ее использованию.
3 ответа
Прежде всего, это не библиотека Java, это язык Wolfram, ранее известный как Mathematica. Он имеет JLink и может вызываться из Java, но у вас должен быть запущен Wolfram Kernel, который выполняет код.
Это называется обработка естественного языка, и это огромное, сложное поле. Я возился с несколькими проблемами, но все, что я могу сказать, это сложнее, чем сложно, если вы хотите получить надежное решение.
Что-то, на что Вы могли бы хотеть взглянуть, было бы: Стэнфордский НЛП
Это называется словом stemming. Сначала вам нужно (для конкретного языка) получить основание:
assisting -> assist using -ance, -ing, -ly, -s, -ed etcetera.
sought -> search using an exception list
Затем выполните поиск, возможно, с помощью регулярного выражения (Matcher.find). Шаблон:
"\\bassist\\p{L}*"
"\\b(search|sought)\\p{L}"
Для префиксов без учета прецедента все равно будет сложнее, но в общем случае фразы - это окончания слов в английском. Затем идет поиск синонимов.
Словари там часто называют корпусами. Поиск по "бесплатному английскому корпусу" даст результаты.
\\b
= граница словаp{L}*
= 0 или больше (*
) буквы
Проверьте это..
Я не знаю, насколько велико ваше требование, но вы всегда можете использовать викисловарь и проанализировать ваши данные??
Проверьте этот вопрос. Может помочь