29.05.2009, 00:46 | #1 |
Специалист
|
Алгоритм определения тематики сайтов (решение)
Привет всем.
Наконец сегодня додумал до логического конца алгоритм определения тематики и начал реализацию. Алгоритм построен на теории нейронных сетей, и нужен мне в корыстных целях направленных на яндекс. Ценность алгоритма в том - что это будет первый алгоритм определения тематики сайта, который сможет реализовать почти любой программист. Надеюсь кому-нибудь пригодится. Этап 1: Определение ключевых слов сайта 1) Получаем страницу 2) Убираем теги, и все кроме букв и пробелов. Знаки препинания заменяем на пробелы. (Цифры удалить!!!) 3) Разбиваем весь текст на слова, то есть делаем одномерный массив слов. 4) удаляем слова меньшие 2 букв 4) Каждое слово прогоняем через стеммер. Я использую алгоритм Портера. Для тех кто не в курсе стеммер - это программа которая отбразывает от слова суффиксы и приставки, оставляя корень. Алгоритм Портера слаб, но пока сойдет. Как найду морфологический словарь - сменю на него. 5) При прогоне через стеммер создаем новый ассоциативный массив, где ключом будет само слово, а значением колличество повторений слова. Например (”Yandex” =>3, “Тиц” =>5) и т.д. 6) Упорядочиваем ассоциативный массив по убыванию колличества повторений. 7) Удаляем все слова повторяющиеся менее трех раз (колличество под вопросом). 8) В итоге мы получили ключевики сайта с их “тошнотой”. Обычно их на этом этапе 50-100 штук. 9) Проверяем каждый ключевик по базе общих слов не несущих тематику. Например слова: “меня”, “когда”, “сколько” и т.д. Я храню эти слова в отдельной таблице бд и написал отдельный скрипт, который позволяет их сформировать. Обойдя сотню сайтов мы набираем базу самых популярных не имеющих тематику слов. Этап 2: Создаем тематическую базу 1) Для начала в бд нужно создать три таблицы: “слова”, “тематики” и “веса”. Поля таблиц: “Слова”: word_id, word “Тематики”: theme_id, parent_id, theme “Веса”: word_id, theme_id, ves 2) Заполняем таблицу тематик. Я для этих целей пользуюсь базой Ашманова (где-то 5000 тематик). Не использую ЯК, потому что сайты в него заносятся вручную, то бишь робот тут не причем. В нашем случае необходимо знать тематику, которую видит робот на обычных сайтов. Я не говорю что тематика по Ашманову совпадет с тем что определил робот яндекса, но нам это и не нужно. Представьте что по Ашманову у нас вышло “кпк” для донора и акцептора, а по яндексу “сотовые телефоны”.Не все ли равно? 3) Самый трудный момент. Выбираем нужную тему, например “интернет-ресуры”. Из найденных в первом этапе ключевиков страницы выбираем относящиеся к этой теме, и проставляем им коэффициенты, насколько сильно они относятся к данной теме (балл от 0 до 1). Позже будем корректировать это значение, сейчас это не суть важно. Это значение и будет синаптической силой. В сумме они дадут активацию нейрона к данной тематике. В реальности это дает потрясающие возможности даже для многозначных слов. Например слово “лук” можно отнести и к кухне и к “охоте”. Это не повлияет на верность определения. Этот момент трудный, потому что придется обойти множество сайтов, чтобы собрать хотя бы по 10 слов для каждой тематики. На деле десяти слов вполне достаточно. Итого необходимо 50000 слов, чтобы определить тему сайта по Ашманову. Кто-то скажет это много, но в день при нормальной оболочке можно легко собрать тысячу слов. Итого 50 дней пассивного труда. 4) Мы создали семантическое ядро для каждой тематики, и указали с каким весом относится к каждой теме определенное слово. Этап 3: Узнаем тему неизвестных сайтов и корректируем результаты 1) Поскольку мы первоначально как-то обучили программу. Теперь покажу как ей пользоваться. Для неизвестного сайта выполняем этап 1 и узнаем ключевые слова с “тошнотой”. В результате полученные примерно 30 ключевиков проверяем по базе к каким темам они относятся и какие коэффициенты имеют. Примитивный пример: Текст “Лук и стрелы это лук”. Лук тошнота 2. Тема “охота” вес 0.7. Тема “кухня” вес 0.6. Стрелы тошнота 1. Тема “охота” вес 0.8. Находим активацию нейрона: К теме охота: 0.7*2+1*0.8=2.2 К теме кухня: 0.6*1=0.6 Поздравляю - тема текста определена. Здесь также можно определить в % насколько текст относится к другим темам. 2) Возможно в прошлом этапе неверно проставлены коэффициенты и их нужно корректировать. Для этого необходим отдельный интерфейс, где выбрав тематику видишь все ключевые слова по ней с их коэффициентами. Изменяя коэффициенты мы усиливаем значение того или иного слова в определенной теме. При анализе множества сайтов мы приходим к стабильному результату. Результат. Данный алгоритм не нуждается в обсуждении его необходимости. Это каждый решает сам для себя. Мне плевать с колокольни если он вам не нужен Для тех кто хоть что-то понял о том что я сказал - интересно услышать ваши мысли о его эффективности, и возможностях улучшения. P.S. для определения тематики сайта, а не отдельной страницы легко можно брать ключевики с n страниц P.P.S. На данный момент алгоритм реализован технически. Он успешно определяет 16 тематик. Обучение новой тематике занимает где-то 10 минут. Последний раз редактировалось kotofeich; 29.05.2009 в 00:53. |
29.05.2009, 00:54 | #2 |
фОшЫст
|
Во как. Спасибо, Котофеич.
Видел твою тему на сёрче, вот теперь ты и у нас появился. А по поводу тематики - нужен кропотливый анализ. И если он подтвердится...я буду в шоколаде))
__________________
|
29.05.2009, 01:13 | #3 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 374
|
|
29.05.2009, 01:19 | #4 |
фОшЫст
|
Последний Герой, не думаю, что подобное решение будет общедоступным и бесплатным..
Но, если алгоритм себя подтвердит (а у меня есть информация, что он результативен) - я первый покупатель анализатора.
__________________
|
29.05.2009, 01:26 | #5 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 374
|
|
29.05.2009, 01:38 | #6 |
фОшЫст
|
а зачем? ето его ноу хау. он потратил на его изучение время. А время - деньги.
__________________
|
29.05.2009, 01:44 | #7 |
пусто
Регистрация: 28.10.2007
Сообщений: 3,115
Вес репутации: 375
|
kotofeich, слизал с моей теории и прогоняет, прогоняет....
__________________
|
29.05.2009, 01:49 | #8 |
фОшЫст
|
Администрация 6-ой палаты, Не, Жека, етот чёрт поумнеее тебя на порядок, извини)
__________________
|
29.05.2009, 01:55 | #9 |
пусто
Регистрация: 28.10.2007
Сообщений: 3,115
Вес репутации: 375
|
не извиню
__________________
|
29.05.2009, 09:44 | #10 | |||
Специалист
|
Цитата:
Цитата:
Цитата:
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
алгоритм определения продажных ссылок | bla-bla-bla | Курилка | 27 | 03.06.2009 11:24 |
Куплю ссылки с сайтов финансовой и бизнес тематики | bizlinki | Деловое сотрудничество | 2 | 20.04.2008 23:49 |
Предложение: скопировать тематики сайтов из ЯК | 9dVSnVN6 | Пожелания пользователей системы | 1 | 24.06.2007 01:11 |
Часовой пояс GMT +3, время: 08:05.