Официальный сайт студ.городка НГТУ
Программирование и БД » Методы исправления опечаток 

#1  07.11.06 15:01

KaV
Профиль

Методы исправления опечаток

Кто-нибудь сталкивался с подобными задачами?
Не предполагается пользоваться словарем (Зализняка и прочих), т.к. необходимо исправлять ошибки в словах, специфичных для конкретных отраслей. Таких словарей не существует, а делать их руками - нерационально. Word со своей морфологией тоже не поможет.
Задачу можно решить с помощью контент-анализа: есть большая частота встречаемости правильного слова и куча слов-опечаток (выбросы). Их необходимо привести к правильному слову.
Опечатки могут быть разного вида: пропуск символов, наличие лишних символов, пропуск/наличие пробела, не тот язык ввода (транслитерация) и т.п.
Кол-во ошибок в слове я уже научился определять (т.е. насколько символов различаются сравниваемые слова).
Вопрос состоит в следующем: как определять, действительно ли слово является опечаткой или оно является маловстречаемым правильным словом? Т.е. хочу узнать, может быть существуют какие-либо правила, формулы, отношения и т.п. в обработке текста, с помощью которых можно ответить на мой вопрос?
Понимаю, что такой детерминированный алгоритм не будет работать безошибочно, но мелкие косяки на больших массивах простительны.

Согласитесь, задача на сегодняшний день очень актуальна.

Offline

#2  07.11.06 15:33

Re: Методы исправления опечаток

нет ни чёткой формулы,ни чёткого правила,потому как это лингвистика,метрика,морфология и тд.
На заре "падонкофской" лексики на яндекс пожаловались:
"...однако меня все равно не устраивает, когда в ответ на запрос "афтор"
с одной опечаткой мне говорят, что возможно следует писать "афтар",а не "автор""...
на что И.Сегалович парировал:
"[автор] и [афтар] — два разных слова, они принадлежат к двум разным пластам языка, имеют разную сочетаемость. По ассоциациям запросов видно, что такую опечатку делают т.н. "падонки", которые намеренно пишут это слово через "ф". Нормальный человек не поставит случайно вместо "в" букву "ф" — и по звучанию не похоже, и расположена она на клавиатуре не рядом. Иными словами замену [афтор] -> [афтар] мы считаем вполне адекватной. Более того, по-видимому, орфографической ошибкой является написание [автор жжот]. Правильно [афтар жжот]"."
)))))))

Исправлено iDrum (07.11.06 15:41)

Offline

#3  07.11.06 15:38

Re: Методы исправления опечаток

[удалил]

Исправлено iDrum (07.11.06 15:43)

Offline

#4  07.11.06 15:42

Re: Методы исправления опечаток

но вот есть алгоритм:
Алгоритм поиска с учетом опечаток (поиск по сходству)
Поиск по сходству осуществляется так:
   1. Назовем "словарным" слово, которое удается распознать по словарю морфоанализа и нормализовать. Пусть слово запроса "словарное". С помощью словаря морфоанализа слово опознается и генерируется список всех возможных форм этого слова. Далее сканируется словарь базы. Если очередное слово базы "словарное", то оно считается подходящим только при полном совпадении со словом запроса (то есть слово "арена" не будет выдано на запрос сходства с "аренда", хотя эти слова схожи). Если же слово из базы не "словарное", то оно выдается, если схоже с какой-либо из форм искомого слова. Так найдутся те слова, которые не были опознаны (и поэтому не нормализованы) во время создания базы из-за ошибки и в корне слова, и в окончании.
   2. Пусть слово запроса не "словарное" (не опознано по словарю морфоанализа). Строим варианты нормализации этого слова, исходя из окончания (этот процесс называется псевдонормализацией). Далее сканируем словарь базы. Если очередное слово базы не "словарное", то для него также строим варианты нормализации, если же слово "словарное", оно уже нормализовано. Далее производится сравнение по сходству вариантов нормализации слова из запроса и слова из базы. Если сравнение сработает, слово годится. При этом могут не опознаться те слова, у которых ошибка в окончании, так как псевдонормализация "несловарного" слова производится по его окончанию.

Исправлено iDrum (07.11.06 15:44)

Offline

#5  07.11.06 15:49

Re: Методы исправления опечаток

Offline

#6  08.11.06 10:36

KaV
Профиль

Re: Методы исправления опечаток

iDrum,
Опять же алгоритм работает с базой.  Нужен "умный" алгоритм, который способен без базы определять ошибочные слова посредством контент-анализа (сказано выше).

Ссылка у меня не заработала.

Offline

#7  08.11.06 11:13

Re: Методы исправления опечаток

фигасе,это какие мощи нужны будут..
а сылка не работает наверное потому что у тя инета нет:)

Offline

#8  08.11.06 12:40

KaV
Профиль

Re: Методы исправления опечаток

заработала )
поэтому не нужно осуществлять перебор всех возможных комбинаций

Offline

#9  08.11.06 13:21

Re: Методы исправления опечаток

на чём и как реализовал?

Offline

#10  13.11.06 13:55

KaV
Профиль

Re: Методы исправления опечаток

iDrum написал(а):

на чём и как реализовал?

Сравнение слов?

Offline

#11  20.11.06 17:17

Maq
Профиль

Re: Методы исправления опечаток

KaV,

KaV написал(а):

заработала )

iDrum написал(а):

на чём и как реализовал?

наверное так))


мой ответ: ispell - и все))
зачем изобретать вилосипед?


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

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

Offline

Программирование и БД » Методы исправления опечаток 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.084 сек.
Выполнено 14 запросов.