如何在文本文件中找到n个最常出现的模式。你会使用什么数据结构? 这里,模式不是单个单词,而是单词序列。例如,“this is a”可能是文件中经常出现的模式。
后续问题:
PS:我知道使用哈希表或BST可以相对容易地找到最常出现的单词。只是想不出我们如何找到多字符串。
答案 0 :(得分:5)
短语频率的一种方法是使用专门的数据结构,如后缀数组(参见http://en.wikipedia.org/wiki/Suffix_array,如果你喜欢学术论文,http://www.mitpressjournals.org/doi/pdf/10.1162/089120101300346787)。
如果要有数十亿字节的数据要编制索引,请在大型集群上使用hadoop! : - )
答案 1 :(得分:1)
查看PPM的Cleary and Teahan(部分匹配预测)或{{3}}的PPM *方法。它用于文本压缩。虽然您不需要压缩,但任务是相同的 - 使用高效数据结构以非常有效的方式查找常见的大多数字符序列。看看Cleary& amp;上面的Teahan看看他们是如何实现这一点的 - 这是一个非常好的算法。我打赌也有一些开源实现。
答案 2 :(得分:0)
我不明白为什么语言很重要,除了确定单词边界的位置。我还假设模式有一定的长度?或者答案肯定是长度为1的模式,这是微不足道的。那么为什么不使用哈希表来计算所有的n-gram呢?