Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
21.01.2020, 13:44
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
пытаюсь реализовать нечеткий поиск. Нашел статью Пробовал триграммы, но результат неутешительный. Пробовал использовать кастомный metaphone: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Код: sql 1. 2. 3. 4. 5. 6. 7.
Результат также слабый. Т.е. даже при изменении порядка следования символов в слове, уже выдает слабый результат. Если же еще и заменить пару соседних букв,рядом расположенных на клавиатуре, совсем печально. Может я его как то неправильно готовлю? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.01.2020, 20:33
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
Troglodit, У себя реализовывали через алгоритм расчета расстояния по алгоритму дамерау левенштейн для каждой компоненты ФИО. при этом допускается расстояние не больше 1 (грубо говоря не более одной опечатки). + Дополнительный словарь наиболее частых опечаток. для ускорения поиска (особенно фамилий) принято что пользователи в первой букве ни когда не ошибаются. Так как алгоритм самописный и перекочевал из оракла не оптимизированным время поиска довольно большое (база ~140тыс ФИО) около 0,5-1 сек. С точки зрения оператора не так много. Когда точности поиска стало не достаточно (стали приходить документы где есть только Фамилия И.О. + должность) добавили разбор должностей. Должность разбивалась на лексемы, из нее выкидывались части в которых чаще всего делали ошибки (указание категории или двойные должности), затем убирались малозначимые слова (определяются опытно), затем убираются все гласные. Так же находим расстояние по дамерау-левенштейну (не более 1). Естественно должности смотрим только по тем у кого подходят ФИО. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.01.2020, 23:35
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
Swa111, Спасибо за ответ. Я пробовал использовать стандартную levenshtein, но результаты печальные, даже хуже чем все остальное. В моем случае не фио и порядок слов может быть разным, да и ошибок более чем 2. Но в моем случае те варианты, которые я пробовал давали плохой результат даже в когда все символы введены верно, но не верен порядок. Прмире. Так же возможны стандартные ошибки в виде ввода похожих букв разных алфавитов. Как то ограничить как с ФИО вряд ли получиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.02.2020, 15:45
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
"нечеткий поиск" - это что? это типа гугловского "Did you mean?" - поиска с опечатками? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.02.2020, 22:59
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
Ролг Хупин, Да что то вроде этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.02.2020, 01:00
|
|||
---|---|---|---|
нечеткий поиск |
|||
#18+
Troglodit, результат similarity() имеет смысл, если длины сравниваемых строк хотя бы по 20—25 символов и примерно равны между собой. Эта функция хороша, если вам нужно найти предложения, чем-то похожие на заданное, напр., с теми же словами в другом порядке, с заменой одного—двух слов из многих, с парафразом и т.п. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
levenshtein() же обычно хорош, когда у вас есть таблица всех словоформ, чтобы предлагать только то, что у вас точно есть. Для нечеткого поиска вам, видимо, нужно построить «нечеткий индекс» — сделать что-то типа FTS по вашим метафонам. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.02.2020, 11:41
|
|||
---|---|---|---|
|
|||
нечеткий поиск |
|||
#18+
Troglodit Ролг Хупин, Да что то вроде этого. Тогда надо немного с другого конца заходить, читаем Норвига https://norvig.com/spell-correct.html Я когда-то по его алгоритму сделал корректор для SQL Server ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=1994841]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 140ms |
0 / 0 |