Исследование возможности использования языка XML для описания речевых баз данных.

Чичагов А.В., Чучупал В.Я., Маковкин К.А.

 

Понятие и назначение языка XML

До последнего времени для хранения и обработки больших объёмов информации использовались файловые системы и реляционные базы данных. Однако, в последнее время, в условиях глобализации экономики и развития "Всемирной Паутины WWW", на передний край вышла задача связывания информационных ресурсов организаций, предприятий и частных лиц. На пути решения этой задачи встала проблема "разноязычия" или, точнее, проблема различия форматов файлов и форматов архивов баз данных разных производителей.

Использование на хостах набора конверторов вряд-ли можно считать эффективным решением этой проблемы в широком масштабе, т.к. требует обеспечения поддержки в актуальном состоянии матрицы конверторов размерности N*N, где N - количество различных форматов файлов. Кардинальным решением проблемы "разноязычия" является выбор или разработка унифицированного формата и нотации для обмена информацией. Одним из известных решений этой проблемы является "технология XML".

Термин "XML" представляет абревиатуру английского словосочетания "Extensible Markup Language", которое означает "расширяемый язык разметки". Синтаксис и семантика языка XML определены в соответствующих документах консорциума W3C. Язык XML базируется на стандарте "Unicode", т.е. 16-битовой системы кодирования объединения таблиц символов всех основных языков, существующих в мире. Переход от использования локальных систем кодировки к унифицированной системе позволяет забыть о проблемах, связанных с кодировкой при передаче данных с одной машины на другую.

Множество XML -документов представляет подмножество текстовых документов (цепочек Unicode-символов), удовлетворяющих определенным правилам. Набор правил, которым должны удовлетворять документы XML, можно разделить на ядро (обязательные) и оболочку (факультативные). Текстовые документы, которые удовлетворяют минимальному набору правил языка XML (ядро) называются корректными ( well-formed) документами XML , а корректные XML -документы, которые удовлетворяют дополнительным ограничениям называют состоятельными ( valid) документами XML.

Язык XML предназначен для разметки инфорационного содержания текстовых документов в различных прикладных областях. Под словосочетанием "разметка содержания" обычно понимается преобразование некоторого первичного документа ("плоского" текста) в XML- документ, содержащий набор специальных меток или тегов, семантика имен которых обычно соответствует исторически сложившейся терминологии прикладной области.

Задача преобразования "плоского" текста в размеченный документ требует знания семантики и терминологии соответствующей предметной области. Нетривиальные задачи подобного класса в настоящее время успешно может решать только естественный интеллект. Например, в области торговли выражение "плоского" текста:

"Картофель Тульский, высшего качества, цена 1 кг. 10 руб."

можно представить в виде таблицы "картофель" некоторой базы данных:

картофель

вес

мера

цена

валюта

примечание

1

кг

10

руб

Тульский, высшего качества

и в виде фрагмента размеченного текста некоторого документа XML

< картофель >
Тульский, высшего качества
< вес мера = "кг" >1</ вес >
< цена валюта = " руб ">10</ цена >
</ картофель >

Данный фрагмент представляет элемент "картофель". Начало и конец элемента XML ограничивают теги, содержащие имя элемента в треугольных скобках. Начальный тег может иметь список атрибутов или пар {имя = " значение "} , уточняющих семантику элемента. Каждый элемент XML может состоять из "текстового узла" и/или набора элементов XML. Текстовый узел представляет любая цепочка символов, не являющаяся элементом XML. Если элемент не содержит вложенных элементов, то этот элемент является терминальным элементом в структурной иерархии.

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

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

Определение специального языка разметки фиксирует набор элементов, которые должен содержать документ и набор элементов, которые может содержать документ, а также модель содержания или набор допустимых сочетаний этих элементов. Для каждого элемента также фиксируется набор атрибутов, которые должен содержать элемент и набор атрибутов, которые может содержать элемент. Словарь XML можно описать либо в виде DTD-документа, либо в виде XSD-документа.

Термин " DTD " представляет абревиатуру английского словосочетания " Document Type Definition" , которое означает "определение типа документа" и представляет ещё один язык, назначение которого соответствует своему названию. Термин " XSD " представляет абревиатуру английского словосочетания " XML Schema Definition" , которое означает "определение схемы XML - документа" и представляет ещё один язык, назначение которого также соответствует названию. Однако, в отличие от документов или выражений языка " DTD ", документы или выражения языка " XSD " представляют корректные документы (выражения) языка XML и, что гораздо важнее, язык схем позволяет существенно более тонко описать требуемый класс документов XML. Синтаксис и семантика языков DTD и XSD определены в соответствующих документах консорциума W3C.

 

Конструкции и структура языка XML

Документ XML или корректное выражение языка XML состоит из пролога и элемента XML (корень документа). Элемент XML состоит из цепочки элементов XML и/или "текстового узла". Текстовый узел представляет любая цепочка символов, не являющаяся элементом XML . Приведённое определение соответствует рекурсивной структуре данных типа дерево.

В качестве иллюстрации рассмотрим простой документ XML , показанный на рис.1. В пролог документа входят:

 

 

Рис.1. Пример документа XML

1. <?xml version="1.0" encoding="Windows-1251"?>

2. <!-- file name: Dsdb_demo.xml

3. (c) A.Chi, 2001 -->

4. <!DOCTYPE ANNOTATION SYSTEM "Dsdb_demo.dtd">

5. <?xml-stylesheet type="text/xsl" href="Dsdb_demo.xsl"?>

6. <!-- document xml -->

7. <ANNOTATION>

8. <SOURCE>

9. <!-- source sound file allocation & data coding format -->

10. <ADDRESS>

11. dsdb\dictor38\tel\wave\F038T28_1.wav

12. </ADDRESS>

<FORMAT MIME-type = "audio/wave">

<SAMPLING_CODE> PCM </SAMPLING_CODE>

<SAMPLING_FREQUENCE> 8000 Hz</SAMPLING_FREQUENCE>

<SAMPLING_RESOLUTION> 16 bit </SAMPLING_RESOLUTION>

<CHANNELS_NUMBER> 1 </CHANNELS_NUMBER>

</FORMAT>

<AUDIO_CONNECT type = "tel" quality = "bad">

присутствуют нелинейные искажения и шум

</AUDIO_CONNECT>

</SOURCE>

<CONTENT>

<!-- source sound file information content -->

<TEXT xml:lang = "ru" dictor_type = "wmn">

<!-- textual information content -->

<!-- Сам автор придумал хитрый ход для вашего фильма -->

<WORD>сам </WORD>

<WORD>автор </WORD>

<WORD>придумал </WORD>

<WORD>хитрый </WORD>

<WORD>ход </WORD>

<WORD>для </WORD>

<WORD>вашего </WORD>

<WORD>фильма </WORD>

</TEXT>

<SCO>

cам &PLS; автор &VFL;&PLS; придумал <GAIN>хитрый &LAU; ход </GAIN>для <GAIN>вашего </GAIN> фильма &LPS;

</SCO>

<TRANSCRIPTION>

са+м а+втор приду+мал хи+трый хо+д для+ ва+шего фи+льма

</TRANSCRIPTION>

<PHONEMES>

...

</PHONEMES>

</CONTENT>

</ANNOTATION>

 

 

XML документ, показанный на рис.1 представляет конкретную аннотацию некоторого аудио-файла.

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

На рис.2 показан пример документа DTD определяющий структуру аннотации, приведенной на рис.1. Рассмотрим этот документ более подробно.

  • обязательная первая строка <?xml version="1.0" ...?> определяющая данный текст как документ XML , кодировочную таблицу символов и другие необязательные параметры,
  • вторая и третья строки (необязательные), ограниченные символами <!-- ... --> составляют комментарий,
  • четвертая строка (необязательная) - тоже комментарий,

  • пятая строка определяет корневой элемент документа (класса документов) ANNOTATION, как элемент, который содержит один или более элементов SOURCE и только один элемент CONTENT, который располагается после всех элементов SOURCE,

  • шестая строка (необязательная) - комментарий,

  • седьмая строка определяет элемент SOURCE, как элемент, который содержит обязательную последовательность элементов ADDRESS, FORMAT, AUDIO_CONNECT,
  • восьмая строка определяет элемент ADDRESS, который содержит текстовый узел,
  • девятая строка определяет список атрибутов, который может иметь элемент ADDRESS (один, в данном случае) с именем "Access-type", который может принимать только одно из двух предопределенных значений "local_file" или "remote_file", значение по умолчанию "local_file",
  • десятая и одиннадцатая строки определяют элемент FORMAT, который включает факультативную последовательность элементов SAMPLING_CODE, SAMPLING_FREQUENCE, SAMPLING_RESOLUTION, CHANNELS_NUMBER,
  • двенадцатая строка определяет список атрибутов, который может иметь элемент FORMAT (один, в данном случае) с именем " MIME-type ", который может принимать символьное значение, причем значение по умолчанию "audio/wave", и т.д...

 

 

Рис.2. Пример документа DTD.

1. <?xml version="1.0" encoding="Windows-1251"?>

2. <!-- file name: Dsdb_demo.dtd

3. (c) A.Chi, 2001 -->

4. <!-- DTD "ANNOTATION" -->

5. <!ELEMENT ANNOTATION (SOURCE+, CONTENT)>

6. <!-- source sound file allocation & data coding format -->

7. <!ELEMENT SOURCE (ADDRESS, FORMAT, AUDIO_CONNECT)>

8. <!ELEMENT ADDRESS (#PCDATA)>

9. <!ATTLIST ADDRESS Access-type (local_file|remote_file) "local_file">

10. <!ELEMENT FORMAT (SAMPLING_CODE, SAMPLING_FREQUENCE,

11. SAMPLING_RESOLUTION, CHANNELS_NUMBER)?>

12. <!ATTLIST FORMAT MIME-type CDATA "audio/wave">

<!ELEMENT SAMPLING_CODE (#PCDATA)>

<!ELEMENT SAMPLING_FREQUENCE (#PCDATA)>

<!ELEMENT SAMPLING_RESOLUTION (#PCDATA)>

<!ELEMENT CHANNELS_NUMBER (#PCDATA)>

<!ELEMENT AUDIO_CONNECT (#PCDATA)>

<!ATTLIST AUDIO_CONNECT type (mic|tel) #REQUIRED>

<!ATTLIST AUDIO_CONNECT quality (very_bad|bad|sat|good|very_good) #IMPLIED>

<!-- source sound file information content -->

<!ELEMENT CONTENT (TEXT, SCO, TRANSCRIPTION, PHONEMES)>

<!ELEMENT TEXT (#PCDATA| WORD)*>

<!ATTLIST TEXT xml:lang CDATA "ru">

<!ATTLIST TEXT dictor_type (men|wmn|chd) #REQUIRED>

<!ELEMENT WORD (#PCDATA)>

<!ELEMENT SCO (#PCDATA| NOISE| PULSE| MPULSE| LINE| BDICT| GAIN| ANY| BREATH| LIPS| COUGH| LAUGH| VFILL)*>

<!ELEMENT NOISE (#PCDATA| PULSE| MPULSE| LINE| BDICT| GAIN| ANY| BREATH| LIPS| COUGH| LAUGH| VFILL)*>

<!ELEMENT LINE (#PCDATA| NOISE| PULSE| MPULSE| BDICT| GAIN| ANY| BREATH| LIPS| COUGH| LAUGH| VFILL)*>

<!ELEMENT BDICT (#PCDATA)>

<!ELEMENT GAIN (#PCDATA| PULSE| MPULSE| LINE| BDICT| ANY| BREATH| LIPS| COUGH| LAUGH| VFILL)*>

<!ELEMENT ANY (#PCDATA)>

<!ELEMENT PULSE (#PCDATA)>

<!ELEMENT MPULSE (#PCDATA)>

<!ELEMENT BREATH (#PCDATA)>

<!ELEMENT LIPS (#PCDATA)>

<!ELEMENT COUGH (#PCDATA)>

<!ELEMENT LAUGH (#PCDATA)>

<!ELEMENT VFILL (#PCDATA)>

<!ELEMENT WORDS (#PCDATA)>

<!ELEMENT TRANSCRIPTION (#PCDATA)>

<!ELEMENT PHONEMES (#PCDATA)>

<!ENTITY BR "<BR EATH>{Артефакт BREATH}</BREATH>">

<!ENTITY LPS "<LIPS>{Артефакт LIPS}</LIPS>">

<!ENTITY CHG "<COUGH>{Артефакт COUGH}</COUGH>">

<!ENTITY LAU "<LAUGH>{Артефакт LAUGH}</LAUGH>">

<!ENTITY VFL "<VFILL>{Артефакт VOICE FILL}</VFILL>">

<!ENTITY PLS "<PULSE>{Импульсная помеха}</PULSE>">

 

В конце документа DTD , показанного на рис.2 приводятся определения "сущностей" или макроподстановок, которые для удобства можно использовать в XML документе "ANNOTATION".

 

Представления и стили

Документы XML, описанные в предыдущем разделе, возможно, вполне удовлетворительно представляют некоторый класс данных логически, однако, визуальное представление этих данных, т.е. презентация данных или документов далека от идеальной. Представленные документы скорее подходят для обработки машиной, чем для изучения человеком. Не представляет проблемы организовать машинную обработку документов XML, аналогичную по своим возможностям обработке реляционных баз данных. С другой стороны требуются программы, которые могли бы представлять эти данные пользователю в "художественно" оформленом виде. Такое представление повышает комфортность и увеличивает производительность работы пользователя (заметим, что требуется оптимизировать производительность системы "пользователь + приложение", а не только приложения). Например, можно выполнить преобразование XML документа в HTML документ для презентации данных человеку. Именно для таких целей разработан язык XSL.

Термин "XSL" представляет абревиатуру английского словосочетания "Extensible Stylesheet Language" , которое означает "расширяемый язык таблиц стилей". Синтаксис и семантика языка XSL определены в соответствующих документах консорциума W3C. Язык XSL предназначен для описания преобразования исходного XML документа, имеющего структуру, например, А в результирующий XML документ, имеющий структуру, например, В. Документ XSL представляет корректный XML документ, содержащий набор элементов определенных языком XSL , а также другими языками или словарями XML . На рис.3 показан пример документа XSL , преобразующего исходные документы класса ANNOTATION в итоговые HTML- документы.

 

 

Рис.3. Пример документа XSL

<?xml version="1.0" encoding="Windows-1251"?>

<!-- file name: dsdb_demo.xsl

(c) A.Chi, 2001 -->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" >

<xsl:template match="/">

<H2>Annotation</H2>

<SPAN STILE="font-style:italic">

<font color="green"><strong><h3>Source sound file data coding format and artefacts:</h3></strong></font><BR/>

</SPAN>

<xsl:for-each select="ANNOTATION/SOURCE">

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Source file:</i></strong></font>

<xsl:value-of select="ADDRESS"/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Sampling Code:</i></strong></font>

<xsl:value-of select="FORMAT/SAMPLING_CODE"/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Sampling Frequence:</i></strong></font>

<xsl:value-of select="FORMAT/SAMPLING_FREQUENCE"/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Sampling Resolution:</i></strong></font>

<xsl:value-of select="FORMAT/SAMPLING_RESOLUTION"/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Number of Channels:</i></strong></font>

<xsl:value-of select="FORMAT/CHANNELS_NUMBER"/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Audio connection type: </i></strong></font>

<xsl:value-of select="AUDIO_CONNECT/@type"/><BR/>

</SPAN>

<BR/>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Технические дефекты звукозаписи:</i></strong></font>< BR/>

<ul>

<li><font color="blue"><strong><i>помехи: PULSE (start=100, stop=110)</i></strong></font>

<BR/></li>

<li><font color="blue"><strong><i>искажения: GAIN (start=110, stop=200)</i></strong></font>

<BR/></li>

<li><font color="blue"><strong><i>quality:</i></strong></font>

<xsl:value-of select="AUDIO_CONNECT/@quality"/><BR/>

<xsl:value-of select="AUDIO_CONNECT"/><BR/></li>

</ul>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Звуковые артефакты (речевые события):</i></strong></font ><BR/>

<ul>

<li><font color="blue"><strong><i>LIPS (start=100, stop=110)</i></strong></font>

<BR/></li>

<li><font color="blue"><strong><i>VFILL (start=110, stop=200)</i></strong></font>

<BR/></li>

</ul>

</SPAN>

</xsl:for-each>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Диктор:</i></strong></font>

<xsl:value-of select="ANNOTATION/CONTENT/TEXT/@dictor_type

"/><BR/><BR/>

</SPAN>

<BR/><hr/>

<SPAN STILE="font-style:italic">

<font color="green"><strong><h3>Source sound file information content:</h3></strong></font><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Текст:</i></strong></font>

<xsl:value-of select="ANNOTATION/CONTENT/TEXT"/><BR/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Список слов, содержащихся в звукозаписи: </i></strong></font><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<xsl:for-each select="ANNOTATION/CONTENT/TEXT/WORD">

<xsl:value-of/><BR/>

</xsl:for-each><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color=" red"><strong><i>Транскрипция:</i></strong></font>

<xsl:value-of select="ANNOTATION/CONTENT/TRANSCRIPTION"/><BR/><BR/>

</SPAN>

<SPAN STILE="font-style:italic">

<font color="red"><strong><i>Список фонем, содержащихся в звукозаписи:</i></strong></font>

<xsl:value-of select="ANNOTATION/CONTENT/PHONEMES"/><BR/><BR/>

</SPAN>

<hr/>

<SPAN STILE="font-style:italic">

</SPAN>

</xsl:template>

</xsl:stylesheet>

 

Приведенный документ представляет корректный XML документ, однако, его описание выходит за рамки настоящей работы, т.к. требует дополнительных знаний семантики элементов языков XSL и HTML. Чтобы получить визуальное представление о преобразовании, которое описывает этот документ, нужно записать файлы, показанные на рис.1-3, в один каталог, убрать учебные номера строк 1-12 и открыть файл Dsdb_demo.xml, показанный на рис.1. в броузере MS IExplorer 5.0 , который выведет результат преобразования на экран дисплея.

Возможности языка XML для описания речевых баз данных демонстрируют рассмотренные примеры.

Dsdb_demo.xml

Dsdb_demo.xsl

Dsdb_demo.dtd

 

Выводы

  1. Технология XML предоставляет языковые и программо-технические унифицированные средства описания, обработки и презентации речевых баз данных по крайней мере эквивалентные, а фактически более высокого уровня, чем традиционные технологии реляционных баз данных.
  2. Концептуальная ниша языка XML - формальная лингвистическая поддержка разработки специализированных языков структурированного описания данных, содержательная интерпретация элементов которых соответствует семантике описываемой прикладной области.
  3. Документы XML можно использовать в двух ипостасях. Во-первых, как информацию для восприятия человеком и, во-вторых, как данные для обработки приложениями.
  4. В простых случаях, более эффективным решением может оказаться представление данных в виде таблицы или строки "плоского" текста, однако, их также можно интегрировать в мир XML, представив в виде текстового узла элемента или раздела CDATA.
  5. Переход на XML стандарт описания речевых данных позволит независимым разработчикам речевых приложений легко использовать информацию полученную друг у друга.

 

Средства работы с XML - данными и/или XML - документами

Для создания и редактирования XML документов в принципе достаточно самого простого текстового редактора, однако разработаны и существуют более "продвинутые" XML - редакторы, например,

  • XED / www.ltd.ed.ac.uk/`ht/xed.html
  • XML Notepad / www.microsoft.com/xml
  • VisualXML / www.pierlou.com

Для анализа и разбора (проверки корректности и/или состоятельности) XML документов доступны следующие анализаторы:

  • XP / www.jclark.com
  • AElfred / www.microstar.com

  • IE 5.0 / www.microsoft.com

Для преобразования XML документов в другие XML документы, а также для презентации или преобразования в HTML документы можно использовать следующие процессоры XSLT:

  • XT / www.jclark.com
  • Xalan / www.xml.apache.org

  • IE 5.0 / www.microsoft.com

Кроме перечисленных, существует ряд других редакторов, анализаторов и процессоров обработки XML - документов, информацию о которых можно найти на сайтах, посвященных технологии XML:

  • www.w3c.org
  • www.xml.org
  • www.xml.com

 

Литература

Грейвс М. Проектирование баз данных на основе XML. М.: Издательский дом "Вильямс", 2002

Валиков А.Н. Технология XSLT. CПб.: БХВ-Петербург, 2002