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

From Apertium
Jump to navigation Jump to search
Line 27: Line 27:
   
 
Язык который мы будем моделировать- Верхний сербский, славянский язык на котором
 
Язык который мы будем моделировать- Верхний сербский, славянский язык на котором
говорят в Германии. Существует ограниченная грамматика на английском языке [http:/
+
говорят в Германии. Существует ограниченная грамматика на английском языке [http://serbscina.w.interia.pl/iso/eindex.htm здесь], и это то, что мы будем использовать для
/serbscina.w.interia.pl/iso/eindex.htm здесь], и это то, что мы будем использовать для
 
 
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции-
 
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции-
 
существительные . Существительные в Верхнем сербскoм имеют семь падежей (именительный,
 
существительные . Существительные в Верхнем сербскoм имеют семь падежей (именительный,
Line 37: Line 36:
 
упрощенным. Реальность сложнее, но это достаточна на этот раз </ref>.
 
упрощенным. Реальность сложнее, но это достаточна на этот раз </ref>.
   
=== парадигмы ===
+
=== Парадигмы ===
   
 
Здесь мы дадим четыре парадигмы, они станут основой реализации нашего достижения.
 
Здесь мы дадим четыре парадигмы, они станут основой реализации нашего достижения.
Line 43: Line 42:
 
; живой мужского рода (''nan'' " отец ")
 
; живой мужского рода (''nan'' " отец ")
   
{|class=wikitable
 
   
!
 
   
  +
{|class=wikitable
  +
! !! Единственное число !! Двойственное число !! Mножественное число
 
|-
 
|-
  +
| Именительный || nan || nan'''aj''' || nan'''ojo'''
 
| Именительный
 
 
 
|-
 
|-
  +
| Родительный || 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'''!
 
 
|-
 
|-
 
| Местный
 
 
|-
 
 
| Звательный
 
 
|-
 
 
 
|}
 
|}
   
Line 84: Line 68:
   
 
{|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>!
 
 
|-
 
 
 
|}
 
|}
   
Line 133: Line 91:
   
 
{|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'' " чудовище ")
 
; средний род (''trašidło'' " чудовище ")
Line 180: Line 115:
   
 
{|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'''</
 
  +
| Звательный || trašidł'''o'''! || trašidł'''e'''! || trašidł'''a'''!
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>
 
 
|-
 
 
| Звательный
 
 
|-
 
 
 
|}
 
|}
   
 
== Лексикон ==
 
== Лексикон ==
   
Учитывая описание выше, как мы можем начать писать морфологическое описание в [[lttoolbox?
+
Учитывая описание выше, как мы можем начать писать морфологическое описание в [[lttoolbox]]?
]] Ну, во-первых, мы начнем с нашего файла, <code> hsb.dix </code>, так что откройте текстовый
+
Ну, во-первых, мы начнем с нашего файла, <code> hsb.dix </code>, так что откройте текстовый
 
редактор и сохраните пустой документ с таким именем.
 
редактор и сохраните пустой документ с таким именем.
   
Line 235: Line 146:
   
 
<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>
   
Line 277: Line 175:
   
 
<pre>
 
<pre>
 
 
<sdefs>
 
<sdefs>
 
 
<sdef n="n"
 
<sdef n="n"
 
 
<sdef n="ma" c="Masculine (animate)"/>
 
<sdef n="ma" c="Masculine (animate)"/>
 
 
<sdef n="mi" c="Masculine (inanimate)"/>
 
<sdef n="mi" c="Masculine (inanimate)"/>
 
 
<sdef n="nt" c="Neuter"/>
 
<sdef n="nt" c="Neuter"/>
 
 
<sdef n="f"
 
<sdef n="f"
 
 
<sdef n="sg" c="Singular"/>
 
<sdef n="sg" c="Singular"/>
 
 
<sdef n="du" c="Dual"/>
 
<sdef n="du" c="Dual"/>
 
 
<sdef n="pl" c="Plural"/>
 
<sdef n="pl" c="Plural"/>
 
 
<sdef n="nom" c=" Nominative "/>
 
<sdef n="nom" c=" Nominative "/>
 
 
<sdef n="gen" c=" Genitive "/>
 
<sdef n="gen" c=" Genitive "/>
 
 
<sdef n="dat" c=" Dative "/>
 
<sdef n="dat" c=" Dative "/>
 
 
<sdef n="acc" c=" Accusative "/>
 
<sdef n="acc" c=" Accusative "/>
 
 
<sdef n="ins" c=" Instrumental "/>
 
<sdef n="ins" c=" Instrumental "/>
 
 
<sdef n="loc" c=" Locative "/>
 
<sdef n="loc" c=" Locative "/>
 
 
<sdef n="voc" c=" Vocative "/>
 
<sdef n="voc" c=" Vocative "/>
 
 
</sdefs>
 
</sdefs>
 
 
</pre>
 
</pre>
   
Line 321: Line 201:
   
 
После того как мы определили наши символы, то следующее, что нужно сделать, это написать
 
После того как мы определили наши символы, то следующее, что нужно сделать, это написать
нашу первую парадигму. Мы начнем с парадигмой''nan""отец". Существует конвенции в Apertium,
+
нашу первую парадигму. Мы начнем с парадигмой ''nan" "отец". Существует конвенции в Apertium,
 
что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом
 
что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом
слова? и части речи. В этом случае мы также добавим пол.
+
слова и части речи. В этом случае мы также добавим пол.
   
Парадигмы состоят из серии записей. Каждая запись имеет '' пару '' ({{tag|p}}), у которой
+
Парадигмы состоят из серии записей. Каждая запись имеет ''пару'' ({{tag|p}}), у которой
 
есть ''левая'' сторона ({{tag|l}}) и ''правая'' сторона ({{tag|r}}). Как правило [[surface form]]
 
есть ''левая'' сторона ({{tag|l}}) и ''правая'' сторона ({{tag|r}}). Как правило [[surface form]]
 
находится на левой стороне и [[lexical form]] справа.
 
находится на левой стороне и [[lexical form]] справа.
Line 333: Line 213:
   
 
<pre>
 
<pre>
 
 
<pardefs>
 
<pardefs>
 
 
<pardef n="nan__n_ma">
 
<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></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>
 
 
</pardef>
 
</pardef>
 
 
</pardefs>
 
</pardefs>
 
 
</pre>
 
</pre>
   
Line 392: Line 246:
   
 
<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>
   
 
{{tag|e}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от
 
{{tag|e}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от
морфологических элементов), он обычно содержит атрибут <code> lm </code> "lemma".{{тaг|я}}
+
морфологических элементов), он обычно содержит атрибут <code> lm </code> "lemma".
тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.
+
{{tag|i}} тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны.
   
 
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл.
 
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл.
Line 414: Line 264:
   
 
<pre>
 
<pre>
 
 
$ apertium-validate-dictionary hsb.dix
 
$ apertium-validate-dictionary hsb.dix
 
 
</pre>
 
</pre>
   
Line 425: Line 273:
   
 
<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 444: Line 286:
   
 
<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>
   
Line 467: Line 304:
   
 
<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>
   
Line 483: Line 315:
   
 
<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 512: Line 332:
 
== Организация парадигмы ==
 
== Организация парадигмы ==
   
Что нужно сделать при добавлении слова''''hrěch "грех" это дублировать <code> nan__n_ma</
+
Что нужно сделать при добавлении слова''hrěch" "грех" это дублировать <code> nan__n_ma</code> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге
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></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>
 
 
</pre>
 
</pre>
   
Line 579: Line 374:
   
 
В качестве альтернативы, первое, что мы делаем, это разделения общих суффиксах в отдельную
 
В качестве альтернативы, первое, что мы делаем, это разделения общих суффиксах в отдельную
парадигму. Давайте назовем это <code>common__m<code> (для общего мужского суффиксa).
+
парадигму. Давайте назовем это <code>common__m</code> (для общего мужского суффикс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 626: Line 403:
   
 
<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ыработка общих суффиксах парадигмы делает их более легким в обслуживании, но и более
 
сложным для понимания.Особенности языка, Глубина описание и интуиции человека, пишущего
 
сложным для понимания.Особенности языка, Глубина описание и интуиции человека, пишущего
 
словарь будет определять, в какой мере части могут быть выработанами на этом пути.
 
словарь будет определять, в какой мере части могут быть выработанами на этом пути.
Line 672: Line 430:
 
Решение можно найти на [[Talk:Starting a new language with lttoolbox|talk page]].
 
Решение можно найти на [[Talk:Starting a new language with lttoolbox|talk page]].
   
Вы также можете попробовать добавить альтернативные формы (например,''hrěchu''качестве
+
Вы также можете попробовать добавить альтернативные формы (например, ''hrěchu'' качестве
возможного родительного падежа единственного числа''hrěch'').
+
возможного родительного падежа единственного числа ''hrěch'').
   
 
== Примечания ==
 
== Примечания ==
Line 686: Line 444:
   
 
* [[Starting a new language with HFST]]
 
* [[Starting a new language with HFST]]
 
[[Category:Documentation]]
 
 
Именительный Кто? Что?
 
 
РодительныйнетКого? Чего?
 
 
ДательныйдатьКому? Чему?
 
 
ВинительныйвижуКого? Что?
 
 
ТворительныйгоржусьКем? Чем?
 
 
ПредложныйдумаюО ком? О чём?
 

Revision as of 16:09, 12 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ба рассматриваются в том же файле.

Язык

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

Парадигмы

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

живой мужского рода (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!

Лексикон

Учитывая описание выше, как мы можем начать писать морфологическое описание в 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". <i> т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 парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге будем с новой парадигмой, что-то вроде:

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

Примечания

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

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

См. также