C语言 如何使用哈希表在语义列表中查找最常见的短语



所有句子都是小写英语,没有标点符号,短语定义为 3 个连续单词,因此如果一句话是:我是杰西卡·亨特

所以短语将是"我是杰西卡"

和"我是杰西卡亨特"

如果一个短语存在于文件的所有句子中,则该短语是常见的

请帮助我为这个问题提供适当的哈希函数

什么都行。我会从 (3*a + 5*b + 7*c) 开始,{a,b,c} 是三个连续单词的字数(或哈希值)。(当然都是无符号的,和模字大小)

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

杰西卡,我想你需要一个 n-gram 哈希器而不是句子一(这几乎是一样的)。我用 C 编写了一个超快的 n-gram 开膛手,可在以下位置免费下载:http://www.sanmayce.com/Downloads/index.html#Leprechaun

妖精会把"我是杰西卡·亨特"这句话撕成这两个3克:i_am_jessicaam_jessica_hunt

也许n-graming也是你的事。

最新更新