如何使用哈希表在句子列表中查找最常用的短语

时间:2012-10-13 17:41:34

标签: c hash

所有句子都是小写的英语,没有标点符号,短语被定义为3个连续的单词 如果一句话是:我是杰西卡狩猎

所以短语将是“我是杰西卡”和“我是杰西卡狩猎”

如果短语在文件的所有句子中出现

,则该短语很常见

请帮助我解决此问题的适当哈希函数

2 个答案:

答案 0 :(得分:1)

一切顺利。我将从(3 * a + 5 * b + 7 * c)开始,其中{a,b,c}是三个连续单词的字数(或散列值)。 (当然所有未签名和模数字化)

  • 标记为单词,忽略空格和标点符号
  • 将生成的单词放入哈希表(dict)
  • 逐步浏览文件,维护一个用于计算三个令牌哈希的滑动窗口
  • 并将这些/更新/更新为第二个哈希表。
  • 对于冲突解决,第二个哈希表需要(指针,索引)访问原始的三个单词。

答案 1 :(得分:0)

杰西卡 我猜你需要一个n-gram hasher而不是一句(这几乎是相同的)。 我用C语写了一个可以免费下载的超高速n-gram ripper: http://www.sanmayce.com/Downloads/index.html#Leprechaun

Leprechaun会把“我是jessica”的“句子”扯到这两个3克: i_am_jessica am_jessica_hunt

也许n-gramming也是你的事。