Создание матрицы терминов-документов в Python из индекса ElasticSearch

Новичок в ElasticSearch здесь. У меня есть набор текстовых документов, которые я проиндексировал с помощью ElasticSearch через клиент Python ElasticSearch. Теперь я хочу провести машинное обучение с документами, используя Python и scikit-learn. Мне нужно выполнить следующее.

  1. Используйте анализаторы ElasticSearch для обработки текста (выделение корней, строчные буквы и т. д.)
  2. Получите обработанные документы (или проанализированные токены) из индекса.
  3. Преобразуйте обработанные документы в матрицу Term-Document Matrix для классификации (возможно, используя CountVectorizer в scikit-learn). Или, возможно, есть какой-то способ получить TDM прямо из ElasticSearch.

У меня возникли проблемы с размышлением о том, как правильно это сделать, и, похоже, нет простых реализаций от ElasticSearch.

Например, я могу просто получить непроанализированные документы из ES, а затем обработать документы в Python, но я хочу использовать анализаторы ES. Я могу использовать анализаторы ES каждый раз, когда запрашиваю набор документов из ES, но это похоже на то, что я делаю что-то дважды, поскольку он уже должен быть проанализирован и сохранен в индексе. В качестве альтернативы я думаю, что могу сказать ES получить векторы терминов для каждого документа и вручную извлечь токены и подсчеты из результатов для каждого документа, а затем вручную закодировать TDM с учетом токенов и подсчетов. Это, кажется, самый прямой способ, который я могу придумать до сих пор.

Есть ли более простые или прямые пути для получения TDM проанализированных текстов из индекса ES в Python для работы с пакетами машинного обучения?


person plam    schedule 02.06.2015    source источник


Ответы (1)


Недавно я добавил руководство по как я сделал это с помощью Python.

Прочтите после изучения руководства:

Если вы делаете что-то крупномасштабное, я предлагаю вам проверить Apache Spark. Разреженную матрицу можно использовать в качестве входных данных для матрицы строк Spark MLlib. СДР. Думаю, скоро будет поддержка Python.

person Animesh Pandey    schedule 07.08.2015