@Gudsaf
Школьник

С помощью чего определить принадлежность текста к какой-либо теме посредством python?

Представьте себе такую ситуацию: есть текст, нужно определить к какой теме из списка тем он относится.

Что есть? Есть список тем, где каждая тема представляет из себя набор слов, например:
футбол: футбол, мяч, поле, болельщик, ворота, судья, вратарь, футболист...
биатлон: биатлон, винтовка, лыжи, лыжник, биатлонист, снег, мишень...
...

Так же есть какой-то текст, который так или иначе касается тем определных ранее: то есть принадлежит какой-то теме исходя из какой-то меры, пусть от 0 до 1.

Так вот, я предполагаю, что это задача решается латентно-семантическим анализом. По этой теме есть статьи, но обычно их примеры сводятся к задачам о получении основной темы текста или же сравнения близости двух текстов. Подобной задачи как есть, не обнаруживал.

Всяк есть библиотеки для питона которые позволят решить мою проблему, и всяк есть среди нас те кто ее уже решали. Подскажите, каков был ваш опыт, чем вы руководствовались.
  • Вопрос задан
  • 6121 просмотр
Пригласить эксперта
Ответы на вопрос 7
@kzoper
Ответ написан
Комментировать
1) Задача классификации (с учителем), либо кластеризация (без учителя)
2) Метод мешка слов
3) scikit-learn.org
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну, не совсем на притоне, но есть - Elasticsearch и его percolator query - https://www.elastic.co/guide/en/elasticsearch/refe...

Смысл всего такой - у нас есть ES и есть индекс с нашими запросами "футбол: футбол, мяч, поле, болельщик, ворота, судья, вратарь, футболист"
Мы берем документ и спрашиваем у ES через percolator query каким запросам этот документ соответствует. В ответ ES вернет наиболее релевантные запросы.

Общаться с ES можно через питон.

Мы так систематизируем товары по каталогам.
Ответ написан
@asd111
Полный пример как это сделать в scikit-learn scikit-learn.org/stable/tutorial/text_analytics/wo...

Гуглить machine learning text classification, text categorization.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
если совсем в лоб:

1) строгаешь существительные из предложений (Noun, есть еще main Noun)
2) затем Counter.most_common() подсчитываешь их во всем тексте и берешь первые N
3) и косинусная близость этих N с существительными темы
Ответ написан
Комментировать
@ivodopyanov
NLP, python, numpy, tensorflow
В кластеризации текста еще есть библиотечка BigARTM от Воронцова, которая позволяет "выращивать" кластеры вокруг наборов предварительно заданных слов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы