- •1.О языке обработки текста aql
- •2.Требования к обучаемому
- •3.Цели и задачи лабораторной работы
- •4.Сценарий лабораторной работы
- •Раздел 1: Импорт входных документов и словарей
- •Раздел 2: Маркировка ключевых слов в тексте
- •Раздел 3: Разработка экстрактора (aql)
- •Раздел 4: Тестирование экстрактора (aql)
- •Раздел 5: Изучение инструментов
- •Раздел 6: Экспорт результатов
- •5.Подготовка к лабораторной работе
- •7.1.Маркировка фрагментов текста
- •8.Раздел 3: Разработка экстрактора
- •Используя Package Explorer переместите папку dictionaries в
- •9.Раздел 4: Тестирование экстрактора
- •Столбец Span Attribute в центре окна Annotation Explorer показывает имена подразделений, извлеченные экстрактором.
- •9.2.Разработка основных экстракторов для Number, Unit и Revenue
- •9.2.1.В Extraction Plan переместитесь к RevenueByDivision → Labels → Amount. Щелкните правой кнопкой по New aql Statement и выберите Basic Feature aql Statement.
- •9.2.2.В диалоговом окне Create aql Statement введите "Number" как View Name и выберете Regular Expression как type.
- •9.2.3.Необходимо исправить следующие ошибки:
- •9.2.4.Выполните шаги, описанные в прошлом разделе и заполните диалоговое окно для “Create aql Statement”.
- •9.2.6.Обновите шаблон для ‘create view unit’, добавьте флаг следующим образом: “with flags 'IgnoreCase’ ” между строками extract и on
- •9.2.7.Переместитесь в RevenueByDivision → Labels → Revenue. Щелкните правой кнопкой по Revenue и выберите New aql Statement. Выберите Basic Features aql statement.
- •9.2.8.Выполните шаги, утвержденные в прошлом разделе и заполните диалоговое окно для “Create aql Statement”.
- •9.2.10.На данном этапе Extraction Plan должен выглядеть следующим образом:
- •9.3.Разработка дополнительных экстракторов
- •9.4.5.Теперь эти представления могут быть использованы в текущем модуле для экстрактора AmountwithUnit. Переместитесь к aql скрипту этого экстрактора.
- •9.4.6.Добавьте следующие строки кода в самом начале, сразу после названия модуля, для RevenueByDivision_CandidateGeneration, чтобы импортировать требуемые представления в текущий модуль.
- •9.6.Расширение экстрактора для RevenueByDivision: включение информации AmountwithUnit
- •Вернитесь в терминал и запустите браузер командой firefox
- •12.Результаты
9.2.1.В Extraction Plan переместитесь к RevenueByDivision → Labels → Amount. Щелкните правой кнопкой по New aql Statement и выберите Basic Feature aql Statement.
Рис.49 – Создание нового оператора AQL для экстрактора Amount
9.2.2.В диалоговом окне Create aql Statement введите "Number" как View Name и выберете Regular Expression как type.
Установите флажок на „output view” (для добавления оператора output view в шаблон файла aql). Назовите AQL script Number_basic.
Рис.50 – Создание нового оператора AQL для извлечения суммы доходов
Вы получите следующий шаблон в файле Number_basic (там опять будут ошибки, которые следует исправить).
create view Number as
extract regex /<regular expression specification>/
on R.<input column> as match
from <input view> R;
output view Number;
9.2.3.Необходимо исправить следующие ошибки:
а) стандартное выражение, чтобы искать непрерывную последовательность цифр, включающих в себя десятичную точку вместе с другой последовательностью цифр;
б) <input column> для входных файлов является текстом (как мы видели прежде);
в) <input view> имя для входных файлов всегда - Document.
create view Number as
extract regex /\d+(\.\d+)?/
on R.text as match
from Document R;
Стандартное выражение /\b\d + (\,\d {3}) * (\.\d +)?\b/ более устойчиво, для использования чисел, чем простое /d + (\.\d +)?/ показанное выше, хотя простого выражения достаточно для выполнения данного задания.
Словарное правило идентификации “Unit” (billion, million):
В сочетании с числами они полезны, чтобы идентифицировать подсказки Amount RevenueByDivision → Labels → Amount, правой кнопкой выберите New AQL Statement. Выберите Basic Features AQL statement.
9.2.4.Выполните шаги, описанные в прошлом разделе и заполните диалоговое окно для “Create aql Statement”.
Введите "Unit" как View Name и выберите Dictionary в качестве type.
Введите aql script name как Unit_basic и установите флажок “output view”
9.2.5.Файл Unit_basic.aql открыт в области редактора aql, введите следующий синтаксис, чтобы создать словарь для единиц измерения и удалите строку from file ‘<path to your dictionary here>’:
create dictionary UnitDict
as ( 'million', 'billion', 'trillion' ) ;
9.2.6.Обновите шаблон для ‘create view unit’, добавьте флаг следующим образом: “with flags 'IgnoreCase’ ” между строками extract и on
create view Unit as
extract dictionary 'UnitDict'
with flags ‘IgnoreCase’
on R.text as match
from Document R;
output view Unit;
Стандартное правило идентификации Revenue:
Теперь мы создадим другое стандартное выражение, базирующееся на операторе извлечения под названием "Revenue", чтобы идентифицировать ключевые слова. В основном это упоминание об одном только термине revenue или упоминание о термине revenue вместе с упоминанием о первом/втором/третьем или четвертом квартале.
9.2.7.Переместитесь в RevenueByDivision → Labels → Revenue. Щелкните правой кнопкой по Revenue и выберите New aql Statement. Выберите Basic Features aql statement.
9.2.8.Выполните шаги, утвержденные в прошлом разделе и заполните диалоговое окно для “Create aql Statement”.
Введите "Revenue" как View Name и выберите Regular Expression в качестве type.
Введите aql script name как Revenue_basic и установите флажок “output view”
create view Revenue as
extract regex /<regular expression specification>/
on R.text as match
from Document R;
output view Revenue;
9.2.9.<input view> и <input column> должны быть заполнены так, как мы сделали это прежде для number view. Реализация для regex предложена ниже. Финальный экстрактор выглядит следующим образом.
create view Revenue as
extract regex /((.\s*)?(first|second|third|fourth)\s*-\s*quarter)?\s*(revenues?)/
with flags 'CASE_INSENSITIVE'
on between 1 and 5 tokens in R.text
return
group 0 as match
from Document R;
output view Revenue;
