4
存储n-gram数据
我希望就存储n- gram数据的问题进行一些讨论。在我的项目中,我正在尝试解决所有我知道(n -1)个数据项的语言问题,并希望在所有适用的n- gram上使用线性插值来统计地猜测我的n。(是的,有一个标记器根据其词典将标记分配给已知单词,还有一个后缀树试图猜测未知单词的单词种类;这里讨论的n -gram组件将负责解决歧义。) 我最初的方法是简单地将所有观察到的n元(对于n = 1..3,即会标,二元组,三元组)数据存储在相应的SQL数据库中,并称之为一天。但是我的项目要求可能会改变,以包括其他向量长度(n),我希望我的应用程序能够适应4克语言而无需进行大量工作(更新架构,更新应用程序代码等);理想情况下,我只是简单地告诉我的应用程序现在可以处理4克代码,而不必太多(或根本不需要)更改代码并从给定的数据源训练其数据。 总结所有要求: 能够存储n克数据(最初用于n = {1,2,3} 能够更改应使用哪种n- gram(在应用程序运行之间) 能够(重新)训练n- gram数据(在应用程序运行之间) 能够查询数据存储(例如,如果我观察到A,B,C,我想知道使用我训练有素的4、3、2、1克数据集后最常观察到的项目) 该应用程序很可能是读取繁重的,很可能不会经常重新训练数据集 该解决方案采用.NET Framework(最高4.0) 现在,哪种设计更适合此类任务? 由SQL服务器(MSSQL,MySQL等)为每个n管理的固定表(例如,用于二元语法,三元语法等的专用表) 还是将第一个n -1 存储为文档的键的NoSQL文档数据库解决方案,并且文档本身包含第n个值和观察到的频率? 还是有所不同?