Подтвердить что ты не робот

Токенизатор, остановка удаления Word, Stemming в Java

Я ищу класс или метод, который занимает длинную строку из 100 слов и токенизирует, удаляет стоп-слова и стебли для использования в ИК-системе.

Например:

"Большой толстый кот, сказал" ваш самый забавный парень, которого я знаю ", к кенгуру..."

токенизатор удаляет пунктуацию и возвращает ArrayList слов

средство удаления стоп-слова будет удалять слова типа "the", "to" и т.д.

стволовый сократил бы каждое слово их "корень", например "забавный" стал бы забавным

Большое спасибо заранее.

4b9b3361

Ответ 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 портер-стрейнера).