Как показал опыт проектов Акелон, самым эффективным способом извлечения фактов является совместное использование правил и моделей.
Ниже на примере будет разобрано, как привести наименования извлеченных фактов от сервисов Learn и Rules к единому виду.
Для настройки соответствия наименований фактов модели фактам правил необходимо:
Пример пути для установленных сервисов Ario:
"C:\inetpub\Ario\FactExtractorServiceL\fact_extraction\renamers\configs".
Имя класса должно быть на английском языке с заглавной буквы и совпадать с наименованием грамматики для класса документа. Пример для входящего письма: "Letter.json".
Поле "add_fields" является необязательным. Как правило, оно используется для дополнительной типизации одноименных фактов.
Рис. 1. Пример структуры соответствия наименований для класса Letter.
Для настройки соответствия наименований фактов модели фактам правил необходимо:
Пример пути для установленных сервисов Ario:
"C:\inetpub\Ario\FactExtractorServiceL\fact_extraction\renamers\configs".
Наименование файла может быть любым, но лучше придерживать стандарта наименования: {Наименование класса документа}_renamer_grammar_formatter.py
Пример: letter_renamer_grammar_formatter.py
Подробнее о шагах 3
и 4
будет рассказано далее.
Откройте python файл с помощью любого текстового редактора. Первое, что необходимо сделать, это импортировать базовый класс, от которого будем наследоваться.
from formatters.grammar_formatters.renamer_grammar_formatter_base import RenamerGrammarFormatterBase
Теперь нужно разработать свой Python класс для соответствия наименований:
Пример кода для класса документа Letter:
from formatters.grammar_formatters.renamer_grammar_formatter_base import RenamerGrammarFormatterBase
class LetterRenamerGrammarFormatter(RenamerGrammarFormatterBase):
def __init__(self):
super().__init__()
self.name_mapping = {
'NUMBER': ('Document', 'Number'),
'DATE': ('Document', 'Date'),
'SUBJECT': ('Document', 'Subject'),
'NUMBER_BASE': ('Letter', 'ResponseToNumber'),
'DATE_BASE': ('Letter', 'ResponseToDate'),
'CONFIDENTIAL': ('Letter', 'Confidential'),
'ADDRESSEE': ('Letter', 'Addressee'),
'CORRESPONDENT': ('Letter', 'CorrespondentName'),
'RECIPIENT': ('Letter', 'CorrespondentName', 'Type=recipient'),
'TIN_CORRESPONDENT': ('Counterparty', 'TIN'),
'TRRC_CORRESPONDENT': ('Counterparty', 'TRRC'),
'TIN_TRRC_CORRESPONDENT': ('Counterparty', 'TINTRRC'),
'SIGNATORY': ('LetterPerson', 'Name', 'Type=signatory'),
'RESPONSIBLE': ('LetterPerson', 'Name', 'Type=responsible'),
'PERSON_OTHER': ('LetterPerson', 'Name'),
'COUNTERPARTY': ('Counterparty', 'Name'),
'DATE_OTHER': ('OtherDate', 'OtherDate'),
}
Информацию о разработанном классе необходимо добавить в файл formatter.json, расположенному в корне папки сервиса Fact Extractor Base.
В данном файле находится список, в котором указаны 3 словаря. В самый первый словарь с "type": "grammar" в секции "formatters" для необходимого класса документа указать наименование своего разработанного класса соответствий наименований.
Рис. 2. Пример подключения форматера переименования для класса Letter в конфигурации сервиса Fact Extractor Base.
Авторизуйтесь, чтобы написать комментарий