7

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

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

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

a)名词的变格

b)动词变位

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

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

  • 复杂规则列表如何影响所有单词
  • 贝叶斯方法
  • ...

非常感谢您!

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

我现在发现有一个叫做“威廉·惠特克的话”的程序。它也为拉丁词创造了变化,所以它正是在做我想做的事。

维基百科说该程序的工作原理是这样的:“Words 使用一组基于自然前置、in-、后缀、变格和共轭的规则来确定条目的可能性。由于这种分析结构的方法即使程序找到了给定单词的可能含义,也不能保证这些单词曾经在拉丁文学或演讲中使用过。”

该程序的源代码也可在此处获得。但我真的不明白这是如何工作的。你能帮助我吗?也许这将是我的问题的解决方案......

4

4 回答 4

5

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

您定义 2 个表。一个包含词根(永远不变的部分),另一个包含给定类的修改。对于给定的类,对于每个变格(或共轭),它告诉在根的末尾(或开头)添加哪些字符。它甚至可以指定替换给定数量的字符。现在,要获得一个特定变格的词,你要扎根,应用它所属类的转换,瞧!

例如,对于 mandare,词根是mand,并且该类将包含像oasateamousatis ... 这样的后缀来表示主动指示性现在时。

于 2011-04-07T19:09:44.400 回答
3

也许会有所帮助

于 2011-04-01T14:33:34.967 回答
2

我将以名词为例,但它也适用于动词。

首先,我将创建两个类:RegularIrregular. 对于Regular名词,我会为三个变格创建三个类,并让它们都实现一个 Declensable(或者无论如何这个词是英文的:)接口(FirstDeclension extends Regular implements Declensable)。该接口将定义两个static enums ( NOMINATIVE, VOCATIVE, etc, and SINGULAR, PLURAL)。所有都将有一个根字符串和一个静态后缀哈希图。然后,该方法FirstDeclension#get (case, number)将根据哈希图附加正确的后缀。

该类Irregular应该必须为每个单词定义一个本地哈希图,然后实现相同的 Declensable 接口。

这有什么意义吗?

附录:为了澄清,构造函数class Regular将是

public Regular (String stem) {
    this.stem = stem
}
于 2011-04-10T20:51:06.323 回答
0

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

AOT 中没有拉丁语形态,只有俄语、德语、英语,其中俄语当然是与拉丁语一样复杂的屈折形态的一个例子,因此 AOT 应该准备好作为实施它的框架。

尽管如此,我相信在继续编程之前,必须为已经明确定义的形态有一个精心设计的精确形式系统。至于俄语,我想,大多数工作的形态计算机系统都是基于 Andrey Zalizniak 对俄语形态的认真分析以及俄语和相关著作的语法词典。

于 2011-04-11T08:18:39.403 回答