Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.02.02;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.006 c
15-1376669029
Потапов А.В.
2013-08-16 20:03
2014.02.02
Посоветуйте планшет на андроид


15-1376656788
Иксик
2013-08-16 16:39
2014.02.02
Размер обычной советской шахматной доски


2-1364475755
ttt
2013-03-28 17:02
2014.02.02
Интерфейсы


15-1376130585
MonoLife
2013-08-10 14:29
2014.02.02
Вот такие желптушки.


15-1375869422
Dennis I. Komarov
2013-08-07 13:57
2014.02.02
Barcode Code128