Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение темы текста по словарю.


Страницы:   1 2

NBAH1990 ©   (2013-03-19 17:02:00) 

Доброго времени суток, уважаемые знатоки. По работе приходится перебирать иного текста и распределять его в 2 группы "То что надо " и "То что не надо". Проведя не хитрый анализ множества текстов из серии "То что надо" вывел словарь со словами чаще всего появляющимися в подобных текстах. Теперь хочу написать маленькую прожку, которая обращаясь к словарю определяла бы принадлежность текста к группе "То что надо" или отбрасывала в "То что не надо". Не знаю как бы правильно составить алгоритм. У кого какие идеи? Мб изначально не верной дорогой пошел?


O'ShinW   (2013-03-26 19:27:00) [1]

сбросил.
Что забыл - сбросил без данных, а без заранее заданных тем, нечего будет выбрать
поэтому
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


Ega23   (2013-03-26 10:18:00) [2]


> О природе что-то - это в  смысле Пришвин, Бианки, Паустовский
> - кого вспомнил, короче. Короткие рассказы.

BBC Wild с закадровым Дроздовым - наше всьё!


> Скрипт на создание БД, если интересно, приложу

Кинь всё на o.v.egorov гмаил.ком


O'ShinW   (2013-03-26 09:12:00) [3]

хотя.. что там показывать -
Delphi - мемо, комбобокс с темами, две кнопки: Обучение, Анализ.
Обучение - Вставляем в мемо, выбираем тему, жмем Обучение.
Анализ - Вставляем в мемо, жмем Анализ, тут же в мемо читаем результат
Все на MSSQL сервере (ExpressEdition), через хранимки.
Скрипт на создание БД, если интересно, приложу


O'ShinW   (2013-03-26 08:44:00) [4]

не, не, не
О природе что-то - это в  смысле Пришвин, Бианки, Паустовский - кого вспомнил, короче. Короткие рассказы.
именно >  в смысле природы "Хорошо в деревне летом"

> Что-то про науку
Это статьи с гугла по поиску "наука" (в основном РАН, элементы ру)

> Компьютерная тема
Этот из потрепаться выборочно, ixbt, выборочно microsoft.com

примерно по 50 статей каждой тематики было загружено в БД, разобрано по словам более 3х символов, уникально составлен словарь, полностью кросс-таблица.

Проверочный текст разбирается так же,  по словам более 3х символов, в отдельную таблицу.
Далее к ней три раза(по числу тем) джойнится кросс-таблица по айдишнику слова(тут же подзапросом удаляются слова, которые во всех темах встретились более N раз ).
Наружу торчат айдишники тем. Группируем по ним, суммируя частоту повторений слова по теме. Это и есть результат.

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


clickmaker   (2013-03-25 22:33:00) [5]

любую тему можно оценить как "что-то про науку" и "о природе" )


Inovet   (2013-03-25 22:26:00) [6]

> [21] O'ShinW ©   (25.03.13 22:21)

Про науку и о природе не близкие темы? Не в смысле природы "Хорошо в деревне летом", а природы как мироустройства.


O'ShinW   (2013-03-25 22:21:00) [7]

Получилось, вроде :)
Алгоритм не изменился

Взял три темы():
1. Про компьютеры
2. О природе что-то
3. Что-то про науку

Базу(обучение) заполнял первыми попавшимися статьями ( из гугла)

Например, кусок статьи о делении ядер урана на википедии оценена как
Что-то про науку 78
Компьютерная тема 15
О природе что-то 14

Оценка прикола http://ithappens.ru/story/10750
Компьютерная тема 64
Что-то про науку 26
О природе что-то 22

для первого приближения пойдет :)

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

оценен как
Компьютерная тема 7
О природе что-то 4
Что-то про науку 3

:)


O'ShinW   (2013-03-20 12:50:00) [8]

А кого не сжечь, тому два года расстрела


Ega23   (2013-03-20 12:34:00) [9]


> а что насчет такой темы текста:

Сеошников - на кол и сжечь!


Медвежонок Пятачок   (2013-03-20 12:27:00) [10]

а что насчет такой темы текста:

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


Ega23   (2013-03-20 12:18:00) [11]


> Согласен. Зато просто, что бы попробовать


Не, ну понятно, с чего-то надо начинать. А морфология - это вообще задница. Ну и правописание - тоже нужно учитывать, всякие там "расстояния Ливенштейна" прикручивать. Интересно, но трудоёмко, шо писец.


O'ShinW   (2013-03-20 12:09:00) [12]


> Скользкий момент.

Согласен. Зато просто, что бы попробовать


O'ShinW   (2013-03-20 12:09:00) [13]


> Потом пишет в кросс таблицу
> id_слова, id_темы, кол-во раз в тексте

еще плотность = кол-во этого слова в тексте / на общее кол-во слов в тексте

а вот с определением ВЕСА..
После прогона многа текстов -
Или сидеть, обучать - выбрал тему, программка показывает слова к ней относящиеся, руками проставляешь веса
Или не понятно пока как..


Ega23   (2013-03-20 12:05:00) [14]


> при достаточном кол-ве испытаний (продолжительном обучении)
> уже можно не учитывать.
> Пусть считаются разными.

Скользкий момент.


Ega23   (2013-03-20 11:53:00) [15]

Вооот.
Вот Влад как раз труъ-семантический анализ описал. :)


O'ShinW   (2013-03-20 11:51:00) [16]

я ж говорю - берешь текст, читаешь глазами, даешь название руками
нажимаешь "записать"

Далее, программка разбирает текст по словам, если нет еще слов в словаре - добавляет.

Далее пишет темы в другую таблицу

Потом пишет в кросс таблицу
id_слова, id_темы, кол-во раз в тексте

Скормив таким образом несколько текстов(десятков, или сотни), (фактически, произведя обучение(задумались о нейронке, кстати)) имхо, получим неплохую статистику слов по темам.

Прибили(простым запросом) слова попадающие в разные темы, с кол-вом более [много].

Далее скармливаем очередной текст, смотрим каких слов попало больше. В случае со "своя/чужая" тема трудностей особых не видать, вроде.
Причем,
>> "интернет", "Интернет", "интернета" - суть одно слово
при достаточном кол-ве испытаний (продолжительном обучении) уже можно не учитывать.
Пусть считаются разными.

Вчера начал писать, на досуге
Задачу взял шире - определить из N тем, к какой более относится.
Если не брошу :), сообщу что получается


Лингвист   (2013-03-20 11:32:00) [17]

> NBAH1990
> все
> ваш
> чтоб

Есть опасение, что эти и им подобные слова будут встречаться чуть ли не во всех текстах. Кстати, Вашим "семантическим анализом" именно это и подтверждается - потому что никакой это не семантический анализ, а просто подсчет частоты использования (что, собственно, Вы сами и написали).

Вывод - общеупотребительные слова (предлоги, местоимения и т.п.) вообще не должны учитываться (то есть, их вес должен быть нулевым).


Ega23   (2013-03-19 19:21:00) [18]

1. "индекс цитируемости" и "вес" - это несколько разные вещи. Есть наиболее часто встречаемые слова. Есть "весомые" слова. Весомые могут встречаться реже, но они - более важные.
2. "интернет", "Интернет", "интернета" - суть одно слово. "Услуга", "услуга", "услуг", "услуги", "услугой" и т.д. - тоже. Т.е. морфологию надо учитывать, по-хорошему.
3. Ты уверен, что ты именно "семантический анализ" провёл? Есть у меня в этом некие сомнения...


NBAH1990   (2013-03-19 18:16:00) [19]

Вот ещё вариант в голову пришел. Есть у меня результаты анализа Всех нужных текстов, и есть результаты анализа текущего текста. Мб как-то сравнивая таблицы искать степень соответствия?


NBAH1990   (2013-03-19 17:59:00) [20]

Я сделал проще, собрал много сообщений по теме в один большой текст и провёл семантический анализ. Вот результаты анализа (Слово, количество в тексте, частота использования в процентах)

интернет  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

таблица не вся, для анализа взял больше сотни сообщений.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо