Токенизатор, остановка удаления Word, Stemming в Java
Я ищу класс или метод, который занимает длинную строку из 100 слов и токенизирует, удаляет стоп-слова и стебли для использования в ИК-системе.
Например:
"Большой толстый кот, сказал" ваш самый забавный парень, которого я знаю ", к кенгуру..."
токенизатор удаляет пунктуацию и возвращает ArrayList
слов
средство удаления стоп-слова будет удалять слова типа "the", "to" и т.д.
стволовый сократил бы каждое слово их "корень", например "забавный" стал бы забавным
Большое спасибо заранее.
Ответы
Ответ 1
AFAIK Lucene может делать то, что вы хотите. С помощью StandardAnalyzer
и StopAnalyzer
вы можете удалить стоп-слово. В сочетании с Lucene contrib-snowball
(который включает в себя работу из проекта Snowball), вы также можете сделать вывод.
Но для вывода также рассмотрим этот ответ на: алгоритм строгания, который производит реальные слова
Ответ 2
Это стандартные требования в обработке естественного языка, поэтому я бы посмотрел в таких инструментах. Поскольку вам требуется Java, я бы начал с OpenNLP:
http://opennlp.sourceforge.net/
Если вы можете посмотреть другие языки, есть также NLTK (Python)
Обратите внимание, что "ваш самый забавный парень, которого я знаю" не является стандартным синтаксисом, и это усложняет процесс, чем "Ты самый смешной парень, которого я знаю". Не невозможно, но намного сложнее. Я не знаю никакой системы, которая бы приравнивала бы "ваш" к "вы".
Ответ 3
Я рассмотрел проблему по ряду задач, с которыми я работал, поэтому позвольте мне дать предложение токенизатора. Поскольку я не вижу в нем прямого ответа, я часто использую edu.northwestern.at.utils.corpuslinguistics.tokenizer.*
как свою семью токенизаторов. Я вижу несколько случаев, когда я использовал класс PennTreebankTokenizer
. Вот как вы его используете:
WordTokenizer wordTokenizer = new PennTreebankTokenizer();
List<String> words = wordTokenizer.extractWords(text);
Ссылка на эту работу здесь. Просто отказ от ответственности, я не имею никакого отношения к Северо-Западу, группе или работе, которую они делают. Я просто тот, кто иногда использует код.
Ответ 4
Вот полный список Инструменты NLP. Иногда имеет смысл создавать их сами по себе, поскольку они будут легче, и у вас будет больше контроля над внутренней работой: используйте простое регулярное выражение для токенизаций. Для слов остановки просто нажмите список ниже или какой-либо другой список в HashSet:
common-english-words.txt
Вот одна из многих реализация Java портер-стрейнера).