исправление обработки естественного языка для комбинированных слов - PullRequest
6 голосов
/ 16 марта 2011

У меня есть текст, созданный другой системой. Он объединил несколько слов в то, что, как я полагаю, было своего рода побочным продуктом переноса слов. Итак, что-то простое, например, «собака», объединяется в «thedog».

Я проверил строки ascii и unicode, чтобы увидеть, что там не было невидимого символа, но его не было. Сложная проблема заключается в том, что это медицинский текст, а корпус для проверки не доступен. Итак, реальный пример - «... тест для исключения атипичной пневмонии против пневмонии» заканчивается как «... против пневмонии».

У кого-нибудь есть предложение найти и отделить их?

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Это может вас заинтересовать http://www.perlmonks.org/?node_id=336331

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

Если вы можете выделить медицинские слова, а затем выполнить оставшуюся часть строки в общем словаре, вы должны получить приличные результаты.

1 голос
/ 16 марта 2011

Это довольно сложная проблема.

Я бы сказал, что ваш лучший выбор - комбинированный метод.

  1. Поиск "слова с ошибками"
  2. Для каждого из них проверьте, существует ли какая-либо комбинация слов из словаря, которая может это сделать. Вы можете предположить, что слово состоит только из двух слов из-за шага 4 2.1. Если вы получили совпадение, подтвердите с человеком.
  3. Если совпадения нет, попросите человека сказать «это настоящее слово, которого у вас нет», или «это исправление»

В значительной степени это будет продвинутая форма проверки орфографии. Вы могли бы автоматизировать это больше, но я бы не стал рисковать чем-то важным.

Кроме того, вы можете искать шаблоны, когда происходят перерывы. Таким образом, если, например, каждый n-й символ, который должен быть пробелом, не является, вы можете это исправить.

0 голосов
/ 21 марта 2011

Вот что я сделал.Я объединил пару идей и, используя общую методологию начальной загрузки, нашел довольно хорошее решение.Я использовал Python для всего этого.

  1. взял образец отчетов, разложил токены по всем словам и создал таблицу частот.
  2. Для слов с частотой 3 или ниже (частотаиз 4 или более считалось достаточно общим, чтобы быть правильным), я проверял их по буквам, используя пакет PyEnchant (библиотека enchant)
  3. создал медицинский словарь из слов с орфографической ошибкой, на шаге 2, которые были клиническими.
  4. для всех отчетов, создал таблицу частот
  5. для слов с частотой ниже 4, я проверял орфографию каждого с помощью PyEnchant и моего медицинского словаря
  6. Взял каждое слово с ошибкой и разделилих всеми возможными способами.Расколы были проверены на создание 2 правильно написанных слов.сохранялось любое успешное разделение
  7. Для каждого потенциального решения использовалось наиболее взвешенное решение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...