让我们考虑以下任务:对于NLP任务,我正在数据库中收集新闻标题。我需要使用这些数据进行词频分析,所以我用以下方式标记标题并存储单词:
标题表:
titleID word1 word2 word3 ....
1 0 0 1
2 1 1 0
3 0 0 0
...
每一列都是不同的单词,我根据它是否出现在标题中来标记它0或1。
当然,问题是每次我添加新标题时,可能会有一个单词是新的,因此我需要为这个单词添加一个新列。
在SQL世界中,这意味着在每次插入新行时都有潜在的迁移,这是站不住脚的。我可以使用nosql,但我仍然希望该表与数据库中的其他表有关系。
对于我的情况,有什么替代方案?在数据库中存储NLP数据的常见方法是什么?
对NLP方面不太确定,它显然在很大程度上取决于使用场景,但这方面的关系解决方案是;标题";以及";单词";。
更正式的:
A title has one or more words.
A word appears in zero or more titles. A word may appear more than once in a title, with an index signifying it's position in each case.
模式是:
Words
-----
Word_id (PK)
Word
Titles
------
Title_id (PK)
TItle
Word-Title
------------
Word_id. (PK, FK)
Title_id (PK, FK)
Index. (PK)
这意味着,当你在标题中遇到新词时,你会在";单词";表,而不是追加一列。