Difference between revisions of "Как использовать lttoolbox, чтобы разработать новый морфологический анализатор"
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>, так что откройте текстовый |
|
редактор и сохраните пустой документ с таким именем. |
редактор и сохраните пустой документ с таким именем. |
||
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|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". |
+ | морфологических элементов), он обычно содержит атрибут <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</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).
Примечания
- ↑ Это описание является упрощенным. Реальность сложнее, но это достаточна на этот раз