Использование моделей Маркова для преобразования всех заглавных букв в смешанные и связанные с ними проблемы - PullRequest
5 голосов
/ 21 декабря 2010

Я думал об использовании методов Маркова для восстановления недостающей информации в тексте на естественном языке.

  • Восстановить все заглавные буквы в смешанном регистре.
  • Восстановление акцентов / диакритических знаков в языках, которые должны иметь их, но были преобразованы в обычный ASCII.
  • Преобразование грубых фонетических транскрипций обратно в нативный алфавит.

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

Я могу использовать Викисловарь как словарь, а Википедию - как корпус, используя n-граммы и скрытые марковские модели для устранения неоднозначностей.

Я на правильном пути? Уже есть какие-то сервисы, библиотеки или инструменты для такого рода вещей?

Примеры

  • Джордж потерял свою SIM-карту в кустах ⇨ Джордж потерял свою SIM-карту в кустах
  • Тантот ил Рит в ущелье. Тантот ил Рит в ущелье.

Ответы [ 2 ]

4 голосов
/ 22 декабря 2010

Я думаю, что вы можете использовать модели Маркова (HMM) для всех трех задач, но также взглянуть на более современные модели, такие как условные случайные поля (CRF). Кроме того, вот некоторые улучшения для вашего Google-фу:

  • Восстановить смешанный регистр в текст во всех колпачки

Это называется truecasing.

  • Восстановление акцентов / диакритических знаков до языки, которые должны иметь их, но были преобразованы в обычный ASCII

Я подозреваю, что марковским моделям придется нелегко. OTOH, помеченные данные обучения бесплатны, так как вы можете просто взять кучу акцентированного текста на целевом языке и убрать акценты. Смотрите также следующий ответ.

  • Конвертировать грубые фонетические транскрипции обратно в нативный алфавит

Это, по-видимому, тесно связано с машинной транслитерацией, которую пытались использовать пара HMM (из работы по биоинформатике / геному).

2 голосов
/ 21 декабря 2010

Я расскажу, как вам это сделать.

Капитализация

Это довольно близко к Распознавание именованных сущностей и является примером«проблема маркировки последовательности».Собственные существительные должны быть заглавными, названия организаций, которые являются аббревиатурами, должны быть заглавными, а затем есть другие примеры, которые выходят за пределы этих категорий.Мне кажется, что это будет сложнее, чем NER, и поэтому простой словарный подход, вероятно, не будет идеальным решением.

Если бы вы использовали скрытую марковскую модель, это было бы равносильно«скрытое» состояние HMM be [lowerCase, initCaps, allCaps] и обучение некоторым данным, которые, по вашему мнению, являются правильными (например, Википедия, но есть и много других источников).Затем вы выводите скрытое состояние для слов, которые, вы не уверены, правильно написаны заглавными буквами.Существует множество библиотек HMM, и я уверен, что вы сможете найти такую, которая соответствует вашим потребностям.Я бы сказал, что попытка НММ - это хороший начальный выбор.

Не ASCII-символы

Как вы уже догадались, более сложная проблема.Если бы вы попытались сделать это с помощью HMM на уровне слов, у вас было бы огромное количество скрытых состояний, по одному на каждое акцентированное слово, которое, вероятно, было бы невозможно обучить.Эта проблема более понятна на уровне персонажа, но вы теряете огромное количество контекста, если вы рассматриваете только предыдущего персонажа.Если вы начнете использовать n-граммы вместо символов, ваши проблемы с масштабированием вернутся.Короче говоря, я не думаю, что эта проблема похожа на предыдущую, потому что количество меток слишком велико, чтобы считать это проблемой маркировки последовательности (я имею в виду, что вы можете, это просто не практично).

У меня естьне слышал об исследованиях в этой области, то опять же я не эксперт.Моим лучшим предположением будет использование общей языковой модели для языка, который вас интересует. Вы можете использовать это, чтобы дать вам вероятность предложения на языке.Затем вы можете попробовать заменить символы с акцентом, чтобы получить вероятности этих предложений и взять наиболее вероятное, или использовать какой-то порог разницы или что-то в этом роде.Вы можете довольно легко обучить n-граммовой языковой модели на большом корпусе определенного языка.

Я понятия не имею, сработает ли это на самом деле, с точки зрения точности или эффективности.У меня нет прямого опыта решения этой конкретной проблемы.

Транслитерация

Не знаю, если честно.Я не знаю, где вы могли бы найти данные для создания собственной системы.После непродолжительного поиска я нашел сервис Google Transliteration (с API).Возможно, он делает то, что вы после.У меня даже недостаточно опыта работы с другими сценариями, чтобы понять, что он делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...