我正在尝试设计一个数据库来充当语言字典,其中每个单词不仅与其定义相关联,还与其语法“taxon”相关联。例如,它看起来应该是这样的:
"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)中的效率最低的方法。你有什么建议数据模式应该是什么样的?有没有比蛮力方法更有效的方法,我有尽可能多的布尔列,因为有语法类型和子类型?例如,“她”对于列代词,女性和单数都是正确的,但对于所有其他列(动词,副词,连词等)都是假的?
答案 0 :(得分:0)
这是一个非常开放的问题,有许多应用和相关研究。让我根据我使用的软件给出一些指示。
一栏是lexeme,例如“eat”。第二列将给出词性,在上面的数据中,它将是一个字符串或其他标识符,显示它是动词,代词,名词,副词还是连词。
为动词信息创建另一个表可能是有意义的。例如,时态,方面和情绪可能各自是单独的列。但这些专栏只对动词有意义。对于名词表,列将包括数字(单数,复数)和性别,也许是否为count or mass noun。代词也包括人(第一,第二或第三人)。
你打算包括每个单词的每一种形式吗?例如,这个数据库会存储“吃”和“吃”以及“跳跃”和“跳跃吗?”存储规则如“-s”用于当前单数和“-ing”用于渐进式更有效。然后,如果存在例外,例如“吃”,则可以将其描述为具有“吃”+“ - ”的基本形式。这条规则将属于“吃”词汇,并且没有单独的“吃”条目。
还有一些规则,例如复数改变以y结尾的单词。这将在复数名词后缀(“-s”)下,而不是单个动词。
考虑到这些因素,我会针对您的问题提供更具体的答案:不,我不认为这些数据最好是按层次结构描述,也不是用树或图表来描述,而是通过分析和关系来描述。 LibreOffice Base对于这种类型的相当简单的项目来说是一个合理的选择,使用宏来帮助处理。
所以:
"heiress" -> masculine plural = "heirs"
要做的第一件事就是将“女继承人”分析为“继承人”+女性化。然后通过组合“继承人”和“-s”来组成所需的字形。
我打算添加一个相关软件列表,例如Python NLTK,但一方面,可用软件列表几乎是无穷无尽的,另一方面,软件建议偏离了stackoverflow。