gifts2017

Анализ текста в 1С

Опубликовал Ильдар М (lastcontra) в раздел Обработки - Универсальные обработки

Программа поставляется в виде базы 1С с начальными данными (словарем). Запуск функционала производится из встроенной обработки. Задается исходный текст, на выходе получается список документов с номерами и датами, которые получилось извлечь из исходного текста.

Применение анализа текста

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

- Назначения платежей в платежных поручениях (в назначении платежа часто указывают номер/дату счета или акта, по которому произведен платеж),

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

- Комментарии в документах.

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

Авторская разработка

Предлагается авторская разработка на базе 1С для анализа произвольного текста с заранее определенным словарем слов. Программа достаточно гибкая, прошла тестирование на реальных данных (назначения платежей в платежных поручениях).

Возможности программы:

  • распознавание слов и их сокращений,
  • распознавание кортежей слов (конструкции из нескольких слов),
  • распознавание параметров у элементов, у которых определены параметры,
  • распознавание групп в параметрах (например «по Счетам №444,446,447»),
  • корректное распознавание интервалов чисел в группах (например «100-110,132,134-136»).

Поставка

Программа поставляется в виде базы 1С с начальными данными (словарем). Запуск функционала производится из встроенной обработки. Задается исходный текст, на выходе получается список документов с номерами и датами, которые получилось извлечь из исходного текста.

Функционал данной разработки можно внести в любую конфигурацию 1С (если есть возможность изменения конфигурации) для последующего использования. Данный продукт представляет собой полноценную демо-базу, на которой можно протестировать работу алгоритма и из которой можно перенести функционал на рабочую базу. Данная услуга предоставляется автором, продукт называется "Встраивание функционала анализа текста в произвольную конфигурацию заказчика".

Алгоритм

Вначале работы алгоритма данной программы создается схема с первичным разбиением групп символов на типы данных (текст, число, дата, знаки препинания, скобки, особые символы).

В общих чертах сам алгоритм представляет собой цикл, который состоит из 5 этапов преобразования построенной схемы. Цикл продолжается до тех пор, пока в одном из этапов произошло изменение. При работе обработки есть возможность указать уровень трассировки для просмотра схемы на каждом шаге цикла (0 – без трассировки, 1 – краткая трассировка, 2 – подробная трассировка).

Этапы (по названиям функций):

  1. РаспознатьСлова (слова из словаря, возможно с сокращениями, например «Счет»)
  2. РаспознатьКортежи (например «Счет на оплату»)
  3. РаспознатьЧисла (например «5 045 898.03», выполняется 1 раз)
  4. РаспознатьГруппы (разбор конструкций, разделенных «,» и «;», выполняется если 1-3 этапы прошли без изменений)
  5. РаспознатьПараметры (извлечение номеров и дат документов, например номер счета, выполняется если 1-3 этапы прошли без изменений)

Этапы введены для того, чтобы правильно распознавать группы и параметры из текста. Без этапов не получилось найти общий алгоритм, который за 1 проход правильно распознал документы и их параметры (номер и дату) по платежным поручениям 1 предприятия.

Примеры работы алгоритма

Исходные данные Результат
(189.0306.345.3453.244=18722-45 л/с0444А54440) Опл по сч. на опл №  246-253 ,256от20.04.16г.,Акт №209-213,215-218 от 20.04.16г.,Гос. контракт№334533/38от01.04.16 за транс-экспед.услуги,в т.ч.НДС 2855,97 [лицевой счет]
   Номер: 0444А54440
[счет на оплату]
   Номер: 246-253,256; Дата: 20.04.2016
[акт]
   Номер: 209-213,215-218; Дата: 20.04.2016
[гос контракт]
   Номер: 334533,38; Дата: 01.04.2016
усл по перевоз молочн.продукц.,по сч.на опл262от21.04.16,сч.на опл.270от22.04.16,сч.на опл.273от22.04.16,ГК066654401160000343-0000963-01от04.04.16в тчНДС(18%)2 712,70 [счет на оплату]
   Номер: 262; Дата: 21.04.2016
   Номер: 270; Дата: 22.04.2016
   Номер: 273; Дата: 22.04.2016
[гос контракт]
   Номер: 066654401160000343-0000963-01; Дата: 04.04.2016
(л/с065567730) Оплата за автотранспортные услуги по перевозке грузов, Дог 46 от 24.03.2016  акт 130 от 30.03.16,195 от 15.04.2016, в т.ч. (НДС 18%) - 12661,02 [договор]
   Номер: 46; Дата: 24.03.2016
[лицевой счет]
   Номер: 065567730
[акт]
   Номер: 130 от 30.03.2016,195 от 15.04.2016
СФ 4555 от 15.04.2016, п/п 55444 от 11.04.2016 [счет фактура]
   Номер: 4555; Дата: 15.04.2016
[платежное поручение]
   Номер: 55444; Дата: 11.04.2016
акт 100,102-109,211-233 от 11.04.2016 [акт]
   Номер: 100,102-109,211-233; Дата: 11.04.2016

Дополнительная информация

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

Техподдержка по работе обработки "Анализ текста" в течение 1 месяца с даты покупки включена в стоимость продукта.

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

Скачать файлы

Наименование Файл Версия Размер
Конфигурация и начальные данные для распознания текста
07.09.2016
01 3500 руб.

Моментальная
доставка

Техническая поддержка на 1 месяц
07.09.2016
1000 руб.
Встраивание функционала анализа текста в произвольную конфигурацию заказчика
07.09.2016
5000 руб.

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Валентин Бомбин (so-quest) 08.09.16 10:54
А лексичесеские анализаторы, nfa/dfa/regexp - уже не модно?
2. Ильдар М (lastcontra) 08.09.16 11:41
(1) so-quest, посмотрите раздел "Примеры работы алгоритма". Если ваши анализаторы смогут это переварить, и вы предоставите алгоритм, то готов обсудить, что модно (со своей стороны также предоставлю свой алгоритм). Разработка не претендует на звание единственно верного решения.
3. Валентин Бомбин (so-quest) 08.09.16 12:19
Да, смогут. Если будет формализована задача. Дело в том, что теория синтаксического анализа достаточно проработана.
Второй вариант (если автоматы не нравятся) -специализированный peg парсер, он ваши примеры переварит. Более того - подозреваю что у вас именно он и реализован.




4. Ильдар М (lastcontra) 08.09.16 12:49
(3) so-quest, предоставьте алгоритм, тем более если синтаксический анализ так проработан))
Может быть "специализированный peg парсер", я не знаю что вы имеете ввиду под этим понятием. В моей программе используются только функции 1С работы со строками, никакие скрипты я не использовал.
Кстати, задача не формализована, обратите внимание на примеры, есть сокращения, есть словарь, по которому подбирается наиболее подходящее слово при 1 этапе. С запятыми вообще все не просто (запятая она может отделять целую и дробную часть числа, а может разделять номера документов, там тоже с обоих сторон от запятой будут цифры, а еще может стоять после даты (тоже после цифры года)). С пробелами тоже самое, их может и не быть, а могут быть натыканы в разных местах.
5. Валентин Бомбин (so-quest) 08.09.16 13:31
Смотри, если задача не формализована (ты не можешь описать что надо делать по прочтению символа) - то автоматы будут бессильны. И тогда тебе надо делать стратегию разбора. У себя ты стратегию замаскировал в своих шаблонах и словарях. Можно ее вывести на более высокий уровень за счет использования peg. Достаточно будет к типовым методам сравнения с символом, добавить твой метод поиска по библиотеке.
Насчет просто или нет - все просто. Если есть грамматика. Если нет - то только ручная работа по кодированию этой грамматики в коде.

6. Ийон Тихий (cool.vlad4) 08.09.16 13:42
(5) so-quest, у него в статье указан в качестве целей, парсинг назначения платежей. а там нет грамматики. там даже бух в пределах одной организации может написать, что угодно и как угодно, и в какой захочется последовательности. а поскольку публикация нацелена на других бухов , которым лень что-то делать вручную с назначениями, то смысла делать супер-пупер публикацию с редактируемыми грамматиками, нет. на самом деле тут надо копать не в сторону peg и т.п., а в сторону nlp, другое дело что сама по себе задача довольно специфическая и проще решается ручным трудом(либо ручным трудом плюс некие обработки типа публикации автора).
7. Руслан Миллер (rusmil) 09.09.16 05:53
Интересно, кто и как на практике это использует?
8. Ильдар М (lastcontra) 09.09.16 06:18
(7) rusmil, в транспортной компании платежные поручения привязываются к добавленному документу "Заявка транспортировки". Есть клиенты, по которым выставляется много заявок (особенно по контрактам). При неправильной привязке платежек возникает неправильное распределение оплат по заявкам (или частичных оплат). Из назначения платежа выделяются номера документов, по которым добавляется дополнительный фильтр при распределении суммы платежки по заявкам. Директору важно, чтобы бух-ра меньше ошибались при распределении поступивших денежных средств. Сделано для этого продукта http://infostart.ru/public/460550/