Как нам перегуглить Гугл
Mar. 31st, 2004 03:52 pmСтатья из предыдущего поста напомнила мне одну мою старую мысль о том, как можно организовать поисковую машину.
Возьмём какое-нибудь слово, например dog. Сделаем по нему поиск, который вернёт примерно 36,500,000 страниц. Соберём все слова с этих страниц и отсортируем их так, чтобы выявить наиболее часто встречающиеся слова. Из этого списка выкинем 1000 наиболее распространённых английских (в данном случае) слов, таких как: I, who, where, the, a, and, or и так далее. Эти слова не представляют никакого интереса. Из оставшегося списка выберем, например, 100 слов, которые встретились на этих страницах наибольшее количество раз, не являясь при этом самыми распространёнными словами языка. Этими словами скорее всего будут breed, diet, terrier, appearance, hound, skill, pet, animal, owner и тому подобное.
Назовём этот список контекстом слова dog.
Ту же самую процедуру проделаем со всеми словами языка. После всего этого мы получим словарь контекстов всех слов языка, то есть множество списков слов, в окружении которых каждое из слов языка встречается наиболее часто.
Такой словарь может быть интересен уже сам по себе, ведь контексты слов будут пересекаться. Можно, таким образом, находить наиболее контекстно-близкие слова, и наиболее контекстно-далёкие.
Очевидо, что должны организоваться кластеры слов, то есть множества слов, чьи контексты наиболее близки.
На основе такого словаря можно сделать две вещи: каталог и поисковую машину.
Каталог делается так. Берётся страница и определяется объединённый контекст всех её слов, то есть объединение всех контекстов всех слов на данной странице. То же самое проделывается со всеми страницами, которые есть в поисковой системе, и теперь у нас уже есть не просто словарь контекстов слов, а словарь контекстов страниц (или даже сайтов). Теперь эти страницы (или сайты) уже можно организовать в каталог, строя кластеры наиболее контекстно-близких страниц. После этого можно провести обратный поиск, то есть для каждого кластера (или раздела в получившемся каталоге) определить слова, контексты которых наиболее близки (то есть имеют наибольшее количество пересечений) с контекстом кластера. Эти слова и станут ключевыми словами данного кластера (то есть раздела) каталога.
Как организовать поиск. Пользователь набирает в обычной поисковой машине какое-то слово. Машина выдаёт множество страниц. Прежде всего мы находим в нашем словаре контекстов контекст набранного слова или объединённый контекст искомого словосочетания. Теперь осталось только отсортировать все найденные страницы по принципу близости их объединённых контекстов с контекстом запроса. В первых строчках отсортированного списка должны появиться наиболее близкие по смыслу страницы.
Улучшение 1: Для построения словаря контекстов поиск по словами делать не просто по всей сети (набрав слово dog в Гугле), а в тематических каталогах, таких как Yahoo, то есть внутри раздела, имеющего отношение к собакам. Это позволит исключить случайные страницы, как например Dogpile, который Google выдаёт в качестве первого результата поиска.
Улучшение 2: Искать не только отдельные слова, но и всевозможные словосочетания или даже фразы и каждой из них присваивать контекст. Словарь получится гораздо больше, но он будет гораздо более полезен.
Нужно добавить, что я как-то даже проводил такие эксперименты, используя web service, который даёт Google. Данных, конечно, было очень мало, но мне удавалось чётко разделять художественные и технические тексты.
no subject
Date: 2004-03-31 12:38 am (UTC)Они (ее контора - да и вся наука, наверное), в частности, говорят, что контексты одного и того же слова могут быть совершенно разные в зависимости от. Поэтому каждому клиенту ставится некая общая база (с некими общечеловеческими ценностями), а потом добивают конкретикой их дела. Т.е. как разделение синонимов ("коса" - "коса" - "коса"), так и разных смыслов "кот в сапогах" от "кот" и "сапог".
После чего, действительно, делается каталог, в котором определяются узлы, правила "прохождения" узлов, и документы автоматом классифицируются.
Так что, резюмируя, похоже, что универсальная такая машинка - утопия. Но под себя подстроить можно.
no subject
Date: 2004-03-31 03:19 am (UTC)А универсальности, конечно, добиться нельзя, это верно.
no subject
Date: 2004-03-31 04:02 am (UTC)А поиск реализован примерно так: если некая страница "проходит" корневую точку, то она классифицируется, а все ссылки с нее анализируются, учитывая ссылочный текст и содержимое документа. Повторить рекурсивно :-)
Отправной точкой берется google, специализированный портал, юзерская страничка со ссылками и т.п.
А у сложных взаимосвязей есть один минус по сравнению с твоей первоначальной идеей: это не автоматизируется. необходим человек, который скажет, что "пудель" - это подмножество "собака", а не наоборот.
Можно, кстати, подумать над алгоритмом, способным анализировать документы, чтобы прийти к такому выводу. Содержание (table of content): Часть 1 "Собаки", глава первая "Пуделя". Списки, дающие "однородные" элементы и т.п.
Но чем сложнее алгоритм, тем проще будет им манипулировать, по-моему :-) Не в смысле "подгонки под заданный результат", а для создания хаоса, бардака. Что-то в духе нынешних blog-атак на google, только с более смешными результатами.
no subject
Date: 2004-03-31 02:08 pm (UTC)no subject
Date: 2004-03-31 06:01 pm (UTC)Может, и похоже, хотя, мне кажется, моя идея больше low-level: на уровне слов.
no subject
Date: 2004-03-31 06:05 pm (UTC)У того же Гугла технология простейшая - её описание умещается на полстраницы. А работает!
Я подозреваю, что мой примитивный алгоритм может сработать, даже учитывая, что слова имеют несколько смыслов. Но ведь мы имеем дело с необъятным количеством информации! Тут уже может сработать статистика.
no subject
Date: 2004-04-01 12:27 am (UTC)А по поводу: простота google на том и стоит, что ищет он едва ли не посимвольно. Поэтому, когда ты даешь ему "кот в сапогах" в кавычках, ты не получишь ни "кошачьи сапоги", ни "пирожок-сапожок с котятами" ни т.п.
А когда ты тот же самый запрос даешь в "контекстном" поиске, ты ведь можешь искать как первое, так второе, так и третье. Это _принципиально_ не делается автоматом. На это и нужны персональные настройки, базы концептов и пр.
no subject
Date: 2004-04-01 03:10 pm (UTC)гугл и аск дживс имеют похожие алгоритмы и себе
но тут конечно идея дальше и глубже
просто видимо сейчас её трудно воплотить с имеющимися техническими возможностями
no subject
Date: 2004-04-01 04:32 pm (UTC)Просто, мне кажется, никто не думает, что такая идея может эффективно работать.
Это скорее неплохая тема для кандидатской или доктората.
no subject
Date: 2004-04-03 12:08 pm (UTC)