/build-dict

基于词频、互信息、左右熵和成词位置概率的文本新词发现

Primary LanguageJava

新词发现

背景

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

**:

涉及算法

  • 词频:

基于文本进行统计; - 互信息:

PMI,即互信息(值越大表示x和y越相关)

公式:PMI(x,y) = log(p(x,y) / p(x)p(y) )
其中:p(x,y) = freq(x, y)/total;  p(x) = freq(x)/total; p(y) = freq(y)/total
p(x,y) / p(x)p(y) = (freq(x, y) * total) / (freq(x) * freq(y))
即PMI(x,y)= log((freq(x, y) * total) / (freq(x) * freq(y)))

  • 左右熵:

分别计算左邻字集合和右邻字集合的信息熵,取两者最小值,作为该词的信息熵。

  • 位置成词概率:

基于搜狗词库统计单字出现在词首,词中,词尾的概率。

如:词首的概率 = 某个字出现在次首的次数 / 某个字出现的总次数

[搜狗词库] (https://www.sogou.com/labs/resource/w.php)

场景案例

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

案例

各语料文本的Top20词,基于词频排序输出:[词,词频,互信息,左右熵,位置成词概率]

  • 三国演义:
玄德	1814	7.592457037268081	2.2374653713106913	0.4318936877076412
孔明	1690	7.622051819456376	2.1120759306641914	0.3693570451436389
将军	943	4.523561956057013	5.554828734141023	0.335423197492163
曹操	941	6.149747119504682	4.28297965519525	0.2677165354330709
司马	575	6.6582114827517955	2.823416480230168	0.12318840579710146
二人	561	4.807354922057604	4.615099271958424	0.4420654911838791
丞相	547	8.108524456778168	4.2195204979235745	0.10723860589812333
引兵	486	4.807354922057604	5.8267604364693	0.4791666666666667
云长	443	7.375039431346925	3.0663407009774173	0.3333333333333333
荆州	420	8.527477006060396	4.335021824584862	0.4
蜀兵	392	5.491853096329675	4.063440037814358	0.4791666666666667
夏侯	387	8.689997971419446	3.0015972148199035	0.4473684210526316
如此	385	5.20945336562895	3.405855803459433	0.2985781990521327
吕布	366	8.312882955284357	3.9131364111707616	0.36674816625916873
张飞	365	6.768184324776926	2.97766718410516	0.25732217573221755
诸葛	347	8.977279923499918	3.289509473145167	0.3333333333333333
商议	344	9.419960177847889	3.023798652399659	0.39250493096646943
天下	337	5.357552004618084	4.721280144203608	0.3574173712528824
如何	337	5.247927513443585	3.406909316294163	0.25
军马	333	2.807354922057604	3.85944768757136	0.2777777777777778
  • 北邮人论坛:
活动	1905	6.614709844115209	3.627864201441141	0.29608938547486036
报名	879	7.118941072723508	3.7089618336321792	0.23628048780487804
北京	777	5.906890595608519	2.3725987511385926	0.1383399209486166
工作	708	7.800899899920305	3.1753419184641647	0.30072756669361356
可以	679	6.189824558880018	3.581862203835948	0.15015015015015015
自己	669	7.622051819456376	4.327777437930047	0.40782122905027934
校友	524	5.7279204545632	2.644589890890219	0.2922077922077922
喜欢	517	8.661778097771986	2.9108114574030073	0.29285714285714287
朋友	517	7.0	3.257082517115081	0.18032786885245902
单身	510	6.988684686772166	3.9656203446456484	0.3761814744801512
我们	498	5.554588851677638	3.3854467738583685	0.6072607260726073
大家	464	5.643856189774724	4.114179777054455	0.39510204081632655
时间	427	7.247927513443586	2.970322079878331	0.23989569752281617
一起	414	5.0	4.407778306718059	0.4951644100580271
女生	389	5.614709844115208	2.870837368842019	0.3293269230769231
征友	371	5.554588851677638	2.7032323868374726	0.38513513513513514
毕业	364	8.049848549450562	2.937978352458024	0.42105263157894735
微信	362	5.426264754702098	2.8882280296263985	0.30180806675938804
大学	361	4.807354922057604	3.2360820056960535	0.39199097574732095
生活	359	4.459431618637297	3.8706886803580867	0.2325721153846154
  • 水木社区:
工作	966	7.03342300153745	2.9337633531963325	0.30072756669361356
喜欢	710	7.6147098441152075	2.5639309569805078	0.29285714285714287
自己	644	7.330916878114618	3.709138487212865	0.40782122905027934
生活	618	6.599912842187128	3.834674917917287	0.2325721153846154
家庭	467	6.954196310386876	3.1243611061030347	0.20816326530612245
可以	386	6.189824558880018	3.3764459572052026	0.15015015015015015
感情	366	6.285402218862249	2.319609078853243	0.3023952095808383
本科	340	6.700439718141092	2.104246013189759	0.27531645569620256
一起	316	5.357552004618084	3.717436343830323	0.4951644100580271
照片	292	8.252665432450248	2.605655664384266	0.3167420814479638
父母	292	8.668884984266247	2.0671753213409128	0.29347826086956524
简单	284	8.05528243550119	2.18603559243544	0.27123287671232876
朋友	275	7.8392037880969445	3.8465340153718586	0.18032786885245902
经历	270	6.7414669864011465	2.1795861700446744	0.32460732984293195
善良	235	8.330916878114618	2.8490896332852302	0.23837209302325582
真诚	233	7.08746284125034	3.1534838446248186	0.34
基本	219	6.794415866350106	2.0274006268401084	0.2634338138925295
介绍	207	9.39231742277876	2.9183780321602777	0.1588785046728972
联系	195	8.912889336229961	2.4203326320897296	0.3775
结婚	194	7.400879436282184	2.2310047302060063	0.2916666666666667
  • 水浒传:
宋江	3857	6.870364719583405	2.2623413352001736	0.2578616352201258
李逵	1141	8.044394119358454	2.1844429852200893	0.7857142857142857
武松	1071	8.361943773735241	2.3116768630177953	0.31788079470198677
如何	929	7.022367813028454	4.101366787337744	0.25
那里	869	4.321928094887363	3.249036818437854	0.5675675675675675
林冲	789	8.643856189774725	2.6301927360987407	0.16393442622950818
军马	773	4.700439718141093	4.0351385022029	0.2777777777777778
哥哥	770	7.321928094887362	3.9724456380790465	0.22916666666666666
头领	713	6.569855608330948	3.9012495661134925	0.11210317460317461
太尉	679	8.62935662007961	3.438161426283713	0.696319018404908
众人	666	4.523561956057013	3.0655481263361684	0.38461538461538464
戴宗	627	9.590587049915035	2.168741388922706	0.41414141414141414
听得	586	5.392317422778761	4.523661738796154	0.3249097472924188
出来	585	3.5849625007211565	2.589130788272665	0.3371886120996441
小人	570	3.5849625007211565	2.1039485415449146	0.4420654911838791
梁山泊	569	9.65105169117893	3.681936039623457	0.25773195876288657
兄弟	568	7.6653359171851765	3.445904599996534	0.3103448275862069
今日	525	6.149747119504682	2.266088700473971	0.3086913086913087
燕青	505	8.7714894695006	2.0907328330092683	0.1575
先锋	488	8.430452551665532	3.6833571991282876	0.39325842696629215
  • 红楼梦:
宝玉	3967	6.066089190457772	2.637105299136295	0.2505399568034557
凤姐	1765	7.199672344836364	2.4033746268398506	0.3319838056680162
贾母	1680	6.442943495848729	2.480187573474035	0.47368421052631576
黛玉	1358	6.599912842187128	2.7471021582956228	0.2505399568034557
我们	1202	4.0	3.399517375799725	0.6072607260726073
那里	1195	4.700439718141093	3.234200380847557	0.5675675675675675
姑娘	1139	7.924812503605781	4.374123953304028	0.44680851063829785
袭人	1138	5.754887502163469	2.467751235708757	0.24444444444444444
宝钗	1069	6.599912842187128	2.649120313671445	0.27017543859649124
王夫人	1048	5.807354922057605	2.656315517052494	0.4420654911838791
你们	1024	4.08746284125034	2.8356176900313343	0.47058823529411764
丫头	1022	7.129283016944966	3.6792426451210587	0.3
知道	977	4.08746284125034	2.7491441415096083	0.25276752767527677
贾政	939	6.768184324776926	2.0810698818349187	0.15317286652078774
奶奶	919	7.189824558880018	3.928946778265701	0.32954545454545453
他们	852	3.700439718141092	4.390400610601838	0.4852459016393443
自己	821	7.845490050944376	4.122670899942327	0.40782122905027934
贾琏	773	6.614709844115209	2.372548654853923	0.47368421052631576
听见	755	4.807354922057604	4.524801009785264	0.3249097472924188
进来	695	4.523561956057013	2.34246184033219	0.44
  • 西游记:
师父	1632	7.417852514885899	3.7014429986660047	0.13429752066115702
大圣	1272	6.491853096329675	2.7545327650634905	0.18666666666666668
唐僧	1006	6.977279923499917	4.091468229299379	0.30434782608695654
菩萨	786	9.337621901992508	3.632587222108276	0.27722772277227725
那里	784	4.247927513443585	2.4168474202471883	0.5675675675675675
我们	725	5.169925001442312	2.7838447302800646	0.6072607260726073
长老	662	6.169925001442312	2.527271009493905	0.1555891238670695
妖精	634	7.098032082960527	3.1011937880667015	0.11951219512195121
老孙	617	6.10852445677817	3.3653171420299546	0.34831460674157305
见那	512	3.3219280948873626	2.6706958193301484	0.1336405529953917
国王	474	6.554588851677638	2.238389754672266	0.32382892057026474
徒弟	439	7.965784284662087	2.4549473426268933	0.27380952380952384
大王	396	4.08746284125034	3.446778888619822	0.32382892057026474
如何	384	6.247927513443586	3.6152792567297274	0.25
那妖	369	3.4594316186372978	2.057735345750482	0.25925925925925924
小妖	361	5.672425341971496	3.09668087277586	0.25925925925925924
出来	338	3.5849625007211565	2.0581209974772103	0.3371886120996441
一声	337	4.169925001442312	2.397494586617343	0.5045592705167173
兄弟	283	7.74819284958946	2.9195997194410412	0.3103448275862069
宝贝	283	9.216745858195306	2.5841205722155705	0.232
  • 隋唐演义:
叔宝	1367	7.954196310386876	2.982012493934889	0.4
夫人	1277	5.7279204545632	5.216608126679102	0.10702341137123746
玄宗	571	7.948367231584678	2.6853131791602056	0.41414141414141414
只见	547	5.129283016944966	4.777535497747153	0.35208711433756806
雄信	538	8.430452551665532	2.7663202670775164	0.30180806675938804
秦王	522	6.066089190457772	3.4013479039244827	0.32382892057026474
陛下	466	7.22881869049588	5.064797525456445	0.3574173712528824
公主	427	6.303780748177103	4.435523087270637	0.1704697986577181
出来	423	4.08746284125034	5.248220446299134	0.3371886120996441
今日	361	5.523561956057013	5.031961599932424	0.3086913086913087
众人	357	4.321928094887363	3.9945126914571265	0.38461538461538464
那里	357	5.754887502163469	3.3531823997658035	0.5675675675675675
我们	355	6.066089190457772	4.547095963845388	0.6072607260726073
如今	344	5.523561956057013	3.379058297455772	0.3487179487179487
公子	334	4.807354922057604	3.580215348691987	0.382183908045977
只得	324	4.392317422778761	6.484832036000165	0.4714086471408647
起来	323	4.321928094887363	4.550749089850344	0.23404255319148937
如此	308	4.700439718141093	5.542068146680826	0.2985781990521327
如何	303	5.169925001442312	4.915926479223684	0.25
太子	302	5.321928094887363	4.615449552362099	0.6364179104477612

参考: