Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

Подскажите аглоритм проверики строки на примерную схожесть   Найти похожие ветки 

 
leonidus ©   (2007-02-05 08:56) [0]

Господа, есть такая задача. Человек вводит в строке поиска некое слово и жмет кнопку "искать" если данное слово на найдено, программа делает предположение что слово набрано с грамматической ошибкой и должна показать юзеру список слов "похожих" на введенное для того, чтобы он мог быстро повторить поиск, собственно так поступает яндекс. Как реализовать подобный алгоритм?


 
Separator ©   (2007-02-05 08:59) [1]

Яндекс поступает не так


 
Думкин ©   (2007-02-05 09:02) [2]

Надо ввести на множестве слов метрику. Близкими считать слова, которые имеют расстояние до заданного меньше некоторого фиксированного предела.


 
novill ©   (2007-02-05 09:04) [3]

Для начала нужен словарь "правильных" слов.
Для введенного слова высчитывается "расстояние" до "ближайщих" слов в словаре, из ближайших выбирается наиболее частоупотребимое.

В данном случае расстояние - количество элементарных операций для получения слова находящегося в словаре.


 
leonidus ©   (2007-02-05 09:25) [4]

>novill словарь правильных слов есть, а как посчитать "расстояние" до ближайших слов, каков в данном случае критерий?


 
pasha_golub ©   (2007-02-05 09:31) [5]


> leonidus ©   (05.02.07 09:25) [4]

Критерий близкорасположенности клавиш на клавиатуре в основном. Ну, и безударные глассные.


 
@!!ex ©   (2007-02-05 09:32) [6]


> leonidus ©   (05.02.07 09:25) [4]

Количество различных символов + смещение.


 
Kolan ©   (2007-02-05 09:44) [7]

Есть дома функция которая в процентах возвращает похожесть строк. С этого форума брал, вечером поищу...


 
novill ©   (2007-02-05 09:55) [8]

> [4] leonidus ©   (05.02.07 09:25)
Это уже мат. теория, я сейчас всю ее не расскажу, лучше посмотри в нете.

Если "на пальцах"
За единицу расстояния берется одна элементарная операция с буквами слова например: замена, перестановка, удаление, вставка буквы. Дальше перебор кобминаций. Нахождение наименьшего количества операций между выбранной парой слов. Обычно расстояние >1 не берут, накладно это.

Еще есть смысл предварительно отфильтровать слова пере расчетом расстояний (например по длине и наличию одинаковых букв)

ЗЫ еще раз рекомендую посмотреть алгоритмы в нете.


 
TUser ©   (2007-02-05 10:16) [9]

Вот тут почитай первую главу
http://monkey.belozersky.msu.ru/~evgeniy/genetext_analizys.djvu (3 метра)


 
leonidus ©   (2007-02-05 11:10) [10]

>novill  а как такой алгоритм по научному называется

>TUser спасибо за ссылочку, сейчас почитаю.


 
leonidus ©   (2007-02-05 11:11) [11]

>Kolan поищите пожалуйста, буду очень признательно


 
Думкин ©   (2007-02-05 11:14) [12]

http://algolist.manual.ru/search/lcs/



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.047 c
2-1170771953
FIL-23
2007-02-06 17:25
2007.02.25
как узнать нажат ли рисунок?


3-1165326993
DmitryNekl
2006-12-05 16:56
2007.02.25
Логические поля в MySQL и Delphi


2-1170760534
seesm
2007-02-06 14:15
2007.02.25
Я не знаю asm


15-1170588148
SkySpeed
2007-02-04 14:22
2007.02.25
Можно ли исп-вать флэшку в качестве доп. опер. памяти в WinXP?


15-1170297594
hmmm
2007-02-01 05:39
2007.02.25
опять куки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский