![]() |
|
|
![]()
|
|
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Добрый день/ночь/вечер/утро. Есть такая затея... создать что то наподобие мобильного поисковика новостей и статей. Тоесть с помощью заранее установленных шаблонов-запросов получать информацию с rss, новостных сайтов, блогов.... Но хотелось бы использовать не просто regexp`ы а чтото более "умное", тоесть как то классифицировать ту информацию кот обрабатываетсяы... либо это новость о политикт, либо из мира искусства и т.д. Помогите пожпалуйста, "наставить на путь истинный"
|
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Даже так ...
К примеру есть несколько запросов, у разных пользователей, все обращються к лента.ру... к примеру rss. Эти запросы задаються на первоначальном этапе. В последствии с каждым обновлением новостей, происходит выборка на основе запросов, и если результат удачный - то конктретный пользователь получает результат... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
А каков у вас опыт построения систем подобного уровня? Одного "хочу" в таком деле катастрофически мало...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
опыта нет... Но скажем так .. выбора у меня нет... и делать мне это нужно. И любому совету буду очень благадарен.
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
-------------------- Всем добра |
|||
|
||||
| VictorTsaregorodtsev |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
les, по первому посту (по вопросу КЛАССИФИКАЦИИ ИНФОРМАЦИИ) - есть куча коммерческих реализаций программ агрегирования и автоматической рубрикации новостевых лент. У русских разработчиков есть по меньшей мере пара таких коробочных продуктов для компов. Я подобное делал для патентных баз данных (когда запрос пересылается к нескольким источникам, а потом собранная кучка текстов делится на группы так, чтобы патенты внутри одной группы были более похожи друг на друга, чем на патенты из других групп). Из всей математики-алгоритмики для КЛАССИФИКАЦИИ-авторубрикации - оцифровка текстов с некоторой нормализацией окончаний-словоформ и с отбрасыванием малоинформативных союзов-предлогов, далее построение частотных словарей, ну и обычный статистический алгоритм автоматической классификации. Даже комбинаторных алгоритмов нигде не возникает - например, не нужно использовать расстояние Левенштейна. Хотя да, накрутить-то при желании можно еще много чего сложного, в том числе и обучение по эталонным текстам и их делению на темы.
Подробнее рассказывать не буду - я на подобных проектах деньги зарабатываю ;) |
|||
|
||||
| HistoryEarth |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 23.8.2007 Репутация: нет Всего: нет |
"Просто так" эту задачу не решить, ею сейчас плотно занимаются многие, и коммерческий потенциал таких алгоритмов не очень мал
|
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Так... с помощью пары советов уже нашел направление в кот. надо думать...
Классификация, кластеризация... И выделил один из этапов постороения... Есть несколько наборов небольших текстов (А). Есть набор из категорий (С)... Есть пополняющаяся база текстов, которые заранее определены на эти группы (Б). И нужно набор А раcкидать по набору С. Идея в чем... Собрать статистику по текстам из Б для ВАЖНЫХ слов (либо выкинуть союзы, местоимения, слова связки, и вообще, слова которые "не зависят" от категории, и чем больше таких выкину тем лучше, либо наоборот иметь базу "важных" слов). Можно ли это както организовать, т.е. существуют ли уже готовые алгоритмы, базы таких слов? Так или иначе ... таким способом получиться огромнейшая размерность... Как ее можно понизить? Есть методы факторного анализа - для сокращения чила переменных... но как уменьшить размерность, где каждый "размер" - слово.... ??? Нужно найти что типа зависимости между некотороми из них и объединять в одну.... Это сообщение отредактировал(а) les - 3.5.2008, 13:21 |
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Так... я застрял...
Вся сложность пока что как раз в создании "индекса"/"вектора" для текста... Тоесть набора пар ("слово","количество слова в тексте "). (А) надо или как то "нормализовать" формы слов, или (Б) вытащить что то типа корней ( или частей слова,несущих смысловую нагрузку ). (Б) мне кажеться более компактное.. но менее точно (причем намного), (А) подрузумевает большую базу... Существует ли аналог алгоритма Портера для русского? У кого есть какие мыслишки? Это сообщение отредактировал(а) les - 3.5.2008, 13:54 |
|||
|
||||
| VictorTsaregorodtsev |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
Ничего, "лобовое" решение будет достаточно приемлемым.
"Индекс/вектор" надо просто превратить в частотный словарь - список извлеченных из корпуса текстов слов (за исключением союзов-предлогов-...) надо просто отсортировать и затем НЕ ПОПОЛНЯТЬ при поступлении новых текстов (кроме как при полной перенастройке системы). Тогда сразу каждому слову можно будет поставить в соответствие просто уникальный элемент вектора. И вместо количества слов лучше взять относительную частоту слова именно в этом тексте. Ну, будет каждый текст в итоге закодирован парой тысяч чисел в плавающем формате - так там большинство чисел будет нулевыми и, при необходимости, действительно можно будет сократить размерность факторным анализом анализом главных компонент (principal component analysis, PCA - почти в каждом учебнике по прикладной статистике должно быть описание). Делить по эталонным группам - ну, берете учебник по статистике и вперед. Проще всего считать расстояние (лучше в метрике Махаланобиса) от нового, поступившего на классификацию текста, до "центра тяжести" текстов каждой группы (и считать, что текст будет относиться к ближайшей группе). Можно байесовским классификатором побаловаться. Если группы не будут относительно компактными - то либо непараметический байес, либо метод ближайших соседей. В общем, всё будет упираться в то, насколько хорошо будут отличаться друг от друга группы эталонных текстов. Если предполагать, что им соответствуют существенно разные используемые слова и относительные частоты этих слов в тексте - то надо просто это проверить, т.к. делается быстро. А вот более сложную гипотезу отличия текстов друг от друга придумать гораздо труднее. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Можно пару примеров? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
2VictorTsaregorodtsev.....
Так... Категории (классификация) у меня есть - это будет категории с Лента.ру (число постоянное). Есть достаточное часто пополняющееся (ну плюс уже и существующее) множество с уже наперед заданной категорией (классификацией). Мне нужно собрать приличную статистику по этим текстам/репортажем/заметкам. как я это видел.... -Отбросить стоп-слова, слова-шумы, -нормализовать формы слов (нашел коечто для этого snowball), -пройтись по ВСЕМ текстам в каждой категории, составить частоту выпадения "слов" для ВСЕЙ категории в общем (тут по идеи можно и в относительную сразу перевести, но при этом тогда оставив общее количество слов на случай пополнения, либо абсолютную ) -таким образом вроде бы как и получаются координаты "центра тяжести" для каждой категории. -Так как в новостных категориях (очень причем условных - так например новости о катастрофе в какой-нибудь республикке СНГ можно отнести и "Страны СНГ", к "Международное новости" так и "Природа" - не очень хороший пример, но суть ясна), по тут можно как раз использовать метод к-соседей (который в моем случае скрестился с к-медианой - вроде так), и тут уже по ближненму расстоянию выбирать категории для "неопределившегося" текта. У меня появились вопросики..... - Опять же.. Где найти словарь стоп-слов? самому составить - это не один мясец наверное. - Правильно ли делать уровниловку для текстов в категории... или оставить для каждого текста свой вектор...? Тут тогда и к-соседи выплывут. - Мне кажеться, что просто отностительную частоту в качества значения компонента вектора использовать не достаточно. Есть ли другой алгорит его вычисления. - В противовес стоп-слов не плохо было бы иметь базу "гоу"-слов Это сообщение отредактировал(а) les - 4.5.2008, 10:08 |
|||
|
||||
| dereyly |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
более эффективная система у вас получится если вы будете вычислять не только статистику встречаемости слов, но и статистику взаимного расположения слов для данного текста.
для аббревиатур попробуйте использовать анафоры хотя это чуть о другом, но для анализа текста это будет полезно, правда, это не первостепенно а только может улучшить алгоритм. Имена и Фамилии вполне могут быть гоу словами, хотя зачастую они имеют большой вес сами по себе. PS: естественно для анализа надо использовать только существительные PSS: Можете посмотреть книгу Харламова А.А. или сайт analyst.ru |
||||
|
|||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Вот только хотел по пповоду существительных спросить
Вот только как эти существительные выдернуть? Вот что получилось при отбрасывании некоторых стоп слов и обработки алгоритмомом Портера
|
|||
|
||||
| les |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 24.4.2006 Репутация: нет Всего: нет |
Ох....Чем дальше в лес, тем больше партизан
С существительными поступил как: нашел словарик русского для ispell и к нему suffixes (prefixes не нашел С помощью скриптика сгенирировал несколько существительных....
Словарик обошелся в 4 метра, это явно еще не предел... Теперь делема.... Может эти слова в таком виде и использовать как оси для векторов (резмерность впечатляет Это сообщение отредактировал(а) les - 4.5.2008, 18:05 |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |