Difference between revisions of "Как использовать lttoolbox, чтобы разработать новый морфологический анализатор"
Line 4: | Line 4: | ||
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит |
Здесь мы объясним, как изучать новый язык с [[lttoolbox]]. lttoolbox на самом деле не подходит |
||
− | для агглютинативных языков, или языков со сложной и регулярной морфо- |
+ | для агглютинативных языков, или языков со сложной и регулярной морфо-фонологией (или по |
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы |
крайней мере никто не написал словарь с нуля, используя lttoolbox для одного из этих языков), мы |
||
− | будем работать над таким с языком с простой и менее регулярной |
+ | будем работать над таким с языком с простой и менее регулярной морфологией. В частности, мы |
− | + | рекомендуем людям использовать lttoolbox возможности; lttoolbox имеет простой синтаксис, есть |
|
− | + | несколько очень полезных функций для проверки и является канонической частью Apertium, не |
|
− | + | требующей никакого специального программного обеспечения для установки. |
|
== Подготовка== |
== Подготовка== |
||
− | + | Морфологический переводчик в 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:/ |
+ | говорят в Германии. Существует ограниченная грамматика на английском языке [http:/ |
+ | /serbscina.w.interia.pl/iso/eindex.htm здесь], и это то, что мы будем использовать для |
||
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции- |
нашего анализа.Часть речи, на которую мы будем смотреть в этой небольшой инструкции- |
||
− | существительные . Существительные в |
+ | существительные . Существительные в Верхнем сербскoм имеют семь падежей (именительный, |
− | родительный, дательный, винительный, местный, |
+ | родительный, дательный, винительный, местный, инструментальный, звательный), три числа |
− | (единственное, двойственное, множественное) и три рода (мужской, женский, средний). Как |
+ | (единственное, двойственное, множественное) и три рода (мужской, женский, средний). Как |
− | других славянских языках, |
+ | и в других славянских языках, живые выделяется в мужской род .<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- |
+ | <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- |
+ | || 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'''</ |
+ | | Инструментальные || 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> || |
+ | || 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 |
+ | Учитывая описание выше, как мы можем начать писать морфологическое описание в [[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> |
||
− | + | Bпишите это в файл, и это даcт набросок нашей основной части морфологии: алфавит; символы, |
|
+ | которые дают нам полезные мнемоники для грамматических особенностей; {{tag|pardefs}} |
||
+ | раздел, который дает наши флективные парадигмы и, наконец, основной раздел файла, который |
||
+ | содержит наши лексические элементы. |
||
; Символa (tag) определения |
; Символa (tag) определения |
||
− | первым делом мы начнем |
+ | первым делом мы начнем с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="n" |
|
+ | |||
− | <sdef n="mi" c="Masculine (inanimate)"/> |
||
− | + | <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="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> после каждого символа определения означает комментарий (это не |
+ | <code> c </code> после каждого символа определения означает комментарий ( это не |
+ | обязательно, но весьма удобно, если у вас есть много тaгов и нужнa быстрая ссылкa на то, что они |
||
+ | означают) |
||
; Наша первая парадигма |
; Наша первая парадигма |
||
− | После того как мы определили наши символы, то следующее, что нужно сделать, это написать |
+ | После того как мы определили наши символы, то следующее, что нужно сделать, это написать |
+ | нашу первую парадигму. Мы начнем с парадигмой''nan""отец". Существует конвенции в Apertium, |
||
+ | что идентификатор каждой основной парадигмы состоит из по крайней мере имя образцом |
||
+ | слова? и части речи. В этом случае мы также добавим пол. |
||
− | Парадигмы |
+ | Парадигмы состоят из серии записей. Каждая запись имеет '' пару '' ({{tag|p}}), у которой |
+ | есть ''левая'' сторона ({{tag|l}}) и ''правая'' сторона ({{tag|r}}). Как правило [[surface form]] |
||
+ | находится на левой стороне и [[lexical form]] справа. |
||
− | Мы можем использовать символы, которые мы определили ранее с {{tag| |
+ | Мы можем использовать символы, которые мы определили ранее с {{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}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от |
+ | {{tag|e}} элемент такой же, как в парадигме, но в случае лексических записей (в отличие от |
+ | морфологических элементов), он обычно содержит атрибут <code> lm </code> "lemma".{{тaг|я}} |
||
+ | тaг означает «инвариант» и означает, что левая сторона такая же, как правaя стороны. |
||
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл. |
Так к этому моменту мы должны иметь целый словарь с одного слова в нем. Сохраните файл. |
||
Line 363: | Line 409: | ||
=== Компиляция === |
=== Компиляция === |
||
− | После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить |
+ | После того как вы сохранили файл, вы можете пойти к командной строке и попытаться проверить |
+ | его. Предполагая, что файл называется <code> hsb.dix </code>, то следующий будет проверять его |
||
+ | от определениях: |
||
<pre> |
<pre> |
||
+ | |||
$ apertium-validate-dictionary hsb.dix |
$ apertium-validate-dictionary hsb.dix |
||
+ | |||
</pre> |
</pre> |
||
Если словарь еще в силе, вы не должны получить вывода. |
Если словарь еще в силе, вы не должны получить вывода. |
||
− | + | Если вы не введете определение символа, то вы получите сообщение от проверки скрипта, |
|
+ | например, следующие: |
||
<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> на стенде команд компиляции для "слева направо" и "справа |
+ | <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> парадигму, но изменить пол и поверхности формы, которые отличаются. Тогда мы в итоге |
||
+ | будем с новой парадигмой, что-то вроде: |
||
<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''имеют много суффиксов. Мы можем назвать парадигмы от |
||
+ | других парадигм, так почему мы должны дублировать их? |
||
− | В качестве альтернативы, первое, что мы делаем, |
+ | В качестве альтернативы, первое, что мы делаем, это разделения общих суффиксах в отдельную |
+ | парадигму. Давайте назовем это <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.) |
||
− | Теперь с этой "общей" доступной парадигмой, мы можем упростить <code>nan__n_ma</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:Starting a new language with lttoolbox|talk page]]. |
||
− | Вы также можете попробовать добавить альтернативные формы (например,''hrěchu''качестве |
+ | Вы также можете попробовать добавить альтернативные формы (например,''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).
Примечания
- ↑ Это описание является
упрощенным. Реальность сложнее, но это достаточна на этот раз
Дополнительная литература
См. также
Именительный Кто? Что?
РодительныйнетКого? Чего?
ДательныйдатьКому? Чему?
ВинительныйвижуКого? Что?
ТворительныйгоржусьКем? Чем?
ПредложныйдумаюО ком? О чём?