Closed TITC closed 3 years ago
算总数是要每种长度的ngram单独算的,而不是所有2gram、3gram、4gram混合起来算的。
你的统计结果恰好就说明,ngram总数约等于总字数(3倍,因为你把3种ngram混合在一起了)。
事实上,根据(对于某个固定的n)ngram的计算方式: [text[i:i + n] for i in range(len(text) - n + 1)] ,就知道每种ngram的总数约等于字数是显然成立的。
算总数是要每种长度的ngram单独算的,而不是所有2gram、3gram、4gram混合起来算的。
你的统计结果恰好就说明,ngram总数约等于总字数(3倍,因为你把3种ngram混合在一起了)。
事实上,根据(对于某个固定的n)ngram的计算方式: [text[i:i + n] for i in range(len(text) - n + 1)] ,就知道每种ngram的总数约等于字数是显然成立的。
就知道每种ngram的总数约等于字数是显然成立的。
谢谢提醒,明白了👍
有个疑问,我们计算4-gram是基于我们已经计算好了2-gram以及3-gram基础之上,也就是说我们的2-gram和3-gram也是经过词频和凝固度的过滤,在过滤之后,2-gram和3-gram的总频数也就不存在约等于总次数的情况了,那么我们计算4-gram的凝固度的时候,这个式子也不成立了。
以下代码摘自【中文分词系列】 8. 更好的新词发现算法
以8字的例句
本刊感谢各位专家
为例,进行ngram分词后结果为一个大小为26的dict 对于此问题,您给出了如下的解释:考虑到也许您的约等于是指数量级上的约等于, 因此下面取几个大文件对比一下
234958742
字,ngram中所有key的频次累加和为736195698
202362720
字,ngram中所有key的频次累加和为624372458
110199596
字,ngram中所有key的频次累加和为346968516
由上述局部的
本刊感谢各位专家
例子亦或者是大文件的例子都可以看到ngram中频次累加和均大致为数据总字数的3倍左右。但3倍在计算PMI处理的过程中会带来多大差距呢?我以1.
为例,取其中最高频次的词汇企业
,频次1307887
,其中企
频次为1953603
,业
频次为3030854
,该语料库总字数为212741102.0
,据此所计算出的pmi
=69.00695726310722,鉴于此处变量只有
total
,直接将上述结果×3得到基于key的频次累加
的pmi
大约为207
所以是觉得对于
2-gram
来讲207
和69
相对于阈值5
来说都大很多,所以基本差别不大这个意思么?🤣