中文新词发现算法解析

本文介绍了新词发现算法,通过分析凝固度和自由度来判断候选新词是否真实有效。凝固度衡量词单独出现的频次,自由度则考察新词在不同环境中的运用。IDF则反映了新词在文档中的认同度。算法结合这些指标,能有效地从社交网络和论坛数据中提取新词。
摘要由CSDN通过智能技术生成

现在社交网络和视频网站发展都非常迅猛,参与人数非常多,每日UGC量非常可观。也因此经常制造爆炸性新闻,新词的制造和流行也频频出现。不同的社交圈内,由于话题性的不同,其新词分布也不同,所以直接引入搜狗等输入法的新词,会造成新词污染。因此,往往需要基于自营社交圈的语料库做新词发现,才能实现更精确的文本语义分析。

 

算法解析:

我将新词发现流程比喻为判断默认男女是否为伴侣关系(这里限指关系比较稳定的)。假设你有一次看到A(男)和B(女)两人在街上一起肩并肩地行走,你会觉得两个人应该互相认识(凝固度还比较低);如果两个人牵着手,有说有笑,你可认为两个人肯定认识但还不一定是伴侣,也可能是兄妹吧(凝固度有提高,但是还不够高);如果在你犹豫的时候,两个人相拥而吻,你肯定下定决心,这两个人是伴侣(凝固度很高哦)。但是,你可能错了,因为这两个人可能只是一夜情,并算不上伴侣吧(因为你就只看了一次,自由度太低)。如果,在接下来的一个月内,你经常在不同的地方和时间(情景很多,说明双方比较自由,没有其他伴侣的束缚)看到过两个人亲密接触,这个时候,你基本上有百分九十以上的把握认定二人是伴侣关系。

是的,新词发现的整个判定方式和上面是一致的。你需要从凝固度和自由度两个角度考虑你通过一元分词的相邻词组合而成的“新词”是否是语境中真正的一个词。

下面具体阐述新词探索:

 

新词组合方式:

先中文分词工具做一元分词,使用Lucene TokenStream的OffsetAttribute类,将前后位置相邻的词拼接成新词,注意,在做一元分词的时候不宜将停词去除,前后位置相邻不包含分隔符号。整个语料库比较大,可以采用Hadoop的MapReduce处理,也可以单机慢慢跑。比如原始的分词字典对“三国杀是款桌上游戏”分词,得到的结果是“三国_杀_是_款_桌上_游戏”。组合的二元词有“三国杀”、“杀是”、“是款”、“款桌上”、“桌上游戏”。统计二元词的左右自由度和凝固度,划定阈值,即可判定二元词是否是新词


具体主题代码如下:

public static void segNewWord(Analyzer analyzer, String fieldName, String string, Context context, Long topic_id) {

          

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值