Форум: "Начинающим";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];
ВнизОпределение темы текста по словарю. Найти похожие ветки
← →
NBAH1990 (2013-03-19 17:02) [0]Доброго времени суток, уважаемые знатоки. По работе приходится перебирать иного текста и распределять его в 2 группы "То что надо " и "То что не надо". Проведя не хитрый анализ множества текстов из серии "То что надо" вывел словарь со словами чаще всего появляющимися в подобных текстах. Теперь хочу написать маленькую прожку, которая обращаясь к словарю определяла бы принадлежность текста к группе "То что надо" или отбрасывала в "То что не надо". Не знаю как бы правильно составить алгоритм. У кого какие идеи? Мб изначально не верной дорогой пошел?
← →
Ega23 © (2013-03-19 17:06) [1]Словарь:
Токен - Вес токена.
Соответственно, парсишь документы, суммируешь вес каждого токена.
Принимаешь решение на основе полученного общего "веса" документа.
← →
Ega23 © (2013-03-19 17:08) [2]Веса подбираешь сам, по степени важности (это тебе виднее, какие токены должны иметь вес 100500, а какие - 0).
Порог общего веса документа - тоже сам определяешь.
Как-то так.
← →
NBAH1990 (2013-03-19 17:19) [3]
> Веса подбираешь сам, по степени важности
т.е. если у меня уже есть словарь с ключевыми словами, то самое частое слово будет весить больше всех? Ещё была идея, высчитать процент слов из словаря входящих в текст.
← →
Ega23 © (2013-03-19 17:23) [4]
> т.е. если у меня уже есть словарь с ключевыми словами, то
> самое частое слово будет весить больше всех?
Это один из вариантов решения. Есть и другие.
Например, документ крайне важен, если в нём упоминается "Урюпинск". Значит вес токена "Урюпинск" должен быть заведомо выше порога важности документа.
← →
O'ShinW © (2013-03-19 17:26) [5]Если брать текст, читать глазами, давать тему руками.
Из него все слова в словарь добавлять, с пометкой, к какой теме они.
В БД, естественно
Таблица тем, таблица слов, кросс-таблица.
выкинуть слова, подходящие ко всем темам ("в", "на" и т.п.)
правильно,
> высчитать процент слов из словаря входящих в текс
Еще таблица частот слова в теме
Хм.. А тема, пожалуй, интересная..
← →
Ega23 © (2013-03-19 17:29) [6]
> В БД, естественно
Знаешь, какого размера будет БД? :)
← →
O'ShinW © (2013-03-19 17:32) [7]догадываюсь :)
Но если тем не много - не должно быть сильно дуто
← →
NBAH1990 (2013-03-19 17:59) [8]Я сделал проще, собрал много сообщений по теме в один большой текст и провёл семантический анализ. Вот результаты анализа (Слово, количество в тексте, частота использования в процентах)
интернет 11 1.05
модем 11 1.05
номер 9 0.86
все 8 0.76
подключить 7 0.67
услуга 7 0.67
связь 6 0.57
скорость 6 0.57
ваш 5 0.48
деть 5 0.48
добрый 5 0.48
написать 5 0.48
план 5 0.48
приходить 5 0.48
спасибо 5 0.48
тарифный 5 0.48
тарифный план 5 0.48 / 0.95
тенг 5 0.48
чтоб 5 0.48
таблица не вся, для анализа взял больше сотни сообщений.
← →
NBAH1990 (2013-03-19 18:16) [9]Вот ещё вариант в голову пришел. Есть у меня результаты анализа Всех нужных текстов, и есть результаты анализа текущего текста. Мб как-то сравнивая таблицы искать степень соответствия?
← →
Ega23 © (2013-03-19 19:21) [10]1. "индекс цитируемости" и "вес" - это несколько разные вещи. Есть наиболее часто встречаемые слова. Есть "весомые" слова. Весомые могут встречаться реже, но они - более важные.
2. "интернет", "Интернет", "интернета" - суть одно слово. "Услуга", "услуга", "услуг", "услуги", "услугой" и т.д. - тоже. Т.е. морфологию надо учитывать, по-хорошему.
3. Ты уверен, что ты именно "семантический анализ" провёл? Есть у меня в этом некие сомнения...
← →
Лингвист (2013-03-20 11:32) [11]> NBAH1990
> все
> ваш
> чтоб
Есть опасение, что эти и им подобные слова будут встречаться чуть ли не во всех текстах. Кстати, Вашим "семантическим анализом" именно это и подтверждается - потому что никакой это не семантический анализ, а просто подсчет частоты использования (что, собственно, Вы сами и написали).
Вывод - общеупотребительные слова (предлоги, местоимения и т.п.) вообще не должны учитываться (то есть, их вес должен быть нулевым).
← →
O'ShinW © (2013-03-20 11:51) [12]я ж говорю - берешь текст, читаешь глазами, даешь название руками
нажимаешь "записать"
Далее, программка разбирает текст по словам, если нет еще слов в словаре - добавляет.
Далее пишет темы в другую таблицу
Потом пишет в кросс таблицу
id_слова, id_темы, кол-во раз в тексте
Скормив таким образом несколько текстов(десятков, или сотни), (фактически, произведя обучение(задумались о нейронке, кстати)) имхо, получим неплохую статистику слов по темам.
Прибили(простым запросом) слова попадающие в разные темы, с кол-вом более [много].
Далее скармливаем очередной текст, смотрим каких слов попало больше. В случае со "своя/чужая" тема трудностей особых не видать, вроде.
Причем,
>> "интернет", "Интернет", "интернета" - суть одно слово
при достаточном кол-ве испытаний (продолжительном обучении) уже можно не учитывать.
Пусть считаются разными.
Вчера начал писать, на досуге
Задачу взял шире - определить из N тем, к какой более относится.
Если не брошу :), сообщу что получается
← →
Ega23 © (2013-03-20 11:53) [13]Вооот.
Вот Влад как раз труъ-семантический анализ описал. :)
← →
Ega23 © (2013-03-20 12:05) [14]
> при достаточном кол-ве испытаний (продолжительном обучении)
> уже можно не учитывать.
> Пусть считаются разными.
Скользкий момент.
← →
O'ShinW © (2013-03-20 12:09) [15]
> Потом пишет в кросс таблицу
> id_слова, id_темы, кол-во раз в тексте
еще плотность = кол-во этого слова в тексте / на общее кол-во слов в тексте
а вот с определением ВЕСА..
После прогона многа текстов -
Или сидеть, обучать - выбрал тему, программка показывает слова к ней относящиеся, руками проставляешь веса
Или не понятно пока как..
← →
O'ShinW © (2013-03-20 12:09) [16]
> Скользкий момент.
Согласен. Зато просто, что бы попробовать
← →
Ega23 © (2013-03-20 12:18) [17]
> Согласен. Зато просто, что бы попробовать
Не, ну понятно, с чего-то надо начинать. А морфология - это вообще задница. Ну и правописание - тоже нужно учитывать, всякие там "расстояния Ливенштейна" прикручивать. Интересно, но трудоёмко, шо писец.
← →
Медвежонок Пятачок © (2013-03-20 12:27) [18]а что насчет такой темы текста:
уважаемые читатели. сегодня мы поговорим об очень интересной теме.
нет, это не ядерная физика и не квантовая механика. не бозон хиггса и не тайны спиральных галактик.
и даже не ксения собчак.
сегодня наша тема - как правильно посадить морковку у вас на огороде.
← →
Ega23 © (2013-03-20 12:34) [19]
> а что насчет такой темы текста:
Сеошников - на кол и сжечь!
← →
O'ShinW © (2013-03-20 12:50) [20]А кого не сжечь, тому два года расстрела
← →
O'ShinW © (2013-03-25 22:21) [21]Получилось, вроде :)
Алгоритм не изменился
Взял три темы():
1. Про компьютеры
2. О природе что-то
3. Что-то про науку
Базу(обучение) заполнял первыми попавшимися статьями ( из гугла)
Например, кусок статьи о делении ядер урана на википедии оценена как
Что-то про науку 78
Компьютерная тема 15
О природе что-то 14
Оценка прикола http://ithappens.ru/story/10750
Компьютерная тема 64
Что-то про науку 26
О природе что-то 22
для первого приближения пойдет :)
правда текст
уважаемые читатели. сегодня мы поговорим об очень интересной теме.
нет, это не ядерная физика и не квантовая механика. не бозон хиггса и не тайны спиральных галактик.
и даже не ксения собчак.
сегодня наша тема - как правильно посадить морковку у вас на огороде.
оценен как
Компьютерная тема 7
О природе что-то 4
Что-то про науку 3
:)
← →
Inovet © (2013-03-25 22:26) [22]> [21] O"ShinW © (25.03.13 22:21)
Про науку и о природе не близкие темы? Не в смысле природы "Хорошо в деревне летом", а природы как мироустройства.
← →
clickmaker © (2013-03-25 22:33) [23]любую тему можно оценить как "что-то про науку" и "о природе" )
← →
O'ShinW © (2013-03-26 08:44) [24]не, не, не
О природе что-то - это в смысле Пришвин, Бианки, Паустовский - кого вспомнил, короче. Короткие рассказы.
именно > в смысле природы "Хорошо в деревне летом"
> Что-то про науку
Это статьи с гугла по поиску "наука" (в основном РАН, элементы ру)
> Компьютерная тема
Этот из потрепаться выборочно, ixbt, выборочно microsoft.com
примерно по 50 статей каждой тематики было загружено в БД, разобрано по словам более 3х символов, уникально составлен словарь, полностью кросс-таблица.
Проверочный текст разбирается так же, по словам более 3х символов, в отдельную таблицу.
Далее к ней три раза(по числу тем) джойнится кросс-таблица по айдишнику слова(тут же подзапросом удаляются слова, которые во всех темах встретились более N раз ).
Наружу торчат айдишники тем. Группируем по ним, суммируя частоту повторений слова по теме. Это и есть результат.
Вчера свет рубанули, сегодня уже не дома, а то бы показал :)
← →
O'ShinW © (2013-03-26 09:12) [25]хотя.. что там показывать -
Delphi - мемо, комбобокс с темами, две кнопки: Обучение, Анализ.
Обучение - Вставляем в мемо, выбираем тему, жмем Обучение.
Анализ - Вставляем в мемо, жмем Анализ, тут же в мемо читаем результат
Все на MSSQL сервере (ExpressEdition), через хранимки.
Скрипт на создание БД, если интересно, приложу
← →
Ega23 © (2013-03-26 10:18) [26]
> О природе что-то - это в смысле Пришвин, Бианки, Паустовский
> - кого вспомнил, короче. Короткие рассказы.
BBC Wild с закадровым Дроздовым - наше всьё!
> Скрипт на создание БД, если интересно, приложу
Кинь всё на o.v.egorov гмаил.ком
← →
O'ShinW © (2013-03-26 19:27) [27]сбросил.
Что забыл - сбросил без данных, а без заранее заданных тем, нечего будет выбрать
поэтому
INSERT INTO [dbo].[Themes] ([Theme]) VALUES ("Тема1");
INSERT INTO [dbo].[Themes] ([Theme]) VALUES ("Тема2");
INSERT INTO [dbo].[Themes] ([Theme]) VALUES ("Тема3");
если больше, то надо хранимку пересматривать.
[GetTxtClass]
Или тупо дописать 4й join, или придумать универсально
тут:
...
where WT.IdWord not in (
SELECT
W.IdWord
FROM
WordTheme wt1
join WordTheme wt2 on wt2.IdWord = wt1.IdWord
join WordTheme wt3 on wt3.IdWord = wt1.IdWord
join Words W on W.IdWord = WT1.IdWord
where
wt1.IdTheme <> wt2.IdTheme
and wt2.IdTheme <> wt3.IdTheme
and wt1.IdTheme <> wt3.IdTheme
and wt1.Cnt > @LevelIgnor
and wt2.Cnt > @LevelIgnor
and wt3.Cnt > @LevelIgnor
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.02.02;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.003 c