Латинский перегиб: - PullRequest
       34

Латинский перегиб:

7 голосов
/ 01 апреля 2011

Я не знаю, может ли кто-нибудь здесь говорить (или писать) на "мертвом языке" на латыни.Но, может быть, вы даже можете помочь мне, не зная этого языка ...

У меня есть база слов (включая существительные и глаголы).Теперь я хотел бы генерировать все различные (склоняемые) формы этих существительных и глаголов.Какова была бы лучшая стратегия для этого?

Поскольку латынь - это язык с сильными склонностями, существует:

a) склонение существительных

b) спряжение глаголов

На этой переведенной странице приведен пример спряжения глагола ("mandare"): спряжение

Я не хочу вводить все эти формы для всех слов вручную.Так как я могу генерировать их автоматически?Какой наилучший подход?

  • список сложных правил, как перебрать все слова
  • Байесовские методы
  • ...

Заранее большое спасибо!

Редактировать (возможное решение?):

Теперь я узнал, что есть программа под названием "Слова Уильяма Уитакера".Он также создает перегибы для латинских слов, поэтому он точно делает то, что я хочу.

Википедия говорит, что программа работает так: «Слова используют набор правил, основанных на естественномпре-, ин- и суффиксы, склонения и спряжения для определения возможности записи. Как следствие такого подхода к анализу структуры слов, нет никакой гарантии, что эти слова когда-либо использовались в латинской литературе или речи,даже если программа находит возможное значение для данного слова. "

Источник программы также доступен здесь .Но я не очень понимаю, как это работает.Вы можете мне помочь?Может быть, это решение моего вопроса ...

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Вы можете сделать что-то похожее на формат словаря hunspell (см. http://www.manpagez.com/man/4/hunspell/)

Вы определяете 2 таблицы. Один содержит корни слов (часть, которая никогда не меняется), а другой содержит модификации для данного класса. Для данного класса, для каждого склонения (или спряжения), он сообщает, какие символы добавить в конец (или начало) корня. Он даже может указать, чтобы заменить заданное количество символов. Теперь, чтобы получить слово с определенным склонением, вы берете корень, применяете преобразование к классу, которому оно принадлежит, и вуаля!

Например, для mandare корень будет mand , а класс будет содержать суффиксы, такие как o , как , ели , amous , atis ... для активного индикативного подарка.

3 голосов
/ 01 апреля 2011

Возможно , это поможет

2 голосов
/ 11 апреля 2011

Я буду использовать в качестве примера существительные, но это относится и к глаголам.

Во-первых, я бы создал два класса: Regular и Irregular.Для существительных Regular я бы сделал три класса для трех склонений и заставил их всех реализовать Declensable (или, тем не менее, слово на английском языке :) (FirstDeclension extends Regular implements Declensable).Интерфейс будет определять два static enum s (NOMINATIVE, VOCATIVE и т. Д. И SINGULAR, PLURAL).У всех будет строка для корня и статическая хэш-карта суффиксов.Затем метод FirstDeclension#get (case, number) добавит правильный суффикс, основанный на хэш-карте.

Класс Irregular должен определить локальное хеш-карту для каждого слова и затем реализовать тот же интерфейс Declensable.

Имеет ли это какой-то смысл?

Приложение : Чтобы уточнить, конструктор class Regular будет

public Regular (String stem) {
    this.stem = stem
}
0 голосов
/ 11 апреля 2011

Возможно, вы могли бы следовать линии AOT в вашей реализации.(Это под LGPL.)

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

Тем не менее, я считаю, чтоиметь тщательно продуманную формальную систему морфологии, уже четко определенную, прежде чем приступать к программированию.Что касается русского языка, я полагаю, что большинство работающих морфологических компьютерных систем основаны на серьезном анализе русской морфологии, проведенном Андреем Зализняком и в Грамматическом словаре русского языка и связанных с ним работах.

...