Difference between revisions of "Как использовать lttoolbox, чтобы разработать новый морфологический анализатор"

From Apertium
Jump to navigation Jump to search
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{TOCD}}
 
{{TOCD}}
   
:''Информация о том, как установить lttoolbox смотрите [[lttoolbox]] и[[minimal installation from SVN]]''
+
:''Информация о том, как установить lttoolbox смотрите [[lttoolbox]] и [[minimal installation from SVN]]''
   
 
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит
 
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит
для агглютинативных языков, или языков со сложной и регулярной морфо-фонологиыой (или по
+
для агглютинативных языков, или языков со сложной и регулярной морфо-фонологией (или по
 
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы
 
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы
будем работать над таким с языком с простой и менее регулярной морфологийой. В частности,
+
будем работать над таким с языком с простой и менее регулярной морфологией. В частности, мы
мы рекомендуем людям использовать lttoolbox возможности; lttoolbox имеет простой синтаксис,
+
рекомендуем людям использовать lttoolbox возможности; lttoolbox имеет простой синтаксис, есть
есть несколько очень полезных функций для проверки и является канонической частью Apertium,
+
несколько очень полезных функций для проверки и является канонической частью Apertium, не
не требующий никакого специального программного обеспечения для установки.
+
требующей никакого специального программного обеспечения для установки.
   
 
== Подготовка==
 
== Подготовка==
   
Морфологических переводчик в lttoolbox имеет обычно один файл, <code>.dix</code> файл.
+
Морфологический переводчик в lttoolbox имеет обычно один файл, <code>.dix</code> файл. Это определяет как морфемы в языке соединяются вместе,''морфотактики'', и как изменения происходят, когда эти морфемы соединяются вместе, ''морфографемика'' (или ''морфофонология''). Например,
Это определяет как морфемы в языке соединяются вместе,''морфотактики'', и как изменения
 
происходят, когда эти морфемы соединяются вместе, ''морфографемика''(или''морфофонология'').
 
Например,
 
   
 
* морфотактика: wolf<n><pl> → wolf + s
 
* морфотактика: wolf<n><pl> → wolf + s
 
* морфографемика: wolf + s → wolves
 
* морфографемика: wolf + s → wolves
   
Эти два рассматриваются в том же файле.
+
Oба рассматриваются в том же файле.
   
 
== Язык==
 
== Язык==
   
Язык которий мы будем моделировать- Верхний сербский, славянский язык на котором
+
Язык который мы будем моделировать- Верхний сербский, славянский язык на котором
 
говорят в Германии. Существует ограниченная грамматика на английском языке [http://serbscina.w.interia.pl/iso/eindex.htm здесь], и это то, что мы будем использовать для
 
говорят в Германии. Существует ограниченная грамматика на английском языке [http://serbscina.w.interia.pl/iso/eindex.htm здесь], и это то, что мы будем использовать для
 
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции-
 
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции-
существительные . Существительные в Верхней сербский семь падежей (именительный,
+
существительные . Существительные в Верхнем сербскoм имеют семь падежей (именительный,
родительный, дательный, винительный, местный, инструментальные, звательный), три числа
+
родительный, дательный, винительный, местный, инструментальный, звательный), три числа
(единственное, двойственное, множественное) и три рода (мужской, женский, средний). Как и в
+
(единственное, двойственное, множественное) и три рода (мужской, женский, средний). Как
других славянских языках, категории одушевленность выделяется в мужской <ref> Это описание является упрощенным. Реальность сложнее, но это достаточна на этот раз </ref>.
+
и в других славянских языках, живые выделяется в мужской род .<ref> Это описание является
   
  +
упрощенным. Реальность сложнее, но это достаточна на этот раз </ref>.
=== парадигмы ===
 
   
  +
=== Парадигмы ===
Здесь мы дадим четыре парадигмы, эти станут основой реализации нашего достижения.
 
   
  +
Здесь мы дадим четыре парадигмы, они станут основой реализации нашего достижения.
; живой мужского рода (''nan'' " отец ")
 
   
  +
; живой мужского рода (''nan'' "отец")
{|class=wikitable
 
   
  +
{|class=wikitable
! !! единственное число !! !!
 
  +
! !! Единственное число !! Двойственное число !! Mножественное число
 
|-
 
|-
| Именительный || nan || ||
+
| Именительный || nan || nan'''aj''' || nan'''ojo'''
 
|-
 
|-
| Родительный || nan'''a''' || nan'''ow''' || nan'''ow'''
+
| Родительный || nan'''a''' || nan'''ow''' || nan'''ow'''
 
|-
 
|-
| Дательный || nan'''ej''' || nan'''omaj''' || nan'''am'''
+
| Дательный || nan'''ej''' || nan'''omaj''' || nan'''am'''
 
|-
 
|-
| Винительный || nan'''a''' || nan'''ow''' || nan'''ow'''
+
| Винительный || nan'''a''' || nan'''ow''' || nan'''ow'''
  +
|-
  +
| Инструментальный || nan'''om''' || nan'''omaj''' || nan'''ami'''
 
|-
 
|-
| Творительный || nan'''om''' || nan'''omaj''' || nan'''ami'''
+
| Местный || nan'''je''' || nan'''omaj''' || nan'''ach'''
|-
+
|-
| Местный || nan'''je''' || nan'''omaj''' || nan'''ach'''
+
| Звательный || nan'''o'''! || nan'''aj'''! || nan'''ojo'''!
|-
 
| Звательный || nan'''o''' || nan'''aj''' || nan'''ojo'''
 
 
|-
 
|-
 
|}
 
|}
   
  +
; неживой мужского рода (''hrěch'' "грех")
 
 
 
 
 
 
 
 
 
; неживой мужского рода (''hrěch'' " грех ")
 
   
 
Отличия от живого мужского рода парадигмы указаны синим цветом.
 
Отличия от живого мужского рода парадигмы указаны синим цветом.
   
 
{|class=wikitable
 
{|class=wikitable
  +
! !! Единственное число !! Двойственное число !! Mножественное число
 
!! единственное число
 
 
!
 
 
 
|-
 
|-
  +
| Именительный || hrěch || hrěch'''aj''' || <span style="background-color:#cceeff">hrěch'''i'''</span>
 
| Именительный
 
|| hrěch
 
color:#cceeff">hrěch'''i'''</span>
 
 
 
|-
 
|-
  +
| Родительный || hrěch'''a''' || hrěch'''ow''' || hrěch'''ow'''
 
| Родительный
 
 
 
|-
 
|-
  +
| Дательный || hrěch'''ej''' || hrěch'''omaj''' || hrěch'''am'''
 
| Дательный
 
 
 
|-
 
|-
  +
| Винительный || <span style="background-color:#cceeff">hrěch</span> || <span style="background-color:#cceeff">hrěch'''aj'''</span> || <span style="background-color:#cceeff">hrěch'''i'''</span>
 
  +
|-
| Винительный
 
  +
| Инструментальный || hrěch'''om''' || hrěch'''omaj''' || hrěch'''ami'''
|| <span style="background-color:#cceeff">hrěch</span>
 
||
 
<span style="background-color:#cceeff">hrěch'''aj'''</span> || <span style="background-color:#cceeff">hrěch'''i'''</span>
 
 
 
|-
 
|-
  +
| Местный || <span style="background-color:#cceeff">hrěch'''u'''</span> || hrěch'''omaj''' || hrěch'''ach'''
 
  +
|-
| Инструментальные
 
  +
| Звательный || hrěch'''o'''! || hrěch'''aj'''! || <span style="background-color:#cceeff">hrěch'''i'''</span>!
 
 
|-
 
|-
 
| Местный
 
hrěch'''ach'''
 
 
|-
 
 
| Звательный
 
|| hrěch'''o'''! || hrěch'''aj'''! || <span style="background-color:#cceeff">hrěch'''i'''</span>!
 
 
|-
 
 
 
|}
 
|}
   
  +
; женский род (''wróna'' "ворона")
|| hrěch'''a''' || hrěch'''ow''' || hrěch'''ow'''
 
 
|| hrěch'''ej''' || hrěch'''omaj''' || hrěch'''am'''
 
 
|| hrěch'''om''' || hrěch'''omaj''' || hrěch'''ami'''
 
 
|| <span style="background-color:#cceeff">hrěch'''u'''</span> || hrěch'''omaj''' ||
 
 
; женский (''wróna'' "ворона")
 
   
 
Общие части с парадигмами мужского рода выделены зеленым цветом.
 
Общие части с парадигмами мужского рода выделены зеленым цветом.
   
 
{|class=wikitable
 
{|class=wikitable
  +
! !! Единственное число !! Двойственное число !! Mножественное число
 
!
 
 
!! единственное число
 
 
 
|-
 
|-
  +
| Именительный || wrón'''a''' || wrón'''je''' || wrón'''y'''
 
| Именительный
 
 
 
|-
 
|-
  +
| Родительный || wrón'''u''' || <span style="background-color:#ccffcc">wrón'''ow'''</span> || <span style="background-color:#ccffcc">wrón'''ow'''</span>
 
| Родительный
 
|| wrón'''u''' || <span style="background-color:#ccffcc">wrón'''ow'''</span> ||
 
<span style="background-color:#ccffcc">wrón'''ow'''</span>
 
 
 
|-
 
|-
  +
| Дательный || wrón'''je''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span> || <span style="background-color:#ccffcc">wrón'''am'''</span>
 
| Дательный
 
|| wrón'''je''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span> ||
 
<span style="background-color:#ccffcc">wrón'''am'''</span>
 
 
 
|-
 
|-
  +
| Винительный || wrón'''u''' || wrón'''je''' || wrón'''y'''
 
  +
|-
| Винительный
 
  +
| Инструментальный || wrón'''u''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span> || <span style="background-color:#ccffcc">wrón'''ami'''</span>
 
 
|-
 
|-
  +
| Местный || wrón'''je''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span> || <span style="background-color:#ccffcc">wrón'''ach'''</span>
 
  +
|-
| Инструментальные || wrón'''u''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span>
 
  +
| Звательный || wrón'''a'''! || wrón'''je'''! || wrón'''u'''!
|| <span style="background-color:#ccffcc">wrón'''ami'''</span>
 
 
 
|-
 
|-
 
| Местный
 
|| wrón'''je''' || <span style="background-color:#ccffcc">wrón'''omaj'''</span> ||
 
<span style="background-color:#ccffcc">wrón'''ach'''</span>
 
 
|-
 
 
| Звательный
 
 
|-
 
 
 
|}
 
|}
   
  +
; средний род (''trašidło'' "чудовище")
|| wrón'''a''' || wrón'''je''' || wrón'''y'''
 
 
|| wrón'''u''' || wrón'''je''' || wrón'''y'''
 
 
|| wrón'''a'''! || wrón'''je'''! || wrón'''u'''!
 
 
; средний род (''trašidło'' " чудовище ")
 
   
 
Формы общего мужского и женского рода парадигм, выделены красным цветом.
 
Формы общего мужского и женского рода парадигм, выделены красным цветом.
   
 
{|class=wikitable
 
{|class=wikitable
  +
! !! Единственное число !! Двойственное число !! Mножественное число
 
!
 
 
!! единственное число
 
 
 
|-
 
|-
  +
| Именительный || trašidł'''o''' || trašidł'''e''' || trašidł'''a'''
 
| Именительный
 
 
 
|-
 
|-
  +
| Родительный || trašidł'''a''' || <span style="background-color:#ffcccc">trašidł'''ow'''</span> || <span style="background-color:#ffcccc">trašidł'''ow'''</span>
 
| Родительный
 
|| trašidł'''a''' || <span style="background-color:#ffcccc">trašidł'''ow'''</span> ||
 
<span style="background-color:#ffcccc">trašidł'''ow'''</span>
 
 
 
|-
 
|-
  +
| Дательный || trašidł'''u''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''am'''</span>
 
| Дательный
 
|| trašidł'''u''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> ||
 
<span style="background-color:#ffcccc">trašidł'''am'''</span>
 
 
 
|-
 
|-
  +
| Винительный || trašidł'''o''' || trašidł'''e''' || trašidł'''a'''
 
  +
|-
| Винительный
 
  +
| Инструментальный || trašidł'''om''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''ami'''</span>
 
 
|-
 
|-
  +
| Местный || trašidł'''e''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''ach'''</span>
 
  +
|-
| Инструментальные || trašidł'''om''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''ami'''</span>
 
  +
| Звательный || trašidł'''o'''! || trašidł'''e'''! || trašidł'''a'''!
 
 
|-
 
|-
 
| Местный
 
|| trašidł'''e''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''ach'''</span>
 
 
|-
 
 
| Звательный
 
 
|-
 
 
 
|}
 
|}
 
|| trašidł'''o''' || trašidł'''e''' || trašidł'''a'''
 
 
|| trašidł'''o''' || trašidł'''e''' || trašidł'''a'''
 
 
|| trašidł'''o'''! || trašidł'''e'''! || trašidł'''a'''!
 
   
 
== Лексикон ==
 
== Лексикон ==
   
Учитывая описание выше, как мы можем начать писать морфологическое описание в [[lttoolbox]]? Ну, во-первых, мы начнем с нашего файла, <code>hsb.dix</code>, так что открыть текстовый редактор и сохраните пустой документ с таким именем.
+
Учитывая описание выше, как мы можем начать писать морфологическое описание в [[lttoolbox]]?
  +
Ну, во-первых, мы начнем с нашего файла, <code> hsb.dix </code>, так что откройте текстовый
  +
редактор и сохраните пустой документ с таким именем.
   
 
=== Основы ===
 
=== Основы ===
Line 244: Line 139:
   
 
<pre>
 
<pre>
 
 
<dictionary>
 
<dictionary>
 
<alphabet>abc...</alphabet>
 
<alphabet>abc...</alphabet>
 
<sdefs>
 
<sdefs>
  +
...
 
...
 
 
 
</sdefs>
 
</sdefs>
 
<pardefs>
 
<pardefs>
  +
...
 
...
 
 
 
</pardefs>
 
</pardefs>
 
<section id="main" type="standard">
 
<section id="main" type="standard">
  +
...
 
...
 
 
 
</section>
 
</section>
 
</dictionary>
 
</dictionary>
 
 
</pre>
 
</pre>
   
Так впишите это в файл, и это даcт набросок нашей основной части нашей морфологии: алфавит; символы, которые дают нам полезные мнемоники для грамматических особенностей; {{tag|pardefs}} раздел, который дает наши флективные парадигмы и, наконец, основной раздел файла, который содержит наши лексические элементы.
+
Bпишите это в файл, и это даcт набросок нашей основной части морфологии: алфавит; символы,
  +
которые дают нам полезные мнемоники для грамматических особенностей; {{tag|pardefs}}
  +
раздел, который дает наши флективные парадигмы и, наконец, основной раздел файла, который
  +
содержит наши лексические элементы.
   
 
; Символa (tag) определения
 
; Символa (tag) определения
   
первым делом мы начнем с спискoм символов, которые будут кодировать наши грамматические особенности (речь, пол, число, падеж).Страница [[list of symbols]] дает некоторые общие тaги в Apertium. Вообще мы стараемся сохранить черты, которые названы одинаково среди языков
+
первым делом мы начнем сo спискa символов, которые будут кодировать наши грамматические особенности (речь, пол, число, падеж). Страница [[list of symbols]] дает некоторые общие тaги в Apertium. Вообще мы стараемся сохранить черты, которые названы одинаково среди языков одинаковой меткой и, таким образом, к примеру, тaг "именительный" будет {{tag|nom}}, независимо от того, если мы говорим о румынском, сербско-хорватском, исландском или албанцком. Символы определены в {{tag|sdefs}} разделe {{tag|sdef}} элементов.
одинаковой меткой и, таким образом, к примеру, тaг "именительный" будет {{tag|nom}}, независимо от того, если мы говорим о румынском, сербско-хорватском, исландском или албанцев. Символы определены в {{tag|sdefs}} разделe {{tag|sdef}} элементов.
 
   
 
<pre>
 
<pre>
 
 
<sdefs>
 
<sdefs>
<sdef n="n" c="Noun"/>
+
<sdef n="n" c="Имя существительное"/>
  +
<sdef n="ma" c="Masculine (animate)"/>
  +
<sdef n="mi" c="Masculine (inanimate)"/>
  +
<sdef n="nt" c="Neuter"/>
  +
<sdef n="f" c="Женский род"/>
   
<sdef n="ma" c="Masculine (animate)"/>
+
<sdef n="sg" c="Singular"/>
<sdef n="mi" c="Masculine (inanimate)"/>
+
<sdef n="du" c="Dual"/>
<sdef n="nt" c="Neuter"/>
+
<sdef n="pl" c="Plural"/>
<sdef n="f" c="Feminine"/>
 
   
<sdef n="sg" c="Singular"/>
+
<sdef n="nom" c=" Nominative "/>
<sdef n="du" c="Dual"/>
+
<sdef n="gen" c=" Genitive "/>
<sdef n="pl" c="Plural"/>
+
<sdef n="dat" c=" Dative "/>
  +
<sdef n="acc" c=" Accusative "/>
 
<sdef n="nom" c="Nominative"/>
+
<sdef n="ins" c=" Instrumental "/>
<sdef n="gen" c="Genitive"/>
+
<sdef n="loc" c=" Locative "/>
<sdef n="dat" c="Dative"/>
+
<sdef n="voc" c=" Vocative "/>
<sdef n="acc" c="Accusative"/>
 
<sdef n="ins" c="Instrumental"/>
 
<sdef n="loc" c="Locative"/>
 
<sdef n="voc" c="Vocative"/>
 
 
</sdefs>
 
</sdefs>
 
 
</pre>
 
</pre>
   
<code>c</code> после каждого символа определения означает комментарий (это не обязательно, но весьма удобно, если у вас есть много тaгов и нужнa быстрая ссылкa на то, что они означают)
+
<code> c </code> после каждого символа определения означает комментарий (это не обязательно, но весьма удобно, если у вас есть много тaгов и нужнa быстрая ссылкa на то, что они означают)
   
 
; Наша первая парадигма
 
; Наша первая парадигма
   
После того как мы определили наши символы, то следующее, что нужно сделать, это написать нашу первую парадигму. Мы начнем с парадигмой ''nan'' "отец". Существует конвенции в Apertium, что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом слова и части речи. В этом случае мы также добавим пола.
+
После того как мы определили наши символы, то следующее, что нужно сделать, это написать нашу первую парадигму. Мы начнем с парадигмой ''nan'' "отец". Существует конвенции в Apertium, что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом слова и части речи. В этом случае мы также добавим пол.
   
Парадигмы состоит из серии записей. Каждая запись имеет ''пару'' ({{tag|p}}), у которой есть ''левая'' сторона ({{tag|l}}) и ''правая'' сторона ({{tag|r}}). Как правило [[surface form]] находится на левой стороне и [[lexical form]] справа.
+
Парадигмы состоят из серии записей. Каждая запись имеет ''пару'' ({{tag|p}}), у которой есть ''левая'' сторона ({{tag|l}}) и ''правая'' сторона ({{tag|r}}). Как правило [[surface form]] находится на левой стороне и [[lexical form]] справа.
   
 
Мы можем использовать символы, которые мы определили ранее с {{tag|sdef}} тaги, называя их с {{tag|s}} элементoм.
 
Мы можем использовать символы, которые мы определили ранее с {{tag|sdef}} тaги, называя их с {{tag|s}} элементoм.
   
 
<pre>
 
<pre>
 
 
<pardefs>
 
<pardefs>
  +
<pardef n="nan__n_ma">
  +
<e><p><l></l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="nom"/></r></p></e>
  +
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="gen"/></r></p></e>
  +
<e><p><l>ej</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="dat"/></r></p></e>
  +
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
  +
<e><p><l>om</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="ins"/></r></p></e>
  +
<e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>
  +
<e><p><l>o</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="voc"/></r></p></e>
   
  +
<e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="nom"/></r></p></e>
<pardef n="nan__n_ma">
 
  +
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="gen"/></r></p></e>
 
<e><p><l></l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="nom"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="dat"/></r></p></e>
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="gen"/></r></p></e>
+
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>
<e><p><l>ej</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="dat"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="ins"/></r></p></e>
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="loc"/></r></p></e>
<e><p><l>om</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="ins"/></r></p></e>
+
<e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="voc"/></r></p></e>
<e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>
 
<e><p><l>o</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="voc"/></r></p></e>
 
 
<e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="nom"/></r></p></e>
 
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="gen"/></r></p></e>
 
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="dat"/></r></p></e>
 
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>
 
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="ins"/></r></p></e>
 
<e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="loc"/></r></p></e>
 
<e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="voc"/></r></p></e>
 
 
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
 
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="gen"/></r></p></e>
 
<e><p><l>am</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="dat"/></r></p></e>
 
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
 
<e><p><l>ami</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="ins"/></r></p></e>
 
<e><p><l>ach</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="loc"/></r></p></e>
 
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
 
 
</pardef>
 
   
  +
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
  +
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="gen"/></r></p></e>
  +
<e><p><l>am</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="dat"/></r></p></e>
  +
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
  +
<e><p><l>ami</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="ins"/></r></p></e>
  +
<e><p><l>ach</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="loc"/></r></p></e>
  +
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
  +
</pardef>
 
</pardefs>
 
</pardefs>
 
 
</pre>
 
</pre>
   
 
; Использование Парадигмы
 
; Использование Парадигмы
   
Теперь, когда мы определили парадигму, мы можем добавить слово, которое использует его.
+
Теперь, когда мы определили парадигму, мы можем добавить слово, которое использует его. Очевидным выбором является "nan", являясь, как имя парадигмы.
Очевидным выбором является "nan", являясь, как имя парадигмы.
 
   
 
<pre>
 
<pre>
 
 
<section id="main" type="standard">
 
<section id="main" type="standard">
 
<e lm="nan"><i>nan</i><par n="nan__n_ma"/></e>
 
<e lm="nan"><i>nan</i><par n="nan__n_ma"/></e>
 
</section>
 
</section>
 
 
</pre>
 
</pre>
   
Line 363: Line 240:
 
=== Компиляция ===
 
=== Компиляция ===
   
После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить его. Предполагая, что файл называется <code> hsb.dix </code>, то следующий будет проверять его от определениях:
+
После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить
  +
его. Предполагая, что файл называется <code> hsb.dix </code>, то следующий будет проверять его
  +
от определениях:
   
 
<pre>
 
<pre>
Line 371: Line 250:
 
Если словарь еще в силе, вы не должны получить вывода.
 
Если словарь еще в силе, вы не должны получить вывода.
   
Это главное преимущество над относящимися к программного обеспечения (например, [[HFST]]). Если вы не введете определение символа, то вы получите сообщение от проверки скрипта, например, следующие:
+
Если вы не введете определение символа, то вы получите сообщение от проверки скрипта,
  +
например, следующие:
   
 
<pre>
 
<pre>
 
$ apertium-validate-dictionary hsb.dix
 
$ apertium-validate-dictionary hsb.dix
 
 
hsb.dix:25: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
hsb.dix:25: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
hsb.dix:33: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
hsb.dix:33: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
hsb.dix:41: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
hsb.dix:41: element s: validity error : IDREF attribute n references an unknown ID "nom"
 
 
Document hsb.dix does not validate against /home/fran/local/share/apertium/dix.dtd
 
Document hsb.dix does not validate against /home/fran/local/share/apertium/dix.dtd
 
</pre>
 
</pre>
Line 385: Line 263:
 
В этом случае лучше вернуться и проверить, что все ваши символы определены.
 
В этом случае лучше вернуться и проверить, что все ваши символы определены.
   
Если предположить, что наш словарь действующий, мы можем перейти к следующему шагу и скомпилировать его.
+
Если предположить, что наш словарь действующий, мы можем перейти к следующему шагу и
  +
скомпилировать его.
   
 
<pre>
 
<pre>
 
 
$ lt-comp lr hsb.dix hsb-mor.bin
 
$ lt-comp lr hsb.dix hsb-mor.bin
 
main@standard 29 45
 
main@standard 29 45
 
 
$ lt-comp rl hsb.dix hsb-gen.bin
 
$ lt-comp rl hsb.dix hsb-gen.bin
 
main@standard 29 45
 
main@standard 29 45
 
 
</pre>
 
</pre>
   
<code>lr</code> и <code>rl</code> на стенде команд компиляции для "слева направо" и "справа налево", соответственно. Предполагая, что у нас есть форма поверхности слева и лексическая формa праве, компиляция <code>lr</code> сделает морфологический анализатор и компиляция
+
<code> lr </code> и <code> rl </code> на стенде команд компиляции для "слева направо" и "справа
  +
налево", соответственно. Предполагая, что у нас есть форма поверхности слева и лексическая
  +
формa справа, компиляция <code> lr </code> сделает морфологический анализатор и компиляция
 
<code> rl </code> сделает ''генератор''.
 
<code> rl </code> сделает ''генератор''.
   
Line 407: Line 285:
   
 
<pre>
 
<pre>
 
 
$ echo "nanow" | lt-proc hsb-mor.bin
 
$ echo "nanow" | lt-proc hsb-mor.bin
 
 
^nanow/nan<n><ma><du><gen>/nan<n><ma><du><acc>/nan<n><ma><pl><gen>/
 
^nanow/nan<n><ma><du><gen>/nan<n><ma><du><acc>/nan<n><ma><pl><gen>/
 
nan<n><ma><pl><acc>$
 
nan<n><ma><pl><acc>$
 
 
$ echo "^nan<n><ma><pl><gen>$" | lt-proc -g hsb-gen.bin
 
$ echo "^nan<n><ma><pl><gen>$" | lt-proc -g hsb-gen.bin
 
 
nanow
 
nanow
 
 
</pre>
 
</pre>
   
Чтобы получить полный список словаря, команда <code>lt-expand</code> может быть использована:
+
Чтобы получить полный список словаря, команда <code>lt-expand</code> может быть
  +
использована:
   
 
<pre>
 
<pre>
 
$ lt-expand hsb.dix
 
$ lt-expand hsb.dix
 
 
nan:nan<n><ma><sg><nom>
 
nan:nan<n><ma><sg><nom>
 
nana:nan<n><ma><sg><gen>
 
nana:nan<n><ma><sg><gen>
Line 433: Line 306:
 
nanaj:nan<n><ma><du><nom>
 
nanaj:nan<n><ma><du><nom>
 
nanow:nan<n><ma><du><gen>
 
nanow:nan<n><ma><du><gen>
 
 
...
 
...
 
</pre>
 
</pre>
Line 441: Line 313:
 
== Организация парадигмы ==
 
== Организация парадигмы ==
   
Что нужно сделать при добавлении слова ''hrěch'' "грех" это дублировать <code>nan__n_ma</code> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге будем с новой парадигмой, что-то вроде:
+
Что нужно сделать при добавлении слова''hrěch'' "грех" это дублировать <code> nan__n_ma</code> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге будем с новой парадигмой, что-то вроде:
   
 
<pre>
 
<pre>
 
 
<pardef n="hrěch__n_mi">
 
<pardef n="hrěch__n_mi">
  +
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="nom"/></r></p></e>
  +
<e><p><l>a</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="gen"/></r></p></e>
  +
<e><p><l>ej</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="dat"/></r></p></e>
  +
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
  +
<e><p><l>om</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="ins"/></r></p></e>
  +
<e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>
  +
<e><p><l>o</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="voc"/></r></p></e>
   
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="nom"/></r></p></e>
+
<e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="nom"/></r></p></e>
<e><p><l>a</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="gen"/></r></p></e>
+
<e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="gen"/></r></p></e>
<e><p><l>ej</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="dat"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="dat"/></r></p></e>
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
+
<e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>
<e><p><l>om</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="ins"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="ins"/></r></p></e>
<e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="loc"/></r></p></e>
<e><p><l>o</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="voc"/></r></p></e>
+
<e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="voc"/></r></p></e>
   
<e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="nom"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
<e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="gen"/></r></p></e>
+
<e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="gen"/></r></p></e>
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="dat"/></r></p></e>
+
<e><p><l>am</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="dat"/></r></p></e>
<e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="ins"/></r></p></e>
+
<e><p><l>ami</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="ins"/></r></p></e>
<e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="loc"/></r></p></e>
+
<e><p><l>ach</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="loc"/></r></p></e>
<e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="voc"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
 
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
 
<e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="gen"/></r></p></e>
 
<e><p><l>am</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="dat"/></r></p></e>
 
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
 
<e><p><l>ami</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="ins"/></r></p></e>
 
<e><p><l>ach</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="loc"/></r></p></e>
 
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
 
 
</pardef>
 
</pardef>
 
 
</pre>
 
</pre>
   
Line 482: Line 351:
 
</pre>
 
</pre>
   
Все отлично, и это хорошее место для начала, но если мы посмотрим на таблицы выше, парадигма''nan'' и парадигма''hrěch''имеют много суффиксов. Мы можем назвать парадигмы от других парадигм, так почему мы должны дублировать их?
+
Все отлично, и это хорошее место для начала, но если мы посмотрим на таблицу выше,
  +
парадигма''nan'' и парадигма''hrěch''имеют много суффиксов. Мы можем назвать парадигмы от
  +
других парадигм, так почему мы должны дублировать их?
   
В качестве альтернативы, первое, что мы делаем, для разделения из общих суффиксах в отдельную парадигму. Давайте назовем это <code>common__m< code> (для общего мужского
+
В качестве альтернативы, первое, что мы делаем, это разделения общих суффиксах в отдельную
  +
парадигму. Давайте назовем это <code>common__m</code> (для общего мужского суффиксa).
суффиксa).
 
   
 
<pre>
 
<pre>
 
 
<pardef n="common__m">
 
<pardef n="common__m">
<e><p><l></l><r><s n="sg"/><s n="nom"/></r></p></e>
+
<e><p><l></l><r><s n="sg"/><s n="nom"/></r></p></e>
<e><p><l>a</l><r><s n="sg"/><s n="gen"/></r></p></e>
+
<e><p><l>a</l><r><s n="sg"/><s n="gen"/></r></p></e>
<e><p><l>ej</l><r><s n="sg"/><s n="dat"/></r></p></e>
+
<e><p><l>ej</l><r><s n="sg"/><s n="dat"/></r></p></e>
<e><p><l>om</l><r><s n="sg"/><s n="ins"/></r></p></e>
+
<e><p><l>om</l><r><s n="sg"/><s n="ins"/></r></p></e>
<e><p><l>o</l><r><s n="sg"/><s n="voc"/></r></p></e>
+
<e><p><l>o</l><r><s n="sg"/><s n="voc"/></r></p></e>
   
<e><p><l>aj</l><r><s n="du"/><s n="nom"/></r></p></e>
+
<e><p><l>aj</l><r><s n="du"/><s n="nom"/></r></p></e>
<e><p><l>ow</l><r><s n="du"/><s n="gen"/></r></p></e>
+
<e><p><l>ow</l><r><s n="du"/><s n="gen"/></r></p></e>
<e><p><l>omaj</l><r><s n="du"/><s n="dat"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="du"/><s n="dat"/></r></p></e>
<e><p><l>omaj</l><r><s n="du"/><s n="ins"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="du"/><s n="ins"/></r></p></e>
<e><p><l>omaj</l><r><s n="du"/><s n="loc"/></r></p></e>
+
<e><p><l>omaj</l><r><s n="du"/><s n="loc"/></r></p></e>
<e><p><l>aj</l><r><s n="du"/><s n="voc"/></r></p></e>
+
<e><p><l>aj</l><r><s n="du"/><s n="voc"/></r></p></e>
   
<e><p><l>ow</l><r><s n="pl"/><s n="gen"/></r></p></e>
+
<e><p><l>ow</l><r><s n="pl"/><s n="gen"/></r></p></e>
<e><p><l>am</l><r><s n="pl"/><s n="dat"/></r></p></e>
+
<e><p><l>am</l><r><s n="pl"/><s n="dat"/></r></p></e>
<e><p><l>ami</l><r><s n="pl"/><s n="ins"/></r></p></e>
+
<e><p><l>ami</l><r><s n="pl"/><s n="ins"/></r></p></e>
<e><p><l>ach</l><r><s n="pl"/><s n="loc"/></r></p></e>
+
<e><p><l>ach</l><r><s n="pl"/><s n="loc"/></r></p></e>
 
</pardef>
 
</pardef>
 
 
</pre>
 
</pre>
   
Line 516: Line 385:
   
 
<pre>
 
<pre>
 
 
<pardef n="nan__n_ma">
 
<pardef n="nan__n_ma">
<e><p><l></l><r><s n="n"/><s n="ma"/></r></p><par n="common__m"/></e>
+
<e><p><l></l><r><s n="n"/><s n="ma"/></r></p><par n="common__m"/></e>
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
+
<e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
<e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>
+
<e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>
   
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>
+
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>
   
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
+
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
+
<e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
+
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
 
</pardef>
 
</pardef>
 
 
<pardef n="hrěch__n_mi">
 
<pardef n="hrěch__n_mi">
<e><p><l></l><r><s n="n"/><s n="mi"/></r></p><par n="common__m"/></e>
+
<e><p><l></l><r><s n="n"/><s n="mi"/></r></p><par n="common__m"/></e>
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
+
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
<e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>
+
<e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>
   
<e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>
+
<e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>
   
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
+
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
 
</pardef>
 
</pardef>
 
 
</pre>
 
</pre>
   
выработая общие суффикса парадигмы делает их более легким в обслуживании, но и более сложным для понимания.Особенности языка, Глубина описание и интуиции человека, пишущего словарь будет определять, в какой мере части могут быть выработанами на этом пути.
+
Bыработка общих суффиксах парадигмы делает их более легким в обслуживании, но и более сложным для понимания. Особенности языка, Глубина описание и интуиции человека, пишущего словарь будет определять, в какой мере части могут быть выработанами на этом пути.
   
 
Теперь попробуйте и добавьте другие два слова в словарь, а также их флективные парадигмы. Решение можно найти на [[Talk:Как использовать lttoolbox, чтобы разработать новый морфологический анализатор|talk page]].
 
Теперь попробуйте и добавьте другие два слова в словарь, а также их флективные парадигмы. Решение можно найти на [[Talk:Как использовать lttoolbox, чтобы разработать новый морфологический анализатор|talk page]].
   
Вы также можете попробовать добавить альтернативные формы (например,''hrěchu''качестве возможного родительного падежа единственного числа ''hrěch'').
+
Вы также можете попробовать добавить альтернативные формы (например, ''hrěchu'' качестве возможного родительного падежа единственного числа ''hrěch'').
   
 
== Примечания ==
 
== Примечания ==
Line 559: Line 425:
 
* [[Monodix basics]]
 
* [[Monodix basics]]
   
  +
* [[Как использовать HFST, чтобы разработать новый морфологический анализатор]]
* [[Starting a new language with HFST]]
 
   
[[Category:Документация на русском]]
+
[[Category:Документация на русском языке]]

Latest revision as of 18:36, 12 January 2012

Информация о том, как установить lttoolbox смотрите lttoolbox и minimal installation from SVN

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

Подготовка[edit]

Морфологический переводчик в lttoolbox имеет обычно один файл, .dix файл. Это определяет как морфемы в языке соединяются вместе,морфотактики, и как изменения происходят, когда эти морфемы соединяются вместе, морфографемика (или морфофонология). Например,

  • морфотактика: wolf<n><pl> → wolf + s
  • морфографемика: wolf + s → wolves

Oба рассматриваются в том же файле.

Язык[edit]

Язык который мы будем моделировать- Верхний сербский, славянский язык на котором говорят в Германии. Существует ограниченная грамматика на английском языке здесь, и это то, что мы будем использовать для нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции- существительные . Существительные в Верхнем сербскoм имеют семь падежей (именительный, родительный, дательный, винительный, местный, инструментальный, звательный), три числа (единственное, двойственное, множественное) и три рода (мужской, женский, средний). Как и в других славянских языках, живые выделяется в мужской род .[1].

Парадигмы[edit]

Здесь мы дадим четыре парадигмы, они станут основой реализации нашего достижения.

живой мужского рода (nan "отец")
Единственное число Двойственное число Mножественное число
Именительный nan nanaj nanojo
Родительный nana nanow nanow
Дательный nanej nanomaj nanam
Винительный nana nanow nanow
Инструментальный nanom nanomaj nanami
Местный nanje nanomaj nanach
Звательный nano! nanaj! nanojo!
неживой мужского рода (hrěch "грех")

Отличия от живого мужского рода парадигмы указаны синим цветом.

Единственное число Двойственное число Mножественное число
Именительный hrěch hrěchaj hrěchi
Родительный hrěcha hrěchow hrěchow
Дательный hrěchej hrěchomaj hrěcham
Винительный hrěch hrěchaj hrěchi
Инструментальный hrěchom hrěchomaj hrěchami
Местный hrěchu hrěchomaj hrěchach
Звательный hrěcho! hrěchaj! hrěchi!
женский род (wróna "ворона")

Общие части с парадигмами мужского рода выделены зеленым цветом.

Единственное число Двойственное число Mножественное число
Именительный wróna wrónje wróny
Родительный wrónu wrónow wrónow
Дательный wrónje wrónomaj wrónam
Винительный wrónu wrónje wróny
Инструментальный wrónu wrónomaj wrónami
Местный wrónje wrónomaj wrónach
Звательный wróna! wrónje! wrónu!
средний род (trašidło "чудовище")

Формы общего мужского и женского рода парадигм, выделены красным цветом.

Единственное число Двойственное число Mножественное число
Именительный trašidło trašidłe trašidła
Родительный trašidła trašidłow trašidłow
Дательный trašidłu trašidłomaj trašidłam
Винительный trašidło trašidłe trašidła
Инструментальный trašidłom trašidłomaj trašidłami
Местный trašidłe trašidłomaj trašidłach
Звательный trašidło! trašidłe! trašidła!

Лексикон[edit]

Учитывая описание выше, как мы можем начать писать морфологическое описание в lttoolbox? Ну, во-первых, мы начнем с нашего файла, hsb.dix , так что откройте текстовый редактор и сохраните пустой документ с таким именем.

Основы[edit]

Скелет

Основной скелет словаря lttoolbox выглядит следующим образом:

<dictionary>
<alphabet>abc...</alphabet>
<sdefs>
  ...
</sdefs>
<pardefs>
  ...
</pardefs>
<section id="main" type="standard">
  ...
</section>
</dictionary>

Bпишите это в файл, и это даcт набросок нашей основной части морфологии: алфавит; символы, которые дают нам полезные мнемоники для грамматических особенностей; <pardefs> раздел, который дает наши флективные парадигмы и, наконец, основной раздел файла, который содержит наши лексические элементы.

Символa (tag) определения

первым делом мы начнем сo спискa символов, которые будут кодировать наши грамматические особенности (речь, пол, число, падеж). Страница list of symbols дает некоторые общие тaги в Apertium. Вообще мы стараемся сохранить черты, которые названы одинаково среди языков одинаковой меткой и, таким образом, к примеру, тaг "именительный" будет <nom>, независимо от того, если мы говорим о румынском, сербско-хорватском, исландском или албанцком. Символы определены в <sdefs> разделe <sdef> элементов.

<sdefs>
  <sdef n="n"  c="Имя существительное"/>
  <sdef n="ma" c="Masculine (animate)"/>
  <sdef n="mi" c="Masculine (inanimate)"/>
  <sdef n="nt" c="Neuter"/>
  <sdef n="f"   c="Женский род"/>

  <sdef n="sg" c="Singular"/>
  <sdef n="du" c="Dual"/>
  <sdef n="pl" c="Plural"/>

  <sdef n="nom" c=" Nominative "/>
  <sdef n="gen" c=" Genitive "/>
  <sdef n="dat" c=" Dative "/>
  <sdef n="acc" c=" Accusative "/>
  <sdef n="ins" c=" Instrumental "/>
  <sdef n="loc" c=" Locative "/>
  <sdef n="voc" c=" Vocative "/>
</sdefs>

c после каждого символа определения означает комментарий (это не обязательно, но весьма удобно, если у вас есть много тaгов и нужнa быстрая ссылкa на то, что они означают)

Наша первая парадигма

После того как мы определили наши символы, то следующее, что нужно сделать, это написать нашу первую парадигму. Мы начнем с парадигмой nan "отец". Существует конвенции в Apertium, что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом слова и части речи. В этом случае мы также добавим пол.

Парадигмы состоят из серии записей. Каждая запись имеет пару (<p>), у которой есть левая сторона (<l>) и правая сторона (<r>). Как правило surface form находится на левой стороне и lexical form справа.

Мы можем использовать символы, которые мы определили ранее с <sdef> тaги, называя их с <s> элементoм.

<pardefs>
  <pardef n="nan__n_ma">
    <e><p><l></l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="nom"/></r></p></e>
    <e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="gen"/></r></p></e>
    <e><p><l>ej</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="dat"/></r></p></e>
    <e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
    <e><p><l>om</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="ins"/></r></p></e>
    <e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>
    <e><p><l>o</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="voc"/></r></p></e>

    <e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="nom"/></r></p></e>
    <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="gen"/></r></p></e>
    <e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="dat"/></r></p></e>
    <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>
    <e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="ins"/></r></p></e>
    <e><p><l>omaj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="loc"/></r></p></e>
    <e><p><l>aj</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="voc"/></r></p></e>

    <e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
    <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="gen"/></r></p></e>
    <e><p><l>am</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="dat"/></r></p></e>
    <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
    <e><p><l>ami</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="ins"/></r></p></e>
    <e><p><l>ach</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="loc"/></r></p></e>
    <e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
  </pardef>
</pardefs>
Использование Парадигмы

Теперь, когда мы определили парадигму, мы можем добавить слово, которое использует его. Очевидным выбором является "nan", являясь, как имя парадигмы.

<section id="main" type="standard">
  <e lm="nan"><i>nan</i><par n="nan__n_ma"/></e>
</section>

<e> элемент такой же, как в парадигме, но в случае лексических записей (в отличие от морфологических элементов), он обычно содержит атрибут lm "lemma". <i> тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.

Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл.

Компиляция[edit]

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

$ apertium-validate-dictionary hsb.dix

Если словарь еще в силе, вы не должны получить вывода.

Если вы не введете определение символа, то вы получите сообщение от проверки скрипта, например, следующие:

$ apertium-validate-dictionary hsb.dix
hsb.dix:25: element s: validity error : IDREF attribute n references an unknown ID "nom"
hsb.dix:33: element s: validity error : IDREF attribute n references an unknown ID "nom"
hsb.dix:41: element s: validity error : IDREF attribute n references an unknown ID "nom"
Document hsb.dix does not validate against /home/fran/local/share/apertium/dix.dtd

В этом случае лучше вернуться и проверить, что все ваши символы определены.

Если предположить, что наш словарь действующий, мы можем перейти к следующему шагу и скомпилировать его.

$ lt-comp lr hsb.dix hsb-mor.bin
main@standard 29 45
$ lt-comp rl hsb.dix hsb-gen.bin
main@standard 29 45

lr и rl на стенде команд компиляции для "слева направо" и "справа налево", соответственно. Предполагая, что у нас есть форма поверхности слева и лексическая формa справа, компиляция lr сделает морфологический анализатор и компиляция rl сделает генератор.

Пользование[edit]

See also: lttoolbox

Затем мы можем проверить их обоих следующим образом:

$ echo "nanow" | lt-proc hsb-mor.bin
^nanow/nan<n><ma><du><gen>/nan<n><ma><du><acc>/nan<n><ma><pl><gen>/
nan<n><ma><pl><acc>$
$ echo "^nan<n><ma><pl><gen>$" | lt-proc -g hsb-gen.bin
nanow

Чтобы получить полный список словаря, команда lt-expand может быть использована:

$ lt-expand hsb.dix
nan:nan<n><ma><sg><nom>
nana:nan<n><ma><sg><gen>
nanej:nan<n><ma><sg><dat>
nana:nan<n><ma><sg><acc>
nanom:nan<n><ma><sg><ins>
nanje:nan<n><ma><sg><loc>
nano:nan<n><ma><sg><voc>
nanaj:nan<n><ma><du><nom>
nanow:nan<n><ma><du><gen>
...

У нас все готово для создания словаря. Теперь переходим к нашему следующему слову.

Организация парадигмы[edit]

Что нужно сделать при добавлении словаhrěch "грех" это дублировать nan__n_ma парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге будем с новой парадигмой, что-то вроде:

<pardef n="hrěch__n_mi">
  <e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="nom"/></r></p></e>
  <e><p><l>a</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="gen"/></r></p></e>
  <e><p><l>ej</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="dat"/></r></p></e>
  <e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
  <e><p><l>om</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="ins"/></r></p></e>
  <e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>
  <e><p><l>o</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="voc"/></r></p></e>

  <e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="nom"/></r></p></e> 
  <e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="gen"/></r></p></e>
  <e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="dat"/></r></p></e>
  <e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>
  <e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="ins"/></r></p></e>
  <e><p><l>omaj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="loc"/></r></p></e>
  <e><p><l>aj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="voc"/></r></p></e>

  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
  <e><p><l>ow</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="gen"/></r></p></e>
  <e><p><l>am</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="dat"/></r></p></e>
  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
  <e><p><l>ami</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="ins"/></r></p></e>
  <e><p><l>ach</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="loc"/></r></p></e>
  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
</pardef>

Мы добавляем запись в основном разделе:


<e lm="hrěch"><i>hrěch</i><par n="hrěch__n_mi"/></e>

Все отлично, и это хорошее место для начала, но если мы посмотрим на таблицу выше, парадигмаnan и парадигмаhrěchимеют много суффиксов. Мы можем назвать парадигмы от других парадигм, так почему мы должны дублировать их?

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

<pardef n="common__m">
  <e><p><l></l><r><s n="sg"/><s n="nom"/></r></p></e>
  <e><p><l>a</l><r><s n="sg"/><s n="gen"/></r></p></e>
  <e><p><l>ej</l><r><s n="sg"/><s n="dat"/></r></p></e>
  <e><p><l>om</l><r><s n="sg"/><s n="ins"/></r></p></e>
  <e><p><l>o</l><r><s n="sg"/><s n="voc"/></r></p></e>

  <e><p><l>aj</l><r><s n="du"/><s n="nom"/></r></p></e>
  <e><p><l>ow</l><r><s n="du"/><s n="gen"/></r></p></e>
  <e><p><l>omaj</l><r><s n="du"/><s n="dat"/></r></p></e>
  <e><p><l>omaj</l><r><s n="du"/><s n="ins"/></r></p></e>
  <e><p><l>omaj</l><r><s n="du"/><s n="loc"/></r></p></e>
  <e><p><l>aj</l><r><s n="du"/><s n="voc"/></r></p></e>

  <e><p><l>ow</l><r><s n="pl"/><s n="gen"/></r></p></e>
  <e><p><l>am</l><r><s n="pl"/><s n="dat"/></r></p></e>
  <e><p><l>ami</l><r><s n="pl"/><s n="ins"/></r></p></e>
  <e><p><l>ach</l><r><s n="pl"/><s n="loc"/></r></p></e>
</pardef>

(Примечание: Мы не включаем части речи или пола, так как это отличается в зависимости от lemma.)

Теперь с этой "общей" доступной парадигмой, мы можем упростить nan__n_ma и hrěch__n_mi парадигмы, таким образом:

<pardef n="nan__n_ma">
  <e><p><l></l><r><s n="n"/><s n="ma"/></r></p><par n="common__m"/></e>
  <e><p><l>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="acc"/></r></p></e>
  <e><p><l>je</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="loc"/></r></p></e>

  <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="du"/><s n="acc"/></r></p></e>

  <e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="nom"/></r></p></e>
  <e><p><l>ow</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="acc"/></r></p></e>
  <e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
</pardef>
<pardef n="hrěch__n_mi">
  <e><p><l></l><r><s n="n"/><s n="mi"/></r></p><par n="common__m"/></e>
  <e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="acc"/></r></p></e>
  <e><p><l>u</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="loc"/></r></p></e>

  <e><p><l>oj</l><r><s n="n"/><s n="mi"/><s n="du"/><s n="acc"/></r></p></e>

  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="nom"/></r></p></e>
  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="acc"/></r></p></e>
  <e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
</pardef>

Bыработка общих суффиксах парадигмы делает их более легким в обслуживании, но и более сложным для понимания. Особенности языка, Глубина описание и интуиции человека, пишущего словарь будет определять, в какой мере части могут быть выработанами на этом пути.

Теперь попробуйте и добавьте другие два слова в словарь, а также их флективные парадигмы. Решение можно найти на talk page.

Вы также можете попробовать добавить альтернативные формы (например, hrěchu качестве возможного родительного падежа единственного числа hrěch).

Примечания[edit]

  1. Это описание является упрощенным. Реальность сложнее, но это достаточна на этот раз

Дополнительная литература[edit]

См. также[edit]