【发布时间】:2016-06-25 20:39:36
【问题描述】:
我有一个数据库设计问题。
我目前正在使用三种不同的 NLP 引擎(Stanford NLP、IBM Watson 和 OpinionFinder)对 Twitter 消息进行自然语言处理,以获取盘中股票数据。
Stanford NLP 和 OpinionFinder 都使用极性标志来表示情绪 - 正面、中性和负面。我可以在数据库中识别出这个-1、0、1。
IBM Watson 对称为愤怒、厌恶、恐惧、快乐和悲伤的文本有五个不同的百分比(从 0 到 100),这可以存储为浮点数或整数(即0.9 或 90)。
每一天(标识为date,格式为YYYY-mm-dd)有三个情绪行,每个NLP引擎一个行。所以,可以有三个相同的symbol_id 和date,这就是为什么我认为我还应该在复合唯一键中添加一个nlp_engine。我的计划是使用symbol_id date nlp_engine 作为复合唯一键。
对此的替代方法是,我还有一个 Prices 表,用于存储股票价格/期货数据,它具有以下格式:
id | date | symbol_id | ...
所以,我可以使用Symbols.id 引用Sentiments.prices_id 中的每一天,因为我只收集日内(每日)数据。
因此,我想创建一个名为 Sentiments 的表,其中包含以下列:
id | symbol_id | date | nlp_engine | anger | disgust | fear | joy | sadness | polarity | created_at | updated_at
解释:
id - 主键
symbol_id(包含我的股票代码的Symbols table 的外键+date 和nlp_engine 列的复合唯一键)
date - (symbol_id 和 nlp_engine 的复合唯一键)
nlp_engine - (我应该为此使用字符串还是应该创建一个名为 NLPEngines 的新表并使用 nlp_engine_id?这也应该是具有 symbol_id 和 date 的复合唯一键)
anger - 浮动
disgust - 浮动
fear - 浮动
joy - 浮动
sadness - 浮动
polarity - 有符号整数,例如-1、0、1
我只是想对这个数据库设计提出一些批评 - 谢谢。
【问题讨论】:
标签: php mysql database laravel