Неточное сравнение текста
Дарова, булка :)
Пишу скрипт неточного сравнения строк, типа как в поисковиках используется, например, чтобы пользователь вводил в базу "Зеленая петрушка", а скрипт ему: - ты чо, дурак, вот в базе уже есть "Зелень: Петрушка". Чужие алгоритмы не разбирал, ибо больше времени уйдёт, пока разберусь в чужом коде. Начал думать свой алгоритм...прикинул так: разбивать текст на слова и по 2 символа сравнивать, например, "зе-ле-на-я" + "пе-тр-уш-ка" AND "зе-ле-нь" + "пе-тр-уш-ка" ...и второй проход со смещением на 1 символ: "ел-ен-ая" + "ет-ру-шк-а" AND "ел-ен-ь" + "ет-ру-шк-а" а потом подсчитывать процент совпадения. В общем вроде работает, но большой процент ошибок...посоветуйте на пальцах как доработать код, может добавить проверку по 3 символа, чтобы точнее работало? тока не надо чужой код, лучше посоветуйте на словах :rolleyes: Вот сам код, пишу пока на vba, т.к. база продуктов в экселе: Код:
Public scan1, scan2, x |
Ответ: Неточное сравнение текста
ИМХО strcmp и прочие производные этой функции сравнения строк, как раз и возвращает число выражающее непохожесть строк.
|
Ответ: Неточное сравнение текста
Почитай про Расстояние Левенштейна и почитай смежные темы на хабре.
P.S. Описанный тобой метод - это метод N-грамм. Я использую его на сайте Muza.Name для вычисления схожести текстов местных авторов с текстами известных писателей. Результат можно посмотреть в анкетах пользователей (если там ещё ничего не поломалось при очередном переезде с хостинга на хостинг). |
Ответ: Неточное сравнение текста
почитал про strcmp - она ведь только в С-подобных языках, а я планирую этот алгоритм в пурике использовать...
глянул хабру, формулы какие-то страшные...но заинтересовало, попробую разобраться, спасибо А конкретно по моему говнокоду какие предложения есть? :) Ого, я еще какой-то метод воспроизвел, не зная о его существовании...ну ничего, я люблю изобретать велосипеды :-D |
Ответ: Неточное сравнение текста
Вот например реализация на php стеммера Портера, Можешь с помощью него преобразовать все слова в базе для создания индекса, а потом по ним искать преобразовывая вводимую в запрос комбинацию таким же образом перед поиском
https://github.com/andyceo/PHP-Porte...m_Ru.class.php Вот и на яве http://www.algorithmist.ru/2010/12/p...r-russian.html http://ru.wikipedia.org/wiki/%D0%A1%...B5%D1%80%D0%B0 |
Часовой пояс GMT +4, время: 18:34. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot