我需要创建一个词组频率表,计算几百万字单词的一个非常大的集合中的所有短语。最终的结果将是,如什么是这里创建一个表: http://www.hermetic.ch/wfca/phrases.htm如何在大集合中有效地计算所有短语?
什么将是一个有效的算法来实现这一点?如果你能够展示一些细节,在Ruby中看到它会更好。或者,坦率地说,我甚至可以使用xapian或者lucene,但是没有看到用这些方法来实现这个目的的方法,就是根据需要建立频率表输出。
我需要创建一个词组频率表,计算几百万字单词的一个非常大的集合中的所有短语。最终的结果将是,如什么是这里创建一个表: http://www.hermetic.ch/wfca/phrases.htm如何在大集合中有效地计算所有短语?
什么将是一个有效的算法来实现这一点?如果你能够展示一些细节,在Ruby中看到它会更好。或者,坦率地说,我甚至可以使用xapian或者lucene,但是没有看到用这些方法来实现这个目的的方法,就是根据需要建立频率表输出。
我会推荐使用散列作为关键词,并增加值,因为你发现每个短语。
Ruby是为这种数据处理而构建的,因此您从正确的方向着手。
我不会对这个项目给你,但仔细看看:
http://ruby-doc.org/core-2.0/Hash.html
然后了解基本的正则表达式你需要解析:
http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UJ
编辑:我相信,在最近的红宝石,散列SOR表!我敢打赌,这将有助于您的表格输出。不过,我不确定Ruby如何实现(有效?)。 “
”这是一个包含853个单词和4488个这些单词实例的24 KB文件上的计算全部短语操作的输出示例。 “经过的时间:36秒” – steenslag
“计数所有短语”?那么,整个文件就是一个短语。减去第一个或最后一个单词的整个文档是另一个。那么,那个第一个或最后一个单词是另一个短语。你能澄清你的要求吗? –