我想在一个大的(> 10亿个令牌)文本语料库中存储在各种语境中相互出现的词的频率。我需要存储单词对,共现的类型(例如word1在与word2相同的句子中,word1在与word2相同的段落中),以及关于发现共现的文本的一些元数据(例如,年,作者,出版商)。所以单行可能看起来像:
word1 word2 count decade publisher author context_type
-------------------------------------------------------------
nuclear danger 22 1980s NYT n/a paragraph
频率将是稀疏的并且泊松分布。然后,我希望能够按日期范围或作者组(例如)查询数据,汇总结果的计数。
我对数据库的经验很少,不知道该使用什么。我是否需要相关的SQL表(例如,一个表中的书籍元数据和另一个表中的单词数据),还是简单的NoSql解决方案?词汇量大约是50,000个单词,所以如果观察到每个单词 - 单词共现,即使没有元数据也会有25亿行(我认为)。但可能大部分都不会被观察到。这让我觉得图形数据库可能是一种可能的解决方案。 AWS或谷歌上有一个很好的云解决方案吗?
对于这种类型的查询,Google Cloud Bigtable或其他NoSQL系统可能是一个合理的选择,因为它听起来像一个稀疏的数据集选项,但正如之前发布的那样,这个问题更适合https://softwareengineering.stackexchange.com/。