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

From Apertium
Jump to navigation Jump to search
Line 4: Line 4:
   
 
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит
 
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит
для агглютинативных языков, или языков со сложной и регулярной морфо-фонологиыой (или по
+
для агглютинативных языков, или языков со сложной и регулярной морфо-фонологией (или по
 
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы
 
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы
будем работать над таким с языком с простой и менее регулярной морфологийой. В частности,
+
будем работать над таким с языком с простой и менее регулярной морфологией. В частности, мы
мы рекомендуем людям использовать lttoolbox возможности; lttoolbox имеет простой синтаксис,
+
рекомендуем людям использовать lttoolbox возможности; lttoolbox имеет простой синтаксис, есть
есть несколько очень полезных функций для проверки и является канонической частью Apertium,
+
несколько очень полезных функций для проверки и является канонической частью Apertium, не
не требующий никакого специального программного обеспечения для установки.
+
требующей никакого специального программного обеспечения для установки.
   
 
== Подготовка==
 
== Подготовка==
   
Морфологических переводчик в lttoolbox имеет обычно один файл, <code>.dix</code> файл.
+
Морфологический переводчик в lttoolbox имеет обычно один файл, <code>.dix</code> файл.
 
Это определяет как морфемы в языке соединяются вместе,''морфотактики'', и как изменения
 
Это определяет как морфемы в языке соединяются вместе,''морфотактики'', и как изменения
 
происходят, когда эти морфемы соединяются вместе, ''морфографемика''(или''морфофонология'').
 
происходят, когда эти морфемы соединяются вместе, ''морфографемика''(или''морфофонология'').
Line 19: Line 19:
   
 
* морфотактика: 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'' " отец ")
Line 41: Line 45:
 
{|class=wikitable
 
{|class=wikitable
   
  +
!
! !! единственное число !! !!
 
  +
 
|-
 
|-
  +
| Именительный || nan || ||
 
  +
| Именительный
  +
 
|-
 
|-
  +
| Родительный || nan'''a''' || nan'''ow''' || nan'''ow'''
 
  +
| Родительный
  +
 
|-
 
|-
  +
| Дательный || nan'''ej''' || nan'''omaj''' || nan'''am'''
 
  +
| Дательный
|-
 
  +
| Винительный || nan'''a''' || nan'''ow''' || nan'''ow'''
 
|-
 
| Творительный || nan'''om''' || nan'''omaj''' || nan'''ami'''
 
 
|-
 
|-
| Местный || nan'''je''' || nan'''omaj''' || nan'''ach'''
 
|-
 
| Звательный || nan'''o''' || nan'''aj''' || nan'''ojo'''
 
|-
 
|}
 
   
  +
| Винительный
   
  +
|-
   
  +
| Инструментальные
   
  +
|-
   
  +
| Местный
   
  +
|-
   
  +
| Звательный
   
  +
|-
   
  +
|}
   
 
; неживой мужского рода (''hrěch'' " грех ")
 
; неживой мужского рода (''hrěch'' " грех ")
Line 73: Line 84:
   
 
{|class=wikitable
 
{|class=wikitable
 
!! единственное число
 
   
 
!
 
!
Line 97: Line 106:
 
|| <span style="background-color:#cceeff">hrěch</span>
 
|| <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'''aj'''</span> || <span style="background-
  +
color:#cceeff">hrěch'''i'''</span>
   
 
|-
 
|-
Line 111: Line 121:
   
 
| Звательный
 
| Звательный
|| hrěch'''o'''! || hrěch'''aj'''! || <span style="background-color:#cceeff">hrěch'''i'''</span>!
+
|| hrěch'''o'''! || hrěch'''aj'''! || <span style="background-
  +
color:#cceeff">hrěch'''i'''</span>!
   
 
|-
 
|-
   
 
|}
 
|}
 
|| 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'' "ворона")
 
; женский (''wróna'' "ворона")
Line 132: Line 135:
   
 
!
 
!
 
!! единственное число
 
   
 
|-
 
|-
Line 173: Line 174:
   
 
|}
 
|}
 
|| 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'' " чудовище ")
 
; средний род (''trašidło'' " чудовище ")
Line 187: Line 182:
   
 
!
 
!
 
!! единственное число
 
   
 
|-
 
|-
Line 212: Line 205:
 
|-
 
|-
   
| Инструментальные || trašidł'''om''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> || <span style="background-color:#ffcccc">trašidł'''ami'''</span>
+
| Инструментальные || 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ł'''e''' || <span style="background-color:#ffcccc">trašidł'''omaj'''</span> ||
  +
<span style="background-color:#ffcccc">trašidł'''ach'''</span>
   
 
|-
 
|-
Line 226: Line 221:
   
 
|}
 
|}
 
|| 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 246: Line 237:
   
 
<dictionary>
 
<dictionary>
  +
 
<alphabet>abc...</alphabet>
 
<alphabet>abc...</alphabet>
  +
 
<sdefs>
 
<sdefs>
   
Line 252: Line 245:
   
 
</sdefs>
 
</sdefs>
  +
 
<pardefs>
 
<pardefs>
   
Line 257: Line 251:
   
 
</pardefs>
 
</pardefs>
  +
 
<section id="main" type="standard">
 
<section id="main" type="standard">
   
Line 262: Line 257:
   
 
</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ги
одинаковой меткой и, таким образом, к примеру, тaг "именительный" будет {{tag|nom}}, независимо от того, если мы говорим о румынском, сербско-хорватском, исландском или албанцев. Символы определены в {{tag|sdefs}} разделe {{tag|sdef}} элементов.
 
  +
в Apertium. Вообще мы стараемся сохранить черты, которые названы одинаково среди языков
  +
одинаковой меткой и, таким образом, к примеру, тaг "именительный" будет {{tag|nom}},
  +
независимо от того, если мы говорим о румынском, сербско-хорватском, исландском или
  +
албанцком. Символы определены в {{tag|sdefs}} разделe {{tag|Sdef}} элементов.
   
 
<pre>
 
<pre>
   
 
<sdefs>
 
<sdefs>
<sdef n="n" c="Noun"/>
 
   
<sdef n="ma" c="Masculine (animate)"/>
+
<sdef n="n"
  +
<sdef n="mi" c="Masculine (inanimate)"/>
 
<sdef n="nt" c="Neuter"/>
+
<sdef n="ma" c="Masculine (animate)"/>
  +
<sdef n="f" c="Feminine"/>
 
  +
<sdef n="mi" c="Masculine (inanimate)"/>
  +
  +
<sdef n="nt" c="Neuter"/>
  +
  +
<sdef n="f"
  +
  +
<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="sg" c="Singular"/>
+
<sdef n="voc" c=" Vocative "/>
<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>
 
</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>
Line 315: Line 339:
   
 
<e><p><l></l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="nom"/></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>a</l><r><s n="n"/><s n="ma"/><s n="sg"/><s n="gen"/></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>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>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>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>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>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>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>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>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>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="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>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>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>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>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>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>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>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>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>
 
<e><p><l>ojo</l><r><s n="n"/><s n="ma"/><s n="pl"/><s n="voc"/></r></p></e>
   
Line 352: Line 394:
   
 
<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>
   
{{tag|e}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от морфологических элементов), он обычно содержит атрибут <code>lm</code> "lemma". {{tag|i}} тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.
+
{{tag|e}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от
  +
морфологических элементов), он обычно содержит атрибут <code> lm </code> "lemma".{{тaг|я}}
  +
тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.
   
 
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл.
 
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл.
Line 363: Line 409:
 
=== Компиляция ===
 
=== Компиляция ===
   
После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить его. Предполагая, что файл называется <code> hsb.dix </code>, то следующий будет проверять его от определениях:
+
После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить
  +
его. Предполагая, что файл называется <code> hsb.dix </code>, то следующий будет проверять его
  +
от определениях:
   
 
<pre>
 
<pre>
  +
 
$ apertium-validate-dictionary hsb.dix
 
$ apertium-validate-dictionary hsb.dix
  +
 
</pre>
 
</pre>
   
 
Если словарь еще в силе, вы не должны получить вывода.
 
Если словарь еще в силе, вы не должны получить вывода.
   
Это главное преимущество над относящимися к программного обеспечения (например, [[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>
   
 
В этом случае лучше вернуться и проверить, что все ваши символы определены.
 
В этом случае лучше вернуться и проверить, что все ваши символы определены.
   
Если предположить, что наш словарь действующий, мы можем перейти к следующему шагу и скомпилировать его.
+
Если предположить, что наш словарь действующий, мы можем перейти к следующему шагу и
  +
скомпилировать его.
   
 
<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 419: Line 479:
 
</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>
  +
 
nanej:nan<n><ma><sg><dat>
 
nanej:nan<n><ma><sg><dat>
  +
 
nana:nan<n><ma><sg><acc>
 
nana:nan<n><ma><sg><acc>
  +
 
nanom:nan<n><ma><sg><ins>
 
nanom:nan<n><ma><sg><ins>
  +
 
nanje:nan<n><ma><sg><loc>
 
nanje:nan<n><ma><sg><loc>
  +
 
nano:nan<n><ma><sg><voc>
 
nano:nan<n><ma><sg><voc>
  +
 
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 512:
 
== Организация парадигмы ==
 
== Организация парадигмы ==
   
Что нужно сделать при добавлении слова ''hrěch'' "грех" это дублировать <code>nan__n_ma</code> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге будем с новой парадигмой, что-то вроде:
+
Что нужно сделать при добавлении слова''''hrěch "грех" это дублировать <code> nan__n_ma</
  +
code> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге
  +
будем с новой парадигмой, что-то вроде:
   
 
<pre>
 
<pre>
Line 448: Line 521:
   
 
<e><p><l></l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="nom"/></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>a</l><r><s n="n"/><s n="mi"/><s n="sg"/><s n="gen"/></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>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></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>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>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>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>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>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>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>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="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>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>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>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>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>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>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>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>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>
 
<e><p><l>i</l><r><s n="n"/><s n="mi"/><s n="pl"/><s n="voc"/></r></p></e>
  +
 
</pardef>
 
</pardef>
   
Line 482: Line 574:
 
</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>
   
(Примечание: Мы не включаем части речи или пола, так как это отличается в зависимости от lemma.)
+
(Примечание: Мы не включаем части речи или пола, так как это отличается в зависимости от
  +
lemma.)
   
Теперь с этой "общей" доступной парадигмой, мы можем упростить <code>nan__n_ma</code> и <code>hrěch__n_mi</code> парадигмы, таким образом:
+
Теперь с этой "общей" доступной парадигмой, мы можем упростить <code>nan__n_ma</code> и
  +
<code>hrěch__n_mi</code> парадигмы, таким образом:
   
 
<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>
   
Line 525: Line 638:
   
 
<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>
   
Line 537: Line 656:
   
 
<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>
   
выработая общие суффикса парадигмы делает их более легким в обслуживании, но и более сложным для понимания.Особенности языка, Глубина описание и интуиции человека, пишущего словарь будет определять, в какой мере части могут быть выработанами на этом пути.
+
выработка общих суффиксах парадигмы делает их более легким в обслуживании, но и более
  +
сложным для понимания.Особенности языка, Глубина описание и интуиции человека, пишущего
  +
словарь будет определять, в какой мере части могут быть выработанами на этом пути.
   
Теперь попробуйте и добавьте другие два слова в словарь, а также их флективные парадигмы. Решение можно найти на [[Talk:Как использовать lttoolbox, чтобы разработать новый морфологический анализатор|talk page]].
+
Теперь попробуйте и добавьте другие два слова в словарь, а также их флективные парадигмы.
  +
Решение можно найти на [[Talk:Starting a new language with lttoolbox|talk page]].
   
Вы также можете попробовать добавить альтернативные формы (например,''hrěchu''качестве возможного родительного падежа единственного числа ''hrěch'').
+
Вы также можете попробовать добавить альтернативные формы (например,''hrěchu''качестве
  +
возможного родительного падежа единственного числа''hrěch'').
   
 
== Примечания ==
 
== Примечания ==
Line 561: Line 687:
 
* [[Starting a new language with HFST]]
 
* [[Starting a new language with HFST]]
   
[[Category:Документация на русском]]
+
[[Category:Documentation]]
  +
  +
Именительный Кто? Что?
  +
  +
РодительныйнетКого? Чего?
  +
  +
ДательныйдатьКому? Чему?
  +
  +
ВинительныйвижуКого? Что?
  +
  +
ТворительныйгоржусьКем? Чем?
  +
  +
ПредложныйдумаюО ком? О чём?

Revision as of 16:14, 11 January 2012

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

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

Подготовка

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

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

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

Язык

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

парадигмы

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

живой мужского рода (nan " отец ")
Именительный
Родительный
Дательный
Винительный
Инструментальные
Местный
Звательный
неживой мужского рода (hrěch " грех ")

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

Именительный hrěch

color:#cceeff">hrěchi

Родительный
Дательный
Винительный hrěch

hrěchaj || hrěchi

Инструментальные
Местный

hrěchach

Звательный hrěcho! hrěchaj! hrěchi!
женский (wróna "ворона")

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

Именительный
Родительный wrónu wrónow

wrónow

Дательный wrónje wrónomaj

wrónam

Винительный
Инструментальные wrónu wrónomaj wrónami
Местный wrónje wrónomaj

wrónach

Звательный
средний род (trašidło " чудовище ")

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

Именительный
Родительный trašidła trašidłow

trašidłow

Дательный trašidłu trašidłomaj

trašidłam

Винительный
Инструментальные trašidłom trašidłomaj</

span> || trašidłami

Местный trašidłe trašidłomaj

trašidłach

Звательный

Лексикон

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

Основы

Скелет

Основной скелет словаря 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"

<sdef n="ma" c="Masculine (animate)"/>

<sdef n="mi" c="Masculine (inanimate)"/>

<sdef n="nt" c="Neuter"/>

<sdef n="f"

<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".Template:Тaг тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.

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

Компиляция

После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить его. Предполагая, что файл называется 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 сделает генератор.

Пользование

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>

...

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

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

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


<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>

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

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

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

Примечания

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

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

См. также

Именительный Кто? Что?

РодительныйнетКого? Чего?

ДательныйдатьКому? Чему?

ВинительныйвижуКого? Что?

ТворительныйгоржусьКем? Чем?

ПредложныйдумаюО ком? О чём?