怎样通过词频得到这个词频的排序?

     在大规模检索中,我们怎样通过已经的词频得到词频的排序? 通俗点讲,就是当我知道“java”这个词的频率是x,那么"java"到底在排在第几位呢?
      大规模数据中,有一个重要的法则叫“齐普夫法则”,它描述为第k个出现次数最多的词汇,它的词频与1/k成正比。这个法则的发现过程一点都不科学,齐普夫是这样干的:找到一本大部头的书籍,统计不同词汇出现的次数并排序,发觉词频的排序乘以出现的次数等于一个常数。然后这个常数乘以10,就得到了书籍的总词数。多么荒诞的事情啊,这比牛顿被苹果砸了更坑爹啊有木有。
       但是,这个法则竟然是正确的(没什么道理啊,我想起了黄金比例和自然数)。所以我们糊里糊涂的竟然可以得到这样一个公式:p(T)=C*(1/K),T表示排在K位置的词汇,P(T)表示T词的词频,C表示一个常数。
       好吧,更坑爹的还在后面。。。。。。
       我们知道,在大规模数据中,词频=词出现词数/总词数,那么所有词频之和等于1,所以有(1/1+1/2+1/3+...+1/k+...+1/n)*C=1,根据自然对数,就有ln(n)*C=1。
       那么ln(n)为什么约等于(1/1+1/2+1/3+...+1/k+...+1/n)呢,根据调和级数,1+1/2+1/3+1/4+...1/n = ln(n+1) + r ,r是常数,约等于0.5772156649,可忽略不计。
       所以,假如n等于100万,那么C=1/ln(1000000)=1/14,咱们转回到P(T)=C*(1/K)这个公式,对于数据规模在100万的情况下,排在K位的词汇词频=1/14K。当然,知道了词汇词频后,K值也很好算咯。

    By 阿飞哥 转载请说明
    腾讯微博: http://t.qq.com/duyunfeiRoom
   新浪微博: http://weibo.com/u/1766094735

猜你喜欢

转载自duyunfei.iteye.com/blog/1740197