Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Распознавание темы в наборе слов

Автор tbb, февраля 12, 2013, 19:23

0 Пользователи и 1 гость просматривают эту тему.

tbb

Привет! Подскажите пожалуйста, как, имея набор связанных слов, к примеру, вырезка из ленты новостей, распознать о чём идёт речь. Естественно меня интересует распознавание темы без участия  участия распознавателя в человеческом мозгу. Тоесть распознавание должно быть выполнено на компьютере. Тоесть имея некоторый текст, можно выделить ключевые слова, отбросить стоп слова и т.д......но как тему распознать???  :srch:

Далее, имея два набора слов, каким образом можно определить их схожесть? Тоесть я полагаю, что можно определить примерные темы первого набора слов, тоже самое для второго и в принципе можно будет сравнить на сколько схожи темы двух наборов и определить, одна ли это была тема или же два набора были из разных тем....верно?  :???

tbb


beaver

В общем виде задачу можно сформулировать: нужна функция P(w_1, ..., w_n, t), вычисляющую вероятность, что текст из слов w_1, ... w_n (w_i принадлежит W, множеству слов) принадлежит теме t (t принадлежит T, множеству тем)... Т.к. это вероятность, сумма P(w_1, ..., w_n, t_i) для всех i должна быть равна 1.

Проще сделать допущение, что тема не зависит от порядка расположения слов в тексте, только от самих этих слов... Тогда модель упрощается: только функция q(w, t), где w — слово, t — тема, q(w, t) — вероятность, что слово w встречается в текстах на тему t.

Нужна таблица для значений q(w, t). Понятно: не в ручную составлять, на основе корпуса... В качестве корпуса можно взять готовые новостные сайты, где у каждой новости есть тема... q(w, t)=c(w,t)/c(w) где c(w,t) — число встреч со словом w в текстах на тему t, c(w) — число встреч слова w вообще...

Тогда P(w_1, ..., w_n, t) = q(w_1, t) * q(w_2, t) * ... * q(w_n, t)... Вычисляем вероятности для всех тем, выбираем тему с максимальной вероятностью.

Для лучшей работы стоит использовать стеминг: отбрасывать окончания в q(w, t)... Без него нужен неприлично большой тренировочный корпус!

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

Заодно посмотрите готовую реализацию... для вдохновления: http://viewer.opencalais.com/
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

tbb

Посмотрел на готовую реализацию - не плохо, даже очень. Но мне нужна ещё одна фишка, а именно распознавание тематики текста во времени, тоесть есть набор текста, у каждого слова есть время, когда оно звучит в исходном звуковом фале (после моего самопального распознавателя речи) и надо определить, в какой момент происходит смена темы и с какой на какую......вот это уже конечно сложно.....Может есть идеи какие - нибуть? :what:

beaver

Да, это сложнее... Хочу заметить, что далее мои рассуждения глубоко теоретичны. Я не пробовал всё это реализовывать. С такими задачами не сталкивался.


Возможно, имеет смысл разбить задачу на две: а) разбить текст на отрывки по одной теме, б) определять тему каждого отрывка отдельно. О задаче б) я говорил выше, там всё не так сложно.

Что касается задачи а)... Я не уверен, но: кажется логичным, что смена темы в речи обычно маркируется соответствующими словами: кстати, при этом, далее, итак... Вот, что-то нагуглилось именно про такие слова: http://www.philology.ru/linguistics3/mikuta-00a.htm (правда, с примерами на français). Соответственно, можно приписать разным словам (лучше n-граммам) вероятность, что они заканчивают тему и что они начинают новую тему...

Можно даже попробовать использовать готовые алгоритмы для sentence detection... Но вместо предложений натренировать его на куски сообщений одной темы... Не уверен, что это сработает, но попробовать можно было бы. Вот только я не знаю корпусов, которые можно было бы использовать как тренировочные данные... :(
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

tbb

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

beaver

Ну да, ваша идея "новые темы так же начинаются с новых предложений" очень хорошая! :) Я почему-то о ней не подумал!

Ведь и правда: разрезАть текст на предоложения и определить в каждом тему... если больше n кусков по другой теме — считать, что началась другая тема.

Вы, пожалуйста потом скажите на чём остановились: очень интересно... а самому попробовать запрограммировать и посмотреть, что как работает, нет времени... :(
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр