Техническое задание на инструмент морфологической обработки текста

Если вычислительные системы научатся понимать текст, то значительно упростится человеко-машинный интерфейс. В сочетании с системами распознавания речи он (интерфейс) повернется на сто восемьдесят градусов: станет естественным для человека. Направление наук, занимающееся вопросом обработки текста называется «Обработка естественного языка» (NLP — Natural Language Processing). NLP очень обширен и сложен. Но дальний путь начинается с первого шага. Сделаем его. Стоп. А какой шаг надо делать первым?

Разделяй и властвуй

древняя мудрость которая будет актуальна всегда. Что бы обрабатывать текст необходимо разбить его на элементарные части и учится обрабатывать их. Какие элементарные части у текста? Начинаем делить.

Пропустим абзацы. Текст состоит из предложений. Предложения элементарны? Нет. Предложения состоят из слов и знаков препинания. Слова элементарны? Нет. Слова состоят из букв. Буквы элементарны? Да. Их не разделишь на составные части, оставаясь в рамках понятия «ТЕКСТ».

Но и оперируя только буквами мы не создадим нового текста. Ведь слово не просто совокупность букв — слово совокупность буквосочетаний, называемых частями слова, корень, суффикс, окончание, предлог. Именно комбинации частей слова составляют само слово. Зафиксируем.

Элементарные не делимые части текста, это буквосочетания: корень, приставка, суффикс, окончание.

Таким образом нам необходимо научиться разбивать текст до уровня частей слова, Начиная с них, классифицируя и группируя все более комплексные части текста мы, возможно, научимся понимать его. В лингвистике эта часть изучения текста называется морфология. На наше счастье уже есть готовые свободные программные модули морфологического разбора текста: MyStem, АОТ, FreeLing.

На мой взгляд, модули обладают существенными недостатками, ограничивающими их использование. Либо они выполнены в виде библиотеки и предполагают сильную зависимость при использовании, либо имеют плохо формализованный не стандартный формат результата работы. Попытаемся решить эти проблемы. Поставим себе задачу: модифицировать или создать оболочку для существующего модуля морфологического разбора текста, обладающего двумя главными качествами: низкая связанность при использовании и стандартизированный формат результатов работы.

В начале любой работы необходимо составить ТЗ. Потому что

наличие плохого ТЗ всегда лучше его отсутствия.

Цель. Разработать функционально законченный, максимально упрощенный модуль морфологического разбора текста.
Требования назначения:

  1. интерфейс взаимодействия с модулем должен позволять максимально быстро (в идеале автоматически) создавать программные интерфейсы доступа;
  2. возможность использования модуля из произвольных сред программирования, скриптов, распространённых общедоступных программ доступа к данным;
  3. должно обеспечиваться возможность прозрачного горизонтального и вертикального увеличения вычислительной мощности без изменения модуля.

Технические требования:

  1. обеспечение клиент/серверной схемы работы по запросам на обработку текса, параллельная обработка запросов.
  2. минимальное количество точек входа и параметров настройки, все параметры настройки должны иметь значения по умолчанию обеспечивающие работу на локальном компьютере.
  3. одновременная поддержка нескольких естественных языков без переконфигурирования, задание языка текста в запросе на обработку.
  4. возможность распараллеливания запросов на обработку текста, возможность вынесения обработки текста на выделенные вычислительные мощности.
  5. язык программирования должен совпадать с языком используемой библиотеки морфологического разбора текста.
  6. минимальное количество внешних библиотек и программных модулей, все внешние зависимости должны быть свободны от лицензионных ограничений.

В следующих статьях обсудим каждый из пунктов ТЗ, возможно скорректируем какие-то пункты и попытаемся выбрать инструменты реализации модуля.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>