0

我正在尝试设计一个数据库来充当语言词典,其中每个单词不仅与其定义相关联,还与其语法“分类单元”相关联。例如,它应该看起来像这样:

"eat": verb.imperative
"eat": verb.present
"ate": verb.past
"he": pronoun.masculine.singular
"she": pronoun.feminine.singular
"heiress": noun.feminine.singular
"heirs": noun.masculine.plural
"therefore": adverb
"but": conjunction

似乎保存这种语法“分类法”的自然数据结构应该是某种树或图。尽管我还没有考虑透彻,但我认为应该可以更轻松地执行该类型的查询

plural OF masculine OF "heiress" -> "heirs"

然而,在这一点上,我只是想提出一种效率最低的方法来将这样的字典存储在常规关系数据库(即 LibreOffice Base)中。你建议数据模式应该是什么样的?有没有比蛮力方法更有效的方法,我的布尔列与语法类型和子类型一样多?例如,“she”对于代词、女性和单数列是正确的,但对于所有其他列(动词、副词、连词等)是错误的?

4

1 回答 1

0

这是一个非常开放的问题,有很多应用和很多相关的研究。让我根据我使用过的软件给出一些指示。

一列是词位,例如“吃”。第二列将给出词性,在上面的数据中,它是一个字符串或其他标识符,显示它是动词、代词、名词、副词还是连词。

为动词信息创建另一个表可能是有意义的。例如,时态、方面和情绪可能每个都是单独的列。但是这些列只对动词有意义。对于名词表,列将包括数字(单数、复数)和性别,以及它可能是计数名词还是质量名词。代词还包括人称(第一人称、第二人称或第三人称)。

你打算包括每个单词的每一种形式吗?例如,这个数据库是否会存储“eats”和“eating”以及“jumps”和“jumping”?存储规则如“-s”代表现在单数,“-ing”代表渐进式规则效率更高。然后如果有例外,例如“吃”,它可以被描述为具有“吃”+“-ed”的基本形式。该规则将在“吃”词位下进行,并且不会有单独的“吃”条目。

还有一些规则,例如复数会将以 y 结尾的单词更改为 -ies。这将使用复数名词后缀(“-s”),而不是单个动词。

考虑到这些事情,我对您的问题提供了一个更具体的答案:不,我不认为这些数据最好用分层来描述,也不是用树或图来描述,而是分析和关系。对于此类相当简单的项目,LibreOffice Base 将是一个合理的选择,它使用宏来帮助处理。

因此对于:

"heiress" -> masculine plural = "heirs"

首先要做的是将“继承人”分析为“继承人”+女性。然后通过组合“heir”和“-s”来组成所需的词形。

我打算添加一个相关软件的列表,例如Python NLTK,但一方面,可用软件的列表几乎是无穷无尽的,另一方面,软件推荐与 stackoverflow 无关。

于 2017-06-27T06:40:20.483 回答