Главная страница
    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.255 c
15-1170395300
ZeroDivide
2007-02-02 08:48
2007.02.25
Какую стоит брать видяху под AGP: 7600GS или 1650Pro=1600XT?


2-1170998414
Grover
2007-02-09 08:20
2007.02.25
Проблема с редактором после сохранения файла.


15-1170237500
suturn
2007-01-31 12:58
2007.02.25
Help!!!


3-1165228520
O.O
2006-12-04 13:35
2007.02.25
Узнать значение


2-1170858958
Novichok_new
2007-02-07 17:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский