Разделить текст на логические блоки - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть массив (страховых) договоров (в формате .docx), обработку которых я пытаюсь автоматизировать.

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

Например, это может быть только одно предложение - «Этот контракт покрывает убытки или ущерб в результате пожара» или несколько параграфов текста, в которых дается более подробная информация и объясняется, чтотип огня, который покрывает этот контракт, и какой ущерб возмещается.

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

Плохо то, что это не всегда так, и список может бытьне нумеруются, а располагаются в алфавитном порядке или вообще не перечисляются в словесных терминах: каждая строка начинается с цифры или буквы, введенной пользователем вручную.Или это могут быть не буквы или цифры, а некоторое количество пробелов или табуляций.Или пункты могут быть разделены их названиями, которые напечатаны в ALL CAPS.

Таким образом, визуальное представление структуры варьируется от контракта к контракту.

Поэтому мой вопрос заключается в том, каков наилучший подход к этомузадача?Regexp?Какой-нибудь ML algo?Может быть, есть сценарии с открытым исходным кодом, которые были написаны для решения этой или подобных задач?Любая помощь будет приветствоваться!

1 Ответ

0 голосов
/ 22 марта 2019

Наилучшим способом решения этой задачи является улучшение семантической информации, найденной в документе, с использованием аннотаций, основанных на стилях слов.Например:

  • добавить стиль блока для контрактов
  • добавить стиль абзаца для заголовка контракта
  • добавить стиль абзаца для элементов контракта

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

Затем можно обработать файл .docx с помощью библиотеки Python.или, может быть, преобразовать его в libreoffice и затем обработать.

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

...