Токенизатор, Удаление стоп-слова, Вытекающее из Java

StackOverflow https://stackoverflow.com/questions/1664489

Вопрос

Я ищу класс или метод, который принимает длинную строку из многих 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:

common-english-words.txt

Вот один из многих Java -реализация porter stemer).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top