我不知道这里是否有人能说(或写)拉丁文的“死语”。但也许你甚至可以在不知道这种语言的情况下帮助我......
我有一个单词数据库(包括名词和动词)。现在我想生成那些名词和动词的所有不同(变形)形式。这样做的最佳策略是什么?
由于拉丁语是一种高度变化的语言,因此有:
有关动词结合(“mandare”)的示例,请参阅此翻译页面:conjugation
我不想手动输入所有单词的所有形式。那么如何自动生成它们呢?什么是最好的方法?
非常感谢你!
编辑(可能的解决方案?):
我现在发现有一个名为“威廉·惠特克的话”的节目。它也会为拉丁词创造变形,所以它正是我想要做的事情。
Wikipedia表示该程序的工作方式如下:“单词使用一组基于自然前,内,后缀,变换和共轭的规则来确定输入的可能性。结果在分析单词结构的这种方法中,无法保证这些单词曾被用于拉丁文学或语言,即使该程序找到了某个单词的可能含义。“
该计划的来源也可用here。但我真的不明白这是如何工作的。你能帮助我吗?也许这就是我问题的解决方案......
答案 0 :(得分:5)
您可以执行类似于hunspell词典格式的内容(请参阅http://www.manpagez.com/man/4/hunspell/)
您定义了2个表。一个包含单词的根(永不改变的部分),另一个包含给定类的修改。对于给定的类,对于每个变量(或共轭),它告诉在根的结尾(或开头)添加哪些字符。它甚至可以指定替换给定数量的字符。现在,为了得到一个特定的变元,你取根,从它所属的类中应用变换,然后vo!
例如,对于mandare,root将是 mand ,并且该类将包含后缀,如 o ,为,吃了, amous , atis ...用于有效的指示性礼物。
答案 1 :(得分:3)
也许this会有所帮助
答案 2 :(得分:2)
我将使用名词作为例子,但它也适用于动词。
首先,我要创建两个类:Regular
和Irregular
。对于Regular
名词,我会为三个declensions创建三个类,并使它们都实现一个Declensable(或者这个词是英文:)接口(FirstDeclension extends Regular implements Declensable
)。界面将定义两个static enum
s(NOMINATIVE
,VOCATIVE
等,以及SINGULAR
,PLURAL
)。
所有都有一个根的字符串和一个后缀的静态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所做的俄语形态的严肃分析以及俄语和相关作品的语法词典。