我目前正在Twitter消息上使用三种不同的NLP引擎(Stanford NLP,IBM Watson和OpinionFinder)对日内股票数据进行自然语言处理.
Stanford NLP和OpinionFinder都使用极性标志来表示情绪 – 正面,中立和负面.我可以在数据库中识别出-1 -1,1.
IBM Watson在文本上有五种不同的百分比(从0到100),称为愤怒,厌恶,恐惧,快乐和悲伤,这可以存储为浮点数或整数(即0.9或90).
每天(标识为日期,格式为YYYY-mm-dd)有三个情绪行,每个NLP引擎一行.因此,可以有三个相同的symbol_id和date,这就是为什么我认为我还应该在复合唯一键中添加nlp_engine.我的计划是使用symbol_id date nlp_engine作为复合唯一键.
另一种方法是,我还有一个存储股票价格/期货数据的价格表,它具有以下格式:
id |日期| symbol_id | …
所以,我可以使用在Sentiments.prices_id中引用每一天的Symbols.id,因为我只收集日内(每日)数据.
因此,我想创建一个名为Sentiments的表,其中包含以下列:
id | symbol_id |日期| nlp_engine |愤怒|厌恶|恐惧|快乐|悲伤|极性| created_at |的updated_at
说明:
id – 主键
symbol_id(符号表的外键,它将我的股票代码保存为日期和nlp_engine列的复合唯一键)
date – (带有symbol_id和nlp_engine的复合唯一键)
nlp_engine – (我应该为此使用字符串,还是应该创建一个名为NLPEngines的新表并使用nlp_engine_id?这也应该是带有symbol_id和date的复合唯一键)
愤怒 – 漂浮
厌恶 – 漂浮
恐惧 – 漂浮
快乐 – 漂浮
悲伤 – 漂浮
极性 – 有符号整数,如-1,1
我只想对这个数据库设计提出一些批评 – 谢谢.