170 похожих чатов

Всем привет! Делаю спеллчекер поисковых запросов и столкнулся со сложностями. Провел

анализ одного оупенсорс спеллчекера по следующим тестам:
Данные - 1500 популярных запросов за некоторый интервал времени, каждый запрос был разделен на слова (по пробелам), приведен к нижнему регистру, удалены слова содержащие английские буквы, цифры и длина которых меньше 4 символов.
Тест 1 - удаление одной случайной буквы:- Для каждого слова генерируется 3 различных варианта, где каждый вариант - исходное слово с удаленной одной буквой.
- Все измененные слова были обработаны при помощи spellchecker.- Были получены следующие метрики: accuracy = 0.43 (доля совпадений исправленного слова с исходным) и среднее расстояние Левенштейн = 0.85 (между исправленными словами и исходными). Расстояние Левенштейна между опечатками и исходными словами = 1 (удаление одной буквы).
Тест 2 - замена случайной буквы на букву, расположенную рядом на клавиатуре:
- Для каждого слова генерируется 3 различных варианта, где каждый вариант - исходное слово с заменой одной случайной буквы.- Все измененные слова были обработаны при помощи spellchecker.
- Были получены следующие метрики: accuracy = 0.61 (доля совпадений исправленного слова с исходным) и среднее расстояние Левенштейн = 0.48 (между исправленными словами и исходными). Расстояние Левенштейна между опечатками и исходными словами = 1 (удаление одной буквы).

Это очень плохое качество на мой взгляд. Подскажите, плес, как можно реализовать спеллчекер на основе именно корпуса документов, чтобы он исправлял запросы как надо, а не как не надо?)

4 ответов

14 просмотров

https://habr.com/ru/companies/sbermegamarket/articles/673614/ Мы так делали

когда дадут дообучать (или уже можно?) - будет можно сделать чтобы хорошо работало и для специфических датасетов (типа названий товаров)

(хотя бы для генерации хорошего датасета для обучения другой более легковесной модели)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта