Originally posted by Ashmanov: С другой стороны, мы с товарищами за свою жизнь сделали десяток разных нечётких искалок, в том числе для Word. Как оно появляется, имеем некоторое представление.
В смысле стандартный русский вордовый спеллер вы делали? (Это так, любопытство) В частности, в 1998 мы вкручивали Русский Семантический Сервер в известную искалку Excalibur. Там тоже с гордостью продавцы говорили, что вот нечёткий поиск, что по заказу ФБР и т.п. А морфологию и тезаурус тем не менее купили и продают. Потому что нечёткий поиск СЛОВ - marketing bullshit. Не работает Экскалибур. На "свободолюб" находит что бы Вы думали? "долбо#б".
Ну я общался с людьми, которые экскалибур делали: они применили методику, которая для русского языка (да и для английского тоже) не сильно применима (я имею в виду биграммы), совершенно согласен, что она дает порой удивительные результаты.
А потом эскалибур не там продавали. Нужно было задвигать его медикам и химикам. Там-то, как раз все хорошо. Среди десяткjd миллионов (и это не преувиличение) десятиэтажных терминов нужный без нечеткого поиска не найти.
Там, кстати, это не двухпроцентная фича, а насущная необходимостью
А нечёткий поиск ДОКУМЕНТОВ - серьёзная матлингвистика.
Скорее, мета-лингвистика, с ударами в бубен :-)). Кто впереди планеты всей: гугл, а в основу движка, если верить авторским статьям, заложены далеко не супер-идеи, а, скорее, идеи, основанные на здравом смысле. Что ж, здравый смысл победил, да здравствует здравый смысл. Матлингвистика же, пока, увы отдыхает.
Originally posted by AlexA: Прежде всего, спасибо за замечания. Многие из них действительно очень точные. Я думаю, что с двух процентов до большего количества всегда можно поднять. Яндекс же не отказывается от своего спелл-чекера, а какая у него полезность? Тоже, надо думать, исчисляется процентами.
Тут же надо еще и оценивать еще и сложность реализации, а она составляет те же несколько процентов от общей сложности проекта. Так что все не так уже страшно, а AterScan здесь, кстати, совсем не причем. Никто его никуда не приспосабливал.
Originally posted by Ashmanov: А зачем убиваться-то? Какой физический смысл этой функции для пользователя? разве что самому размяться, молодую силушку потешить.
Здесь с уважаемым Игорем Станиславовичем не согласиться трудно. Идея понятна: взять работающий инструмент (AferScan) и приспособить его для решения другой задачи. Полезность же этой конкретной реализации оценена: 2% (С Ашманов, по-моему, <1%). Стоит ли играть на таких малых величинах?
Originally posted by euhenio: Да никто и не пытается! :-) Речь идет исключительно о поиске похожих слов, пока по крайней мере. Я совершенно согласен с тем, что в чистом виде, когда база большая поиск с учетом похожих слов слишком сильно шумит и может потребовать больших затрат.
______
Все-таки, непонятно, зачем реализовывать поиск опечаток в инете, а не в словаре. Конечно, СЕ должна искать с учетом опечаток, но после расширения запроса вариантами из словаря получим то же самое (А если словарь с тезаурусом, то можно и правильность варианта улучшить, учитывая остальные слова запроса). Словарь почти не растет, а Инет растет быстро => когда база Punto подрастет, такой поиск может быть уже неэффективен с т.зр. затрат времени.
Есть еще и случай, когда "мусор" в голове, а правильное слово в инете. К тому же, опять-таки, вспомним про хеширование/хэширование. Еще пример на эту тему: названия городов (редкие). А это уже не совсем мусор.
Так что мы ищем не совсем с учетом опечаток. К тому же поисковая машина ДОЛЖНА искать с учетом опечаток, как миниуму, она должна предлагать варианты правильного написания, если запрос вернул мало документов.
Еще раз не поленюсь сказать про "большой" спелл-чекер, редкие термины (я, например, искал название лекарства и нашел его именно так).
Про частотность различных опечаток - это нужно, конечно, исследовать, есть достаточно стандартные наборы: опечатки при наборе, распространенные ошибки.
Хочу заметить, что комбинаторный взрыв нам не страшен, потому что эти правила мы будем использовать на этапе ранжирования, когда получен список близких ключевых слов с помощью "грубого" алгоритма.
К тому же мы не генерируем "в лоб" все варианты: некое увеличение времени ранжирования произойдёт, но взрыва явно не будет.
А люди были, есть и будут... работать на благо Штатов, ЕС, Канады и Австралии.
Originally posted by Ashmanov: А всё-таки - зачем нужен этот поиск опечаток?
Тем, кто раскручивает сайты (или свой сайт), нужен анализ запросов, то есть того, что ищут посетители, а не того мусора, что есть в сети. Для такого анализа есть Яндекс-Директ и Рамблер-Ассоциации.
Поисковая же машина не должна искать опечатки, потому что этот поиск сильно ухудшает качество. Объяснение простое: а) полнота не растёт, потому что в подавляющем большинстве случаев на той же странице есть также и правильно написанное то же самое слово. Опечаток, даже в Интернет-текстах, в среднем 2-5 на странице, то есть не более двух процентов. Случай, когда слово сильно релевантно, при этом - одно на странице, да ещё при этом содержит ошибку - просто очень маловероятный.
б) поиск опечаток сильно ухудшает точность. Для проверки возьмите короткое слово в русском Ворде, удалите букву и нажмите F7. Получите список из десятков правильных вариантов. Ну и что - все их искать?
Это я к чему говорю: построение сколько-нибудь нормального подбора вариантов - дело очень трудное и долгое, много прикладной лингвистики придётся изучить. Замена "ц" на "тс" - ещё цветочки. Потом придётся побороться с ранжированием вариантов по наибольшей распространённости (а как узнать частотность?), комбинаторным взрывом и так далее. Капитализация, буква -ё-, вставка пробела, замена похожей латиницы, прочие ужасы.
Для того же подбора для Ворда мы в своё время потратили-таки полгодика. И то - были люди в наше время, богатыри...
А зачем убиваться-то? Какой физический смысл этой функции для пользователя? разве что самому размяться, молодую силушку потешить.
К тому же, фуджитсу и фуджицу - не совсем непохожие слова, как несложно видеть
Originally posted by itman: Просто сначала я сделал вариант "грубого" поиска, а теперь еще собираюсь сделать более тонкое ранжирование, которой таки варианты, как фуджицу и фуджитсу будет учитывать.
n-граммы здесь не причем поиск идет по количеству очепяток в чистом виде.
Просто сначала я сделал вариант "грубого" поиска, а теперь еще собираюсь сделать более тонкое ранжирование, которой таки варианты, как фуджицу и фуджитсу будет учитывать.
n-граммы здесь не причем поиск идет по количеству очепяток в чистом виде.
Originally posted by Vyacheslav Tikhonov:
Originally posted by funsad: Оказывается, "фуджицу" и "фуджитсу" -- совсем непохожие слова. А вот "Гейтс" и "Йейтс" -- ну прямо близнецы! Я даже обознался раз, глядя на изображение йети -- то ли йети, то ли Йейтс. Кстати, не ищите "йети" в Punto, там обитают лишь "сети", "дети", "тети", "лети", "пети" и другие загадочные создания.
Да нет, с этим как раз все понятно. Просто в алгоритме, который использует Пунто, слово "йети" разбивается на буквосочетания из n-букв, например, для n=2 "йе","ет","ти" (называется n-грамматика). Затем идет поиск в словаре, организованном таким же образом и отсортированном в лексикографическом порядке, в результате чего найдены слова: с|ети, д|ети, т|ети, л|ети, п|ети и т.д. В исходном алгоритме, чтобы не возникало такой лажи, начало и конец слова должны помечаться маркерами й| и и|, но это, видимо, еще не сделано. К тому же, буквы "й" и "и" отождествляются, что дает дополнительный шум. Ну а если я где-то не прав насчет того, как это работает, itman меня сейчас поправит.
Ничего удивительного: типичный пример неинформативного запроса. Президентов-то жутко много.
Originally posted by AiK: Сегодня в 12:00 MSK Президент России отвечает на вопросы россиян в прямом эфире. Вопросы можно задать как по телефону, так и через сайт - www.ortrtr.ru Решил я проверить, помогут ли поисковики найти этот сайт. Задал простенький запрос: задать вопрос президенту. Только в Гугле искомый сайт оказался на первой странице.
Атстой пишется через О
[This message has been edited by AiK (edited 24-12-2001).]
Извините, может быть шутка была не очень уместна, но просто никакой Яндекс, Рамблер, итд... свою базу нам "дарить" не будет :-((.
Поэтому приходится, худо-бедно, самим по рунету ползать.
Originally posted by NightWing:
Originally posted by itman: Да мы просто периодически совершаем набеги на серверные яндекса с выгребанием жестких дисков :-)))
Уважаемый itman. Как Вы безусловно знаете, многие поисковки берут индексы у других ботов, ничего удивительного и/или смешного я тут не вижу. Буду благодарен, если кто-то ответит всё-таки "по теме".
Скажем так - это вырожденный случай. Здесь важно не то, что она ИЩЕТ с учетом только одной формы, а что она МОЖЕТ искать с учетом грамматических форм и неточного соответствия запроса документу (в том смысле, что некоторых слов может не быть)
Originally posted by Vyacheslav Tikhonov:
Originally posted by itman: С точки зрения этого определения ЛЮБАЯ поисковая машина осуществляет нечеткий поиск с ранжированием по функции близости.
То есть если поисковая машина осуществляет поиск только по одной форме слова, введенной пользователем (а расстояние Левенштайна здесь точно равно нулю ), это тоже нечеткий поиск?
С другой стороны, мы с товарищами за свою жизнь сделали десяток разных нечётких искалок, в том числе для Word.
Как оно появляется, имеем некоторое представление.
В смысле стандартный русский вордовый спеллер вы делали? (Это так, любопытство)
В частности, в 1998 мы вкручивали Русский Семантический Сервер в известную искалку Excalibur. Там тоже с гордостью продавцы говорили, что вот нечёткий поиск, что по заказу ФБР и т.п. А морфологию и тезаурус тем не менее купили и продают. Потому что нечёткий поиск СЛОВ - marketing bullshit. Не работает Экскалибур. На "свободолюб" находит что бы Вы думали? "долбо#б".
Ну я общался с людьми, которые экскалибур делали: они применили методику, которая для
русского языка (да и для английского тоже) не сильно применима (я имею в виду биграммы), совершенно согласен, что она дает порой удивительные результаты.
А потом эскалибур не там продавали. Нужно было задвигать его медикам и химикам. Там-то, как раз все хорошо. Среди десяткjd миллионов (и это не преувиличение) десятиэтажных терминов нужный без нечеткого поиска не найти.
Там, кстати, это не двухпроцентная фича, а насущная необходимостью
А нечёткий поиск ДОКУМЕНТОВ - серьёзная матлингвистика.
Скорее, мета-лингвистика, с ударами в бубен :-)). Кто впереди планеты всей: гугл, а в основу движка, если верить авторским статьям, заложены далеко не супер-идеи, а, скорее, идеи, основанные на здравом смысле.
Что ж, здравый смысл победил, да здравствует здравый смысл. Матлингвистика же, пока, увы отдыхает.
Прежде всего, спасибо за замечания. Многие из них действительно очень точные. Я думаю, что с двух процентов до большего количества всегда можно поднять. Яндекс же не отказывается от своего спелл-чекера, а какая у него полезность? Тоже, надо думать, исчисляется процентами.
Тут же надо еще и оценивать еще и сложность реализации, а она составляет те же несколько процентов от общей сложности проекта. Так что все не так уже страшно, а AterScan здесь, кстати, совсем не причем. Никто его никуда не приспосабливал.
А зачем убиваться-то? Какой физический смысл этой функции для пользователя? разве что самому размяться, молодую силушку потешить.
Здесь с уважаемым Игорем Станиславовичем не согласиться трудно. Идея понятна: взять работающий инструмент (AferScan) и приспособить его для решения другой задачи. Полезность же этой конкретной реализации оценена: 2% (С Ашманов, по-моему, <1%). Стоит ли играть на таких малых величинах?
Да никто и не пытается! :-) Речь идет исключительно о поиске похожих слов, пока
по крайней мере. Я совершенно согласен с тем, что в чистом виде, когда база большая
поиск с учетом похожих слов слишком сильно
шумит и может потребовать больших затрат.
______
Все-таки, непонятно, зачем реализовывать поиск опечаток в инете, а не в словаре. Конечно, СЕ должна искать с учетом опечаток, но после расширения запроса вариантами из словаря получим то же самое (А если словарь с тезаурусом, то можно и правильность варианта улучшить, учитывая остальные слова запроса). Словарь почти не растет, а Инет растет быстро => когда база Punto подрастет, такой поиск может быть уже неэффективен с т.зр. затрат времени.
Есть еще и случай, когда "мусор" в голове, а правильное слово в инете. К тому же, опять-таки, вспомним про хеширование/хэширование. Еще пример на эту тему: названия городов (редкие). А это уже не совсем мусор.
Так что мы ищем не совсем с учетом опечаток. К тому же поисковая машина ДОЛЖНА искать с учетом опечаток, как миниуму, она должна предлагать варианты правильного написания, если запрос вернул мало документов.
Еще раз не поленюсь сказать про "большой" спелл-чекер, редкие термины (я, например, искал название лекарства и нашел его именно так).
Про частотность различных опечаток - это нужно, конечно, исследовать, есть достаточно стандартные наборы: опечатки при наборе, распространенные ошибки.
Хочу заметить, что комбинаторный взрыв нам не страшен, потому что эти правила мы будем использовать на этапе ранжирования, когда получен список близких ключевых слов с помощью "грубого" алгоритма.
К тому же мы не генерируем "в лоб" все варианты: некое увеличение времени ранжирования произойдёт, но взрыва явно не будет.
А люди были, есть и будут... работать на благо Штатов, ЕС, Канады и Австралии.
А всё-таки - зачем нужен этот поиск опечаток?
Тем, кто раскручивает сайты (или свой сайт), нужен анализ запросов, то есть того, что ищут посетители, а не того мусора, что есть в сети. Для такого анализа есть Яндекс-Директ и Рамблер-Ассоциации.
Поисковая же машина не должна искать опечатки, потому что этот поиск сильно ухудшает качество. Объяснение простое:
а) полнота не растёт, потому что в подавляющем большинстве случаев на той же странице есть также и правильно написанное то же самое слово.
Опечаток, даже в Интернет-текстах, в среднем 2-5 на странице, то есть не более двух процентов.
Случай, когда слово сильно релевантно, при этом - одно на странице, да ещё при этом содержит ошибку - просто очень маловероятный.
б) поиск опечаток сильно ухудшает точность. Для проверки возьмите короткое слово в русском Ворде, удалите букву и нажмите F7. Получите список из десятков правильных вариантов. Ну и что - все их искать?
Это я к чему говорю: построение сколько-нибудь нормального подбора вариантов - дело очень трудное и долгое, много прикладной лингвистики придётся изучить. Замена "ц" на "тс" - ещё цветочки.
Потом придётся побороться с ранжированием вариантов по наибольшей распространённости (а как узнать частотность?), комбинаторным взрывом и так далее. Капитализация, буква -ё-, вставка пробела, замена похожей латиницы, прочие ужасы.
Для того же подбора для Ворда мы в своё время потратили-таки полгодика. И то - были люди в наше время, богатыри...
А зачем убиваться-то? Какой физический смысл этой функции для пользователя? разве что самому размяться, молодую силушку потешить.
n
По запросу /капри/ страниц
punto - 551
yandex - 8801
y/p=16;
yandex ходит 2 раза в месяц,
=> punto ходит раз в 8 месяцев (max)
соотношение говорит о размере базы, а не
о скорости обхода. все-таки 8 месяцев макс.
это несколько пессиместично.
=> ждите, пока бот punto придет...
[This message has been edited by euhenio (edited 25-12-2001).]
К тому же, фуджитсу и фуджицу - не совсем непохожие слова, как несложно видеть
Просто сначала я сделал вариант "грубого" поиска, а теперь еще собираюсь сделать более тонкое ранжирование, которой таки варианты, как фуджицу и фуджитсу будет учитывать.
n-граммы здесь не причем поиск идет по количеству очепяток в чистом виде.
Просто сначала я сделал вариант "грубого" поиска, а теперь еще собираюсь сделать более тонкое ранжирование, которой таки варианты, как фуджицу и фуджитсу будет учитывать.
n-граммы здесь не причем поиск идет по количеству очепяток в чистом виде.
Оказывается, "фуджицу" и "фуджитсу" -- совсем непохожие слова. А вот "Гейтс" и "Йейтс" -- ну прямо близнецы! Я даже обознался раз, глядя на изображение йети -- то ли йети, то ли Йейтс. Кстати, не ищите "йети" в Punto, там обитают лишь "сети", "дети", "тети", "лети", "пети" и другие загадочные создания.
Да нет, с этим как раз все понятно.
Просто в алгоритме, который использует Пунто, слово "йети" разбивается на буквосочетания из n-букв, например, для n=2 "йе","ет","ти" (называется n-грамматика). Затем идет поиск в словаре, организованном таким же образом и отсортированном в лексикографическом порядке, в результате чего найдены слова:
с|ети, д|ети, т|ети, л|ети, п|ети и т.д.
В исходном алгоритме, чтобы не возникало такой лажи, начало и конец слова должны помечаться маркерами й| и и|, но это, видимо, еще не сделано. К тому же, буквы "й" и "и" отождествляются, что дает дополнительный шум.
Ну а если я где-то не прав насчет того, как это работает, itman меня сейчас поправит.
Ничего удивительного: типичный пример неинформативного запроса. Президентов-то жутко много.
Сегодня в 12:00 MSK Президент России отвечает на вопросы россиян в прямом эфире. Вопросы можно задать как по телефону, так и через сайт - www.ortrtr.ru Решил я проверить, помогут ли поисковики найти этот сайт. Задал простенький запрос: задать вопрос президенту. Только в Гугле искомый сайт оказался на первой странице.
Атстой пишется через О
[This message has been edited by AiK (edited 24-12-2001).]
Извините, может быть шутка была не очень уместна, но просто никакой Яндекс, Рамблер, итд... свою базу нам "дарить" не будет :-((.
Поэтому приходится, худо-бедно, самим по рунету ползать.
Да мы просто периодически совершаем набеги на серверные яндекса с выгребанием жестких дисков :-)))
Уважаемый itman. Как Вы безусловно знаете, многие поисковки берут индексы у других ботов, ничего удивительного и/или смешного я тут не вижу.
Буду благодарен, если кто-то ответит всё-таки "по теме".
Скажем так - это вырожденный случай. Здесь важно не то, что она ИЩЕТ с учетом только одной формы, а что она МОЖЕТ искать с учетом грамматических форм и неточного соответствия запроса документу (в том смысле, что некоторых слов может не быть)
С точки зрения этого определения ЛЮБАЯ поисковая машина осуществляет нечеткий поиск с ранжированием по функции близости.
То есть если поисковая машина осуществляет поиск только по одной форме слова, введенной пользователем (а расстояние Левенштайна здесь точно равно нулю