- •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.10.На данном этапе Extraction Plan должен выглядеть следующим образом:
Рис.51 – Extraction Plan после создания всех экстракторов для Basic Features
9.2.11.Убедитесь, чтобы все aql файлы были сохранены. Используйте File → Save (или Ctrl+S) для каждого файла.
Перейдите к Extraction Tasks. Выберите Step 4: Test the Extractor и выберите последнюю опцию, Run the extraction plan on the set of documents that are labeled и щелкните по значку около нее.
9.2.12.Результаты извлечения будут выведены на экран в Annotation Explorer. Двойной щелчок по одной из строк в Annotation Explorer откроет отмеченный документ в окне редактирования. Извлеченные основные характеристики могут быть выделены, если отметить флажки в окне Annotation справа.
Рис.52 – Визуализация всех извлеченных Basic Features
AQL код для экстракторов четырех основных характеристик может быть найден в папке
RevenueByDivision_BasicFeatures. Код для всех файлов упомянут ниже:
create dictionary DivisionDict
from file 'dictionaries/division.dict'
with language as 'en';
create view Division as
extract dictionary 'DivisionDict'
-- with flags 'Exact'
on R.text as match
from Document R
having MatchesRegex ( /\p{Lu}\p{M}*.*/, match);
output view Division;
create view Number as
extract regex /\d+(\.\d+)?/
on R.text as match
from Document R;
output view Number;
create dictionary UnitDict
as ( 'million', 'billion', 'trillion' );
create view Unit as
extract dictionary 'UnitDict'
with flags 'IgnoreCase'
on R.text as match
from Document R;
output view Unit;
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;
9.3.Разработка дополнительных экстракторов
В этом разделе вы извлечете два понятия:
1) Упоминание о доходе (revenue) конкретного подразделения IBM;
2) Представленный доход этого подразделения.
Вы используете две конструкции aql: одну типа Extract Pattern и другую типа Select. Четыре основные характеристики, созданные в предыдущем разделе, будут использоваться в качестве составных частей конструкций.
Отчет о доходе имеет простой шаблон – это символ $, за которым следует число (number), а за ним - единица измерения (unit). Мы будем использовать оператор extract pattern;
Упоминание о доходе подразделения имеет два различных шаблона:
упоминание о названии подразделения (division), за которым следует слово ‘revenue’ в различных вариациях;
либо слово ‘revenue(s)’, после которого следует название подразделения (division).
Мы используем оба шаблона и конструкцию aql ‘union all’ (объединение), чтобы объединить их в единое представление.
9.4.Создание экстрактора AmountwithUnit
На данном этапе вы создадите экстрактор для извлечения суммы дохода подразделения, т.е. число (number) и единица измерения (unit). Например:
$0.3 billion
$1.5 million
Добавим правило Candidate Generation Rule для Amount. Оно использует Sequence Pattern от оператора Extract.
9.4.1.В Extraction Plan переместитесь в RevenueByDivision →Labels → Amount и щелкните правой кнопкой по метке Amount. Выберите New AQL statement и пункт Candidate Generation AQL Statement.
Рис.53 – Создание Candidate Generation
9.4.2.Заполните диалоговое окно как показано на следующем рисунке, не забудьте выбрать “output view”:
Рис.54 – Присвоение имени и типа экстрактора для Candidate Generation
9.4.3.В области редактора появится следующий шаблон в файле AmountwithUnit_concept.aql, а в Extraction Plan появится AmountWithUnit
Рис.55 – Шаблон для извлекающего образца экстрактора
|
Примечание Имена меток учитывают регистр. Будьте внимательны. |
9.4.4.Две основные характеристики, которые вы должны использовать в AmountwithUnit, это Number и Unit. Они являются частью различных модулей, но вы должны импортировать их в текущий модуль и объединить. Это требует кое-каких изменений значений Number и Unit.
Перейдите к Package Explorer и разверните файлы в
myFirstProject/textAnalytics/src/RevenueByDivision_BasicFeatures
Откройте aql script для Number и Unit (Number_basic.aql и Unit_basic.aql). Измените операторы output view <view name> на export view <view name> (см. рис. ниже) в этих двух файлах и сохраните изменения (Ctrl+S).
Рис.56 – Экспорт объектов данных, для использования в других модулях
