Реальная мировая статистика опечаток? [закрыто]

Где я могу найти некоторую статистику опечаток в реальном мире?

Я пытаюсь сопоставить входной текст людей с внутренними объектами, и люди склонны совершать орфографические ошибки.
Существует 2 вида ошибок:

  1. опечатки - «Helllo» вместо «Hello» / «Satudray» вместо «Saturday» и т. Д.
  2. Spelling - «Shikago» вместо «Chicago»

Я использую расстояние Дамерау-Левенштейна для опечаток и двойной метафон для орфографии (реализации Python здесь и здесь ). 12260] Я хочу сосредоточиться на Дамерау-Левенштейне (или просто edit-distance ). Реализации учебника всегда используют «1» для веса удалений, вставок, замен и транспозиций. Хотя это просто и допускает хорошие алгоритмы, оно не соответствует «реальности» / «вероятностям реального мира».

Примеры:

  • Уверен, вероятность "
  • Транслитерация Unicode: каково «реальное» расстояние между «Мюнхеном» и «Мюнхеном»?

Какими должны быть веса «реального мира» для удалений, вставок, подстановок и транспозиций?

Даже Очень крутой корректор орфографии Норвиг использует невзвешенное расстояние редактирования.

Кстати, я уверен, что веса должны быть функциями, а не простыми числами (как указано выше

  • Транслитерация Unicode: каково «реальное» расстояние между «Мюнхеном» и «Мюнхеном»?
  • Какими должны быть веса «реального мира» для удалений, вставок, подстановок и транспозиций?

    Даже Очень крутой корректор орфографии Норвиг использует невзвешенное расстояние редактирования.

    Кстати, я уверен, что веса должны быть функциями, а не простыми числами (как указано выше примеры) ...

    Я могу настроить алгоритм, но где я могу «узнать» эти веса? У меня нет доступа к данным в масштабе Google ...

    Должен ли я их угадать?

    РЕДАКТИРОВАТЬ - пытаясь ответить на вопросы пользователей:

    • Мой текущий невзвешенный алгоритм не работает часто сталкиваясь с опечатками по вышеуказанным причинам. «Возвращение в четверг»: каждый «настоящий человек» может легко сказать, что четверг более вероятен, чем вторник, но они оба на расстоянии одного редактирования! (Да, я регистрирую и измеряю свою производительность.)
    • Я разрабатываю поисковую систему NLP Travel, поэтому мой словарь содержит ~ 25 тыс. Пунктов назначения (ожидается рост до 100 тыс.), Временные выражения ~ 200 (ожидается 1 тыс.), Люди выражения ~ 100 (ожидается 300), денежные выражения ~ 100 (ожидается 500), «склеить логические слова» («от», «красивые», « Большинство слов длиной менее 6 букв находятся на расстоянии 1 редактирования от слова, которое находится на расстоянии 1 редактирования от другой словарной статьи.
    • Сегодня, когда на одинаковом расстоянии от ввода есть 2 словарных статьи, я пытаюсь применить различные статистические данные, чтобы лучше угадайте, что имел в виду пользователь (например, Париж, Франция, скорее всего, будет отображаться в моем поиске, чем Париж, Иран).
    • Стоимость выбора неправильного слова заключается в том, что конечный пользователь возвращает полуслучайные (часто нелепые) результаты. и потенциально потерять клиента. Стоимость непонимания немного дешевле: пользователю будет предложено перефразировать.
    • Стоит ли стоимость сложности? Да, я уверен, что это так. Вы не поверите количеству опечаток, которые люди бросают в систему, и ожидаете, что она это поймет, и я могу с уверенностью использовать повышение в Precision and Recall .

    41
    задан Brian Tompsett - 汤莱恩 7 November 2015 в 10:18
    поделиться

    4 ответа

    Возможный источник статистики опечаток в реальном мире - Полная история правок Википедии.

    http://download.wikimedia.org/

    Также вас может заинтересовать RegExTypoFix от AWB

    http://en.wikipedia.org/wiki/Wikipedia:AWB/T

    14
    ответ дан 27 November 2019 в 00:56
    поделиться

    Я бы посоветовал вам проверить алогрифм триграммы . На мой взгляд, он лучше работает для поиска опечаток, чем алгоритм редактирования расстояния. Он также должен работать быстрее, и если вы храните словарь в базе данных postgres, вы можете использовать index.

    Вы можете найти полезную тему stackoverflow о Google "Возможно, вы имели в виду"

    8
    ответ дан 27 November 2019 в 00:56
    поделиться

    Если исследование представляет для вас интерес, я думаю, что продолжение работы с этим алгоритмом, попытка найти достойные веса была бы плодотворной.

    Я не могу помочь вам со статистикой опечаток, но я думаю, что вам также стоит поиграть с python's difflib. В частности, с методом ratio() в SequenceMatcher. Он использует алгоритм, который, как утверждается в документации http://docs.python.org/library/difflib.html, хорошо подходит для совпадений, которые "выглядят правильно", и может быть полезен для дополнения или проверки того, что вы делаете.

    Для программистов на Python, просто ищущих опечатки, это хорошее место для начала. Один из моих коллег использовал и Levenshtein edit distance, и SequenceMatcher's ratio() и получил гораздо лучшие результаты от ratio().

    2
    ответ дан 27 November 2019 в 00:56
    поделиться

    Несколько вопросов для вас, которые помогут вам определить, следует ли вам задавать вопрос «где я могу найти реальные веса»:

    Вы действительно измерили эффективность реализации единого взвешивания? Как?

    Сколько у вас различных «внутренних объектов», т.е. каков размер вашего словаря?

    Как вы на самом деле используете расстояние редактирования, например, Джон / Джоан, Мармадук / Мармедук, Фезерстонхау / Фезерстонхау: это «всего одна ошибка» или разница в 25% / 11,1% / 5,9%? Какой порог вы используете?

    Сколько пар словарных статей находится в пределах вашего порога (например, Джон против Джоан, Джоан против Хуана и т. Д.)? Если вы ввели причудливую систему взвешивания, сколько пар словарных статей переместилось бы (а) изнутри порогового значения во внешнее (б) наоборот?

    Что вы будете делать, если и Джон, и Хуан есть в вашем словаре и в пользователе типы Джоан?

    Каковы штрафы / затраты (1) выбор неправильного слова из словаря (не того, которое имел в виду пользователь) (2) неспособности распознать ввод пользователя?

    Будет ли на самом деле введение сложной системы взвешивания уменьшить вероятность двух вышеуказанных типов ошибок с достаточным запасом, чтобы оправдать усложнение и снижение скорости?

    Кстати, как узнать, какую клавиатуру использовал пользователь?

    Обновление:

    "" "Мой текущий невзвешенный алгоритм часто дает сбой при обнаружении опечаток по указанным выше причинам." Return on Tursday ": каждый «реальный человек» может легко сказать, что четверг более вероятен, чем вторник, но они оба находятся на расстоянии 1 редактирования! (Да, я записываю и измеряю свою производительность)."" "

    Да, четверг -> четверг, опуская" h ", но вторник -> четверг, заменяя" r "вместо" e ". E и R находятся рядом друг с другом на qwERty и azERty клавиатуры. Каждый «реальный человек» может легко предположить , что четверг более вероятен, чем вторник. Даже если статистика, а также предположения указывают на то, что четверг более вероятен, чем вторник (возможно, исключение h будет стоить 0,5 и e-> r будет стоить 0,75), будет ли разница (возможно, 0,25) достаточно значительной, чтобы всегда выбирать четверг? Может ли ваша система спросить: «Вы имели в виду вторник?» или она просто продвинется вперед с четвергом?

    1
    ответ дан 27 November 2019 в 00:56
    поделиться
    Другие вопросы по тегам:

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