С помощью чего определить принадлежность текста к какой-либо теме посредством python?
Представьте себе такую ситуацию: есть текст, нужно определить к какой теме из списка тем он относится.
Что есть? Есть список тем, где каждая тема представляет из себя набор слов, например:
футбол: футбол, мяч, поле, болельщик, ворота, судья, вратарь, футболист...
биатлон: биатлон, винтовка, лыжи, лыжник, биатлонист, снег, мишень...
...
Так же есть какой-то текст, который так или иначе касается тем определных ранее: то есть принадлежит какой-то теме исходя из какой-то меры, пусть от 0 до 1.
Так вот, я предполагаю, что это задача решается латентно-семантическим анализом. По этой теме есть статьи, но обычно их примеры сводятся к задачам о получении основной темы текста или же сравнения близости двух текстов. Подобной задачи как есть, не обнаруживал.
Всяк есть библиотеки для питона которые позволят решить мою проблему, и всяк есть среди нас те кто ее уже решали. Подскажите, каков был ваш опыт, чем вы руководствовались.
А что у вас является эталоном при подсчёте меры? Каким признакам должен удовлетворять текст, чтобы с мерой 1 он считался текстом о футболе?
Принадлежность текста к теме - это не какое-то объективное внутреннее свойство текста, а некая внешняя оценка по каким-то выбранным критериям. И как выбрать критерии - это отдельная задача, для которой нет единственного решения, выбор будет зависеть от конечной цели классификации.
Смысл всего такой - у нас есть ES и есть индекс с нашими запросами "футбол: футбол, мяч, поле, болельщик, ворота, судья, вратарь, футболист"
Мы берем документ и спрашиваем у ES через percolator query каким запросам этот документ соответствует. В ответ ES вернет наиболее релевантные запросы.
Gudsaf, это что-то типа nosql базы данных, ориентированная на полнотекстовый поиск, одной из фич которой является реверсивный поиск по запросам. Ограничения конечно же есть, так как есть язык этих самых запросов, доступ по http на основе json. Развернуть - 5 минут!
Тут все хорошо, прочел статью, осознал, одна только проблема.
Поскольку это сеть, и ее надо обучать, встает вопрос об учителе.
То есть нужны тексты, нужно сказать что эти тексты относятся к этой категории, передать это в скикит, он научится, и после он уже будет на потоке через пайплайн определять все что в него летит. Хорошо, но проблема в тематике статей, она специфична и я боюсь этого.
1) строгаешь существительные из предложений (Noun, есть еще main Noun)
2) затем Counter.most_common() подсчитываешь их во всем тексте и берешь первые N
3) и косинусная близость этих N с существительными темы