引入局部统计识别高频词汇的Lucene中文分词程序

基于词典的最大匹配的Lucene中文分词程序基础上引入了局部统计识别新词的功能,目前实现的方法有两种:

1
、基于后缀数组的局部统计识别高频词汇               BasedSuffixArrayStringFetcher
2
、基于单字共现频率的局部统计高频词汇       HighFrequenceStringFetcher

问题1:什么是后缀数组
解答:

后缀数组是由作为一种文本索引结构提出的, 这种结构记录了一字符串中各后缀的字典序索引.通过对字符串的编码, 可以用后缀数组进行字符串集序列的处理. 近年来, 在基因匹配、文本处理等领域中, 后缀数组倍受关注. Manber Myers]给出了一个利用O( N) 的额外空间, O ( N lg N) 时间内同时构造出后缀数组及最长公共前缀信息数组LCP 的算法

S [1. . n ]为一有序字符集Σ上的字符串, | S| = n , | S| 表示S 的长度. S [ i ]表示S 中位置i 上的字符. S [ i . . n ]S 的第i 个后缀, 简记为Si . 对应字符串S 的后缀数组SA 为一整型数组, 其中按照S 的各个后缀的字典序存放其下标索引. : S = xabxac , 则其各后缀按字典序列排列为: S2 , S5 ,S3 , S6 , S1 , S4 . 其中S2 = abxac ; S5 = ac ; S3 = bxac ; S6 = c ; S1 = xabxac ; S4 = xac. 对应的后缀数组SA {2 ,5 ,3 ,6 ,4 ,1} , SA[ i ]为后缀数组SA 中第i 个索引所对应的S 的后缀, 简记为SAi , SA1 = S2 .S [1. . i ]S 的第i 个前缀. 两个字符串v w 存在最长公共前缀, LCP( v , w) 为字符串v w 最长前缀的长度. 则数组LCP [ 1. . n ] 存放后缀数组相邻两后缀的最长前缀长度, LCP [ i ] =LCP( SAi - 1 , SAi) .

问题2:单字共现频率的局部统计的原理
解答:

高频字串统计的理论基础是N - 元模型。
W1 W2 WN 是长度为N 的字串,则字串W 的似然度为
p ( W) = p ( w i | w1 w2
w i - 1) (1)
上面公式的意义反映连续个N 字之间的结合程度,如果若干种不同的历史组合W1 W2 WN的最后N - 1 个字相同,就把它们都看作一类。在这一假设下,每一个字出现的概率不再与前面的历史有关,只与最近的N - 1 个字相关,字串的先验概率为
p ( W) = p ( w i - ( n - 1) w i - ( n - 2)
w i - 1) (2)
p ( W) 超过一定的阈值时,说明这N 个字的结合能力较强,我们就可以认为该字串能被看成一个

正是根据以上所说原理,预先对待分词文本每个单字进行出现次数统计并记录它们在文中出现的位置(存储方式如附件图例所示),预处理后我们遍历单字频次统计 列表出现次数大于2的所有单字在文中出现的位置i,判断位置i+1的单字出现次数是否也大于2,若是则判断位置i+2的单字出现次数是否也大于2,如此类 推直至位置i+n+1的单字出现次数小于2,获得候选词组 w(i,i+1...i+n)并放入候选词汇集合,最后对候选词汇集合进行前缀后缀处理获得合适的高频词汇集合result

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值