拉丁变形:

时间:2011-04-01 14:24:26

标签: parsing inflection latin

我不知道这里是否有人能说(或写)拉丁文的“死语”。但也许你甚至可以在不知道这种语言的情况下帮助我......

我有一个单词数据库(包括名词和动词)。现在我想生成那些名词和动词的所有不同(变形)形式。这样做的最佳策略是什么?

由于拉丁语是一种高度变化的语言,因此有:

a)the declension of nouns

b)the conjugation of verbs

有关动词结合(“mandare”)的示例,请参阅此翻译页面:conjugation

我不想手动输入所有单词的所有形式。那么如何自动生成它们呢?什么是最好的方法?

  • 如何反映所有单词的复杂规则列表
  • 贝叶斯方法
  • ...

非常感谢你!

编辑(可能的解决方案?):

我现在发现有一个名为“威廉·惠特克的话”的节目。它也会为拉丁词创造变形,所以它正是我想要做的事情。

Wikipedia表示该程序的工作方式如下:“单词使用一组基于自然前,内,后缀,变换和共轭的规则来确定输入的可能性。结果在分析单词结构的这种方法中,无法保证这些单词曾被用于拉丁文学或语言,即使该程序找到了某个单词的可能含义。“

该计划的来源也可用here。但我真的不明白这是如何工作的。你能帮助我吗?也许这就是我问题的解决方案......

4 个答案:

答案 0 :(得分:5)

您可以执行类似于hunspell词典格式的内容(请参阅http://www.manpagez.com/man/4/hunspell/

您定义了2个表。一个包含单词的根(永不改变的部分),另一个包含给定类的修改。对于给定的类,对于每个变量(或共轭),它告诉在根的结尾(或开头)添加哪些字符。它甚至可以指定替换给定数量的字符。现在,为了得到一个特定的变元,你取根,从它所属的类中应用变换,然后vo!

例如,对于mandare,root将是 mand ,并且该类将包含后缀,如 o 吃了 amous atis ...用于有效的指示性礼物。

答案 1 :(得分:3)

也许this会有所帮助

答案 2 :(得分:2)

我将使用名词作为例子,但它也适用于动词。

首先,我要创建两个类:RegularIrregular。对于Regular名词,我会为三个declensions创建三个类,并使它们都实现一个Declensable(或者这个词是英文:)接口(FirstDeclension extends Regular implements Declensable)。界面将定义两个static enum s(NOMINATIVEVOCATIVE等,以及SINGULARPLURAL)。 所有都有一个根的字符串和一个后缀的静态hashmap。然后,方法FirstDeclension#get (case, number)将根据hashmap附加正确的后缀。

Irregular类必须为每个单词定义一个本地散列映射,然后实现相同的Declensable接口。

它有意义吗?

附录:澄清一下,class Regular的构造函数将是

public Regular (String stem) {
    this.stem = stem
}

答案 3 :(得分:0)

也许,您可以在实施中遵循AOT的路线。 (它在LGPL下。)

AOT中没有拉丁形态,而只有俄语,德语,英语,其中俄语当然是一个像拉丁语一样复杂的屈折形态的例子,所以AOT应该作为实现它的框架。

尽管如此,我认为在进行编程之前,必须有一个精确的形态系统,用于已经明确定义的形态学。至于俄语,我猜,大多数工作形态计算机系统都是基于对Andrey Zalizniak所做的俄语形态的严肃分析以及俄语和相关作品的语法词典。