Токенизатор, Удаление стоп-слова, Вытекающее из Java
-
12-09-2019 - |
Вопрос
Я ищу класс или метод, который принимает длинную строку из многих 100 слов и маркирует, удаляет стоп-слова и основы для использования в ИК-системе.
Например:
"Большой толстый кот сказал кенгуру: "Твой самый смешной парень, которого я знаю" ..."
токенизатор удалил бы знаки препинания и вернул бы ArrayList
из слов
средство удаления стоп-слов удалит такие слова, как "the", "to" и т. Д
стеммер сократил бы каждое слово до их "корня", например, "самое смешное" стало бы смешным
Заранее большое спасибо.
Решение
АФАИК Ясный можешь делать то, что ты хочешь.С StandardAnalyzer
и StopAnalyzer
вы можете остановить удаление слова.В сочетании с Lucene contrib-snowball
(который включает в себя работу из Снежный Ком) проект, вы тоже можете сделать вывод.
Но для обоснования также рассмотрите этот ответ на: Алгоритм вывода, который создает реальные слова
Другие советы
Это стандартные требования к обработке естественного языка, поэтому я бы посмотрел в таких наборах инструментов.Поскольку вам требуется Java, я бы начал с OpenNLP:http://opennlp.sourceforge.net/
Если вы можете посмотреть на другие языки, есть также NLTK (Python)
Обратите внимание, что "твой самый смешной парень, которого я знаю" - это нестандартный синтаксис, и это усложняет его обработку, чем "Ты самый смешной парень, которого я знаю".Не невозможно, но гораздо сложнее.Я не знаю ни одной системы, которая приравнивала бы "твой" к "ты есть".
Я сталкивался с этой проблемой в ряде задач, с которыми я работал, поэтому позвольте мне предложить токенизатор.Поскольку я не вижу, чтобы это давалось непосредственно в качестве ответа, я часто использую edu.northwestern.at.utils.corpuslinguistics.tokenizer.*
как моя семья токенизаторов.Я вижу ряд случаев, когда я использовал PennTreebankTokenizer
класс.Вот как вы это используете:
WordTokenizer wordTokenizer = new PennTreebankTokenizer();
List<String> words = wordTokenizer.extractWords(text);
Ссылка на эту работу такова здесь.Просто оговорка, я не имею никакого отношения к Northwestern, группе или работе, которую они выполняют.Я просто тот, кто время от времени использует код.
Вот полный список Инструменты НЛП.Иногда имеет смысл создать их самостоятельно, поскольку они будут легче, и у вас будет больше контроля над внутренней работой:используйте простое регулярное выражение для токенизации.Для стоп-слов просто вставьте приведенный ниже список или какой-либо другой список в HashSet:
Вот один из многих Java -реализация porter stemer).