У меня есть массив (страховых) договоров (в формате .docx), обработку которых я пытаюсь автоматизировать.
В настоящее время под рукой стоит разбить каждый договор на так называемые пункты - частиконтракт, в котором описан какой-либо конкретный риск или исключение из покрытия.
Например, это может быть только одно предложение - «Этот контракт покрывает убытки или ущерб в результате пожара» или несколько параграфов текста, в которых дается более подробная информация и объясняется, чтотип огня, который покрывает этот контракт, и какой ущерб возмещается.
Хорошо, что контракты обычно так или иначе оформлены.В лучшем из возможных сценариев весь контракт представляет собой нумерованный список с элементами и подэлементами, и мы можем просто разделить его по определенному уровню иерархии списка.
Плохо то, что это не всегда так, и список может бытьне нумеруются, а располагаются в алфавитном порядке или вообще не перечисляются в словесных терминах: каждая строка начинается с цифры или буквы, введенной пользователем вручную.Или это могут быть не буквы или цифры, а некоторое количество пробелов или табуляций.Или пункты могут быть разделены их названиями, которые напечатаны в ALL CAPS.
Таким образом, визуальное представление структуры варьируется от контракта к контракту.
Поэтому мой вопрос заключается в том, каков наилучший подход к этомузадача?Regexp?Какой-нибудь ML algo?Может быть, есть сценарии с открытым исходным кодом, которые были написаны для решения этой или подобных задач?Любая помощь будет приветствоваться!