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