簡體   English   中英

用於分層數據的關系數據庫設計?

[英]Relational database design for hierarchical data?

我正在嘗試設計一個數據庫來充當語言詞典,其中每個單詞不僅與其定義相關,還與其語法“分類”相關。 例如,它應該看起來像這樣:

"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)中的最有效的方法。 您認為數據架構應該是什么樣的? 有什么比蠻力方法更有效的方法呢?在這種方法中,我有盡可能多的布爾列和語法類型和子類型? 例如,“她”在代詞,女性和單數列中是正確的,而在所有其他列(動詞,副詞,連詞等)中是錯誤的?

這是一個非常開放的問題,並且有許多應用程序和許多相關研究。 讓我根據我使用的軟件給出一些建議。

列就是詞首,例如“吃”。 第二列將給出詞性,在您上面的數據中,這將是一個字符串或其他標識符,表明它是動詞,代詞,名詞,副詞還是連詞。

為動詞信息創建另一個表可能很有意義。 例如,時態,方面和心情可能分別是單獨的列。 但是這些列僅對動詞有意義。 對於名詞表,這些列將包括數字(單數,復數)和性別,並且可能是計數或質量名詞 代詞還包括人(第一,第二或第三人稱)。

您打算包括每個單詞的每種形式嗎? 例如,此數據庫將存儲“吃”和“吃”以及“跳躍”和“跳躍”嗎? 存儲規則(如“ -s”表示當前單數,“-ing”表示漸進式)效率更高。 然后,如果存在例外,例如“吃”,則可以將其描述為具有“吃” +“-ed”的基本形式。 這條規則將在“吃”詞素下進行,並且不會有單獨的“吃”條目。

還有一些規則,例如,復數將以y結尾的單詞更改為-ies。 這將出現在復數名詞后綴(“ -s”)之下,而不是單個動詞之下。

考慮到這些問題,我為您的問題提供了一個更具體的答案:不,我認為不是最好對數據進行分層描述,也不是用樹或圖來描述,而是分析和關聯。 對於此類相當簡單的項目,使用宏來幫助進行處理,LibreOffice Base將是一個合理的選擇。

因此對於:

"heiress" -> masculine plural = "heirs"

首先要做的是將“繼承人”分析為“繼承人” +女性。 然后通過組合“繼承人”和“ -s”來編寫所需的字形。

我本打算添加相關軟件的列表,例如Python NLTK ,但是一方面,可用軟件的列表幾乎是無止境的,另一方面,對於堆棧溢出來說,軟件建議是不合時宜的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM