新词发现

参考资料

主要参考了以下两篇文章:
互联网时代的社会语言学:基于SNS的文本数据挖掘

基于信息熵和互信息的新词识别

分词依据

对于一个给定的文本,从中抽取一个片段,如果这个片段的内部成分搭配稳定,并且左右搭配很丰富,则认为是一个词。将这样的片段抽取出来,按照出现的频率排序,选择排在前面的那些作为我们发现的词语。再进一步通过固有词典过滤掉已经存在的“旧词”,剩下的就是“新词”了。
如何理解“内部成分搭配稳定”和“左右搭配丰富”呢?
假设有2个字符组成的片段“AB”出现在文本中若干次,如果A出现了,B总会紧接着出现,B出现了,A也出现,即A、B总是成对出现,而不会出现AC、AD或者EB、BF这种,我们就认为“AB”这个片段的内部成分搭配是最稳定的,A或B单独出现的次数越多,则“AB”的稳定性越低。
即使A、B总是一起出现,但是假设“AB”后面跟的字符总是C,即“AB”的右搭配只有一个,我们也认为“AB”不能成词(可能“ABC”是一个词也说不定),如果“AB”后面可以接CDEFG……各种字,我们就说“AB”的右搭配很丰富,左搭配同理。
内部搭配的稳定性和左右搭配的丰富程度涉及到两个概念,“互信息”和“信息熵

互信息的概念

以下摘自维基百科

在概率论和信息论中,两个随机变量的互信息(Mutual Information,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。

一般地,两个离散随机变量 X 和 Y 的互信息可以定义为:

I ( X ; Y ) = ∑ y ∈ Y ∑ x ∈ X p ( x , y ) log ⁡ ( p ( x , y ) p ( x ) p ( y ) ) I(X;Y) = \sum_{y \in Y}\sum_{x \in X}p(x,y)\log(\cfrac{p(x,y)}{p(x)p(y)}) I(X;Y)=yYxXp(x,y)log(p(x)p(y)p(x,y))

由于我们在分词的时候是不考虑同义词的情况的,即不同的字符串代表不同的词。对于一个已知的文本片段和它的分割点,这两个“随机变量”只有一个值,上面的公式可以简化为:

I ( x ; y ) = log ⁡ ( p ( x , y ) p ( x ) p ( y ) ) I(x;y) = \log(\cfrac{p(x,y)}{p(x)p(y)}) I(x;y)=log(p(x)p(y)p(x,y))

对于一个长度大于2的文本片段,它的分割点不止一个,例如“ABC”可以分为“AB”和“C”或者“A”和“BC”,这时候一个文本片段就会有多个互信息值,我们取最小的一个作为词的聚合度。
为什么要取最小的呢?考虑这样一种实际情况,“的蝙蝠”这个文本片段, 如果把它分割成“的蝙”和“蝠”这两个子片段,它的聚合度是很高的,“的蝙”几乎不会单独出现,“蝠”也很少和其他字搭配,但是"的蝙蝠"却不是一个词。因为把它拆成“的”和“蝙蝠”后,聚合度是很低的,因为“的”有无数种搭配,“蝙蝠”也可以组合成“只蝙蝠”、“蝙蝠侠”等。
实际上,通过这种方法发现的新词以两字词居多,三字词较少,而且多是由两字词再加一个字组成的。这可能和中国人的用词习惯有关。聚合度很高的三字词(“加拿大”、“红领巾”)不多见,但是,四字词反而多了一些(成语)。
而且,由两字词加一个字组成的词可能和那个两字词都作为新词被抽出来。例如前面提到的“蝙蝠侠”这个词,如果训练文本是关于影视的,“蝙蝠侠”很可能作为新词出现,而“蝙蝠”可能因为单独出现次数过少,就没有被筛选出来。这个时候如果再给训练集加入等量的关于动物的文本,“蝙蝠”就很有可能作为新词出现了,这个时候“蝙蝠侠”的词频和聚合度会降低,但是依然超过其他的词,所以它也是一个新词。

信息熵的概念

以下摘自维基百科:

在信息论中,熵(英语:entropy)是接收的每条消息中包含的信息的平均量,又被称为信息熵、信源熵、平均自信息量。

matrix67的文章对这个概念有一个直观的解释,这里直接抄过来:
image

依据Boltzmann’s H-theorem,香农把随机变量X的熵值 Η(希腊字母Eta)定义如下,其值域为{x1, …, xn}:

H ( X ) = E [ ( I ( X ) ] = E [ − ln ⁡ ( P ( X ) ) ] H(X)=E[(I(X)]=E[-\ln(P(X))] H(X)=E[(I(X)]=E[ln(P(X))]

其中,P为X的概率质量函数(probability mass function),E为期望函数,而I(X)是X的资讯量(又称为资讯本体)。I(X)本身是个随机变数。
当取自有限的样本时,熵的公式可以表示為:

H ( X ) = ∑ i P ( x i ) I ( x i ) = − ∑ i P ( x i ) log ⁡ b P ( x i ) H(X)=\sum_iP(x_i)I(x_i)=-\sum_iP(x_i)\log_bP(x_i) H(X)=iP(xi)I(xi)=iP(xi)logbP(xi)

对于一个词 w w w ,我们统计出它所有的左邻字集合 l e f t = l 1 , l 2 , l 3 … … l n left={l_1,l_2,l_3……l_n} left=l1,l2,l3ln,每个字在文本中出现的概率为 p ( l i ) p(l_i) p(li),可以计算出 w w w的左信息熵 l e f t E n t r o p y = − p ( l 1 ) log ⁡ p ( l 1 ) − p ( l 2 ) log ⁡ p ( l 2 ) − p ( l 3 ) log ⁡ p ( l 3 ) − … … − p ( l n ) log ⁡ p ( l n ) leftEntropy=-p(l_1)\log p(l_1)-p(l_2)\log p(l_2)-p(l_3)\log p(l_3)-……-p(l_n)\log p(l_n) leftEntropy=p(l1)logp(l1)p(l2)logp(l2)p(l3)logp(l3)p(ln)logp(ln),同理可求出右信息熵 r i g h t E n t r o p y rightEntropy rightEntropy,取 l e f t E n t r o p y leftEntropy leftEntropy r i g h t E n t r o p y rightEntropy rightEntropy的较小值作为最终信息熵。

测试效果

准备数据

测试数据用的是快看漫画APP社区的动态,因为数据量太大,第一次只取了前100w行。随便找了一段截图在下面?,可以看到有很多的表情符号(这个后面会过滤掉),而且有很多空行,从右边?的缩略图可以看出来。
image

第一次测试

第一次测试的时候,按照逐行导入数据的方式,可以看到每次导入1000行的时间越来越长。因为随着导入的数据越来越多,整个词典在变大,计算信息熵的时间变长。
image

并且,从下图可以发现,排在前面的词居然是一些表情。z这是因为我一开始只考虑了过滤一些符号:

[\\s\\d,.<>/?:;'\"\\[\\]{}()\\|~!@#$%^&*\\-_=+a-zA-Z,。《》、?:;“”‘’{}【】()…¥!—┄-]

虽然知道会有,但是没想到出现的频率这么高?(嗯,我忽略了这是一个二次元社区,而且活跃用户多是一些95后的青少年)。
image

第二次测试

然后我就加了一些过滤:

[\\ud83c\\udc00-\\ud83c\\udfff]|[\\ud83d\\udc00-\\ud83d\\udfff]|[\\u2600-\\u27ff]|[\\s\\d,.<>/?:;'\"\\[\\]{}()\\|~!@#$%^&*\\-_=+a-zA-Z\uFF0C\u3002\u300A\u300B\u3001\uFF1F\uFF1A\uFF1B\u201C\u201D\u2018\u2019\uFF5B\uFF5D\u3010\u3011\uFF08\uFF09\u2026\uFFE5\uFF01\u2014\u2504\uFF0D\u2022\u03C9\u0334\u0300\uD83E\uDD14\u203C\u0300\u03C9\u1D52\uFF5E\u200B\u3000\uD83E\uDD23\u0325\u2501\u2299\u25BD]

并且每次处理100万行数据(大概30M),第二次的测试结果如下
image
并且处理的时间也缩短了(100万行不到2分钟,第一个数字是数据的总长度,第二个是处理完成后词典中词的数量)
image

统计结果

统计了出现频率最高的前100个新词如下:

textfrequencyprobabilityaggregationentropy
朝花76190.0006684748714.13952.1286788
作者大大71240.0006250446101.678021.9205971
咬痕70330.000617060461358.76382.6024222
锐思52650.0004619399845.59932.9776123
啦啦50600.0004439536195.487671.0524662
伊凯49400.000433425071481.1292.8826144
马蓉39830.000349459941295.19062.83174
要要要38120.00033445677124.2373350.6033861
林早上33110.0002905001212.089572.5660532
呵呵呵30000.00026321362326.223970.76935846
啦啦啦29390.0002578616385.425080.9371891
嗯嗯27350.00023996308179.094860.6670491
点赞27000.00023689224114.39552.9828775
污污25010.0002194324353.566161.0437318
千玺24460.000214606831941.36622.262512
芙蕾23070.000202411263910.03442.5435712
呵呵呵呵22260.0001953045448.644560.50676024
蛤蛤21970.00019276013223.80710.8353594
狗粮21900.00019214593823.80642.7364693
夏天岛21330.000187144882851.00423.0487359
呜呜呜20410.000179072991577.93681.0952901
考神19070.00016731612121.101681.2480384
搞事18550.00016275374297.26961.2835702
粗长18080.00015863006586.33880.8958081
蛤蛤蛤17350.00015222523229.5750.92817974
污污污17080.00014985628866.880250.7653267
什么鬼16920.00014845247117.451250.732285
小莘16910.00014836474223.573733.1967993
爆照16410.00014397784613.29581.4314348
福利图16250.00014257403521.510442.5649443
啪啪啪15920.000139678681376.9872.1149125
罗真15750.00013818714218.223433.151046
女主15700.00013774846103.31923.648004
斯里14890.00013064168150.46810.6009016
莲莲14440.000126693491271.32852.7751904
傲娇13830.000121341474379.40971.7764797
林路13710.00012028862408.818852.5821934
耽美13650.00011976219719.608463.4154472
蓝斯13280.00011651589470.824373.024543
啦啦啦啦13230.0001160772298.710970.83543575
蛤蛤蛤蛤13100.000114936613087.79030.6837312
男主13090.00011484887107.308383.6012008
宋喆12960.000113708285152.06642.5304878
谨斯里12920.000113357324446.495882.8248599
水默12850.00011274316321.618132.3186948
微博12720.000111602572229.0873.469414
写作业12650.0001109884197.611312.3127012
宝强12590.00011046198144.65472.1391745
南烟12470.000109409121579.91.5795708
呜呜呜呜12260.000107566631422.67410.7233886
壁咚12050.000105724132936.7512.3357627
懵逼11960.0001049344941526.33541.7031717
易烊千玺11930.000104671283649.29831.7502799
搞事情11770.00010326747469.74891.7669501
萌萌11710.00010274105369.751531.4982914
应怜11420.000100196645679.8911.6739386
考神保佑11180.00009809094715.999630.6439655
单身狗10840.00009510785654.715152.735538
朝花惜时10800.0000947569330.802431.5743202
签售10650.000093440833327.91773.2389452
高冉10590.0000929144749.310552.2584584
洛逸10500.000092124766001.9793.3941467
老司机10490.00009203702523.677732.1651042
微信10350.000090808695433.499942.66124
炫童10090.000088527512634.79791.0329934
高仿10060.0000882643542.78462.615807
加油加油9890.00008677275160.900830.99770564
镜玄9890.000086772753026.10962.3082404
小黄文9820.00008615859221.075473.2080538
咳咳9740.000085456682539.00660.7538306
江哥9740.00008545668345.304932.479942
学生党9530.00008361419521.82592.3849728
同款9470.00008308776494.063753.1331296
嗷嗷嗷9160.0000803678853242.1691.2108015
晴蓝9160.000080367885977.8911.5679594
暖男9100.00007984146113.616860.8645378
哇哇哇9090.00007975372778.08110.9925133
腐女9060.000079490506274.75882.7038126
龙之谷9020.000079139563523.03960.8865134
开车开车8990.00007887634498.598270.67953616
闺蜜8990.000078876345840.85452.743314
玛丽苏8970.000078700873875.22243.3459933
南烟斋8820.00007738482185.67462.1416628
清英8720.00007650742636.9031.8763657
老宫8670.00007606873365.81852.6832836
番外8650.000075893261540.12.852577
保佑保佑8620.00007563004119.559640.84645087
狂魔8610.00007554231887.38060.71571773
没毛病8590.00007536683198.230030.80526865
嘿嘿嘿嘿8540.00007492814477.057340.5259418
小仙女8450.0000741385153.733951.9263396
鹿晗8390.000073612075705.64843.0926082
停更8210.00007203279155.032012.7178392
必过8180.00007176958106.212670.7666756
秀恩爱8090.000070979935445.02152.2470446
注意身体8020.000070365771461.18371.6486573
部漫画7940.00006966387175.180911.2902995
威风堂堂7900.000069312925207.8821.9537654
小贝7900.00006931292116.321152.419325
柯小7850.00006887423150.559682.2457926

可以看到排名靠前的是一些快看漫画特有的词汇:朝花、咬痕、锐思等;还有一些关于学生的:写作业、考神、学生党等;关于恋爱的:壁咚、单身狗、啪啪啪等;另外,这份数据是按照时间排序的,所以这前100万行数据应该是快看刚开发出社区功能时候的,所以也体现了当时的热点,例如宝强、马蓉、宋喆都出现在了词表里面。

第三次测试

根据上面统计出的结果,我们发现一些没什么意义的语气词(啦啦啦,嗯嗯等)和叠词短语(加油加油,保佑保佑)也出现在词表中,而且有的排名还很靠前.其实这些词都是没有什么固定搭配,但是出现的频率挺高的,可能都是被当做一些口头禅来使用了.但是筛选的时候默认是按照词频来排序的.
然而它们的左右邻字信息熵都比较低,所以我把这100条按照entropy这个字段来排序,发现排在前面的都是一些比较"好"的词.可以修改一下策略,提高entropy这个字段的阈值,或者直接根据它来排序后输出.
下面分别是提高阈值和更改排序字段后的结果:

1.将entropy的最小值设为1.0

textfrequencyprobabilityaggregationentropy
朝花76190.0006684748714.13952.1286788
咬痕70330.000617060461358.76382.6024222
锐思52650.0004619399845.59932.9776123
伊凯49400.000433425071481.1292.8826144
马蓉39830.000349459941295.19062.83174
污污25010.0002194324353.566161.0437318
千玺24460.000214606831941.36622.262512
芙蕾23070.000202411263910.03442.5435712
狗粮21900.00019214593823.80642.7401226
夏天岛21330.000187144882851.00423.0487359
呜呜呜20410.000179072991577.93681.0952901
爆照16410.00014397784613.29581.4314348
福利图16250.00014257403521.510442.5649443
啪啪啪15920.000139678681376.9872.1149125
莲莲14440.000126693491271.32852.7751904
傲娇13830.000121341474379.40971.7764797
林路13710.00012028862408.818852.5821934
耽美13650.00011976219719.608463.4154472
蓝斯13280.00011651589470.824373.024543
宋喆12960.000113708285152.06642.5304878
谨斯里12920.000113357324446.495882.8306234
水默12850.00011274316321.618132.3186948
微博12720.000111602572229.0873.469414
南烟12470.000109409121579.91.5795708
壁咚12050.000105724132936.7512.3357627
懵逼11960.0001049344941526.33541.7031717
易烊千玺11930.000104671283649.29831.7502799
搞事情11770.00010326747469.74891.7669501
萌萌11710.00010274105369.751531.4982914
应怜11420.000100196645679.8911.6739386
单身狗10840.00009510785654.715152.735538
朝花惜时10800.0000947569330.802431.5743202
签售10650.000093440833327.91773.2389452
高冉10590.0000929144749.310552.2584584
洛逸10500.000092124766001.9793.3941467
老司机10490.00009203702523.677732.1651042
微信10350.000090808695433.499942.66124
炫童10090.000088527512634.79791.0329934
高仿10060.0000882643542.78462.615807
镜玄9890.000086772753026.10962.3082404
江哥9740.00008545668345.304932.479942
学生党9530.00008361419521.82592.3849728
同款9470.00008308776494.063753.1331296
嗷嗷嗷9160.0000803678853242.1691.2108015
晴蓝9160.000080367885977.8911.5679594
闺蜜8990.000078876345840.85452.743314
玛丽苏8970.000078700873875.22243.3459933
南烟斋8820.00007738482185.67462.1416628
清英8720.00007650742636.9031.8763657
老宫8670.00007606873365.81852.6832836
番外8650.000075893261540.12.852577
鹿晗8390.000073612075705.64843.0926082
秀恩爱8090.000070979935445.02152.2470446
注意身体8020.000070365771461.18371.6486573
威风堂堂7900.000069312925207.8821.9537654
傻逼7790.0000683478503.86822.92917
炒鸡7750.000067996851740.992.6187243
江应怜7740.000067909112937.193.1312523
表情包7600.00006668078834.186772.6742978
董乐7510.000065891141694.97771.834631
淇儿7410.000065013761107.472.7357907
网红7250.00006360996383.834172.673612
艾辰7240.000063522224679.08252.3421447
阿良7120.000062469364582.45032.335938
王宝强7090.000062206151305.36873.3467567
麻麻6740.0000591353241263.24233.1371875
杨洋6640.0000582579453129.1482.676895
叶陵6610.000057994735301.61332.2701695
蓝翅6360.0000558012831351.73192.4104183
颜值6250.0000548361682091.09183.5542188
摩羯6150.0000539587910546.1762.0407236
喵喵5970.000052379511321.65551.3843987
男票5960.00005229177321.811982.861099
孩纸5830.00005115118307.640262.1485841
萌萌哒5510.0000483435651209.78961.3233126
杨深5460.000047904876864.41923.1076918
良叔5460.000047904876893.49711.5604147
兔先生5260.00004615012474.437322.2437394
挂科5260.00004615012715.761351.274379
脑残5210.000045711431101.30032.3731766
脑洞5200.0000456236921432.96512.697944
宣哲5140.0000450972666498.1772.250713
酱酱5120.0000449217881528.38841.6038784
阿修5030.00004413215616.27412.4794445
咕啾4860.00004264060411397.3983.1129205
冯思婷4790.0000420264418829.5663.095593
惊悚4780.0000419387034864.77051.5313193
条动态4560.00004000847399.855131.8436525
姨妈巾4540.0000398329942905.31132.8004825
廖兮4540.0000398329948386.2562.3456502
嘤嘤嘤4490.0000393943054181.57861.2522628
二硕4330.000037990496588.58481.8477677
剧透4170.00003658669994.412352.6705313
琪儿4150.000036411217911.042362.4461467
举爪3870.000033954555815.08011.0833675
属于中国3810.000033428131119.7421.298511
夏蒂3800.000033340392393.81352.7324243
茨木3750.0000329017025006.03862.7616844
王俊凯3730.0000327262241712.89262.2571971
寄刀片3620.000031761111749.38291.9641904

2.按entropy从大到小排序取前100个(probability>=0.00001)

textfrequencyprobabilityaggregationentropy
颜值6250.0000548361682091.09183.5542188
微博12720.000111602572229.0873.469414
吐槽3350.0000293921861796.55933.4630563
耽美13650.00011976219719.608463.4154472
洛逸10500.000092124766001.9793.3941467
王宝强7090.000062206151305.36873.3467567
玛丽苏8970.000078700873875.22243.3459933
戈薇2500.00002193446716642.2153.2495627
茶蛋1520.000013336156641.077333.2491825
签售10650.000093440833327.91773.2389452
脑补2440.000021408041344.02213.2287629
麻麻6740.0000591353241263.24233.1371875
同款9470.00008308776494.063753.1331296
江应怜7740.000067909112937.193.1312523
杨深5460.000047904876864.41923.1076918
咕啾4860.00004264060411397.3983.1006157
冯思婷4790.0000420264418829.5663.095593
鹿晗8390.000073612075705.64843.0926082
夏天岛21330.000187144882851.00423.0487359
蓝斯13280.00011651589470.824373.024543
闹闹2130.0000186881661013.096072.9969301
锐思52650.0004619399845.59932.9776123
语文老师2140.000018775903385.05362.9565506
关晓彤2040.0000178985251144.99872.938278
傻逼7790.0000683478503.86822.92917
霸道总裁3430.000030094095585.1532.9150019
哑舍2530.000022197688214.5132.9121056
艾爹1320.0000115813991129.4772.90676
伊凯49400.000433425071481.1292.8826144
撕逼3220.000028251594582.51672.8622305
男票5960.00005229177321.811982.861099
番外8650.000075893261540.12.852577
抱枕1950.0000171088851144.75162.849493
马蓉39830.000349459941295.19062.83174
谨斯里12920.000113357324446.495882.8248599
姨妈巾4540.0000398329942905.31132.8004825
川彤2670.0000234260113209.3352.789411
兔兔1810.000015880554497.663672.7813048
思宇2730.000023952438409.828952.7800584
撩妹1460.000012809729569.52362.7790928
莲莲14440.000126693491271.32852.7751904
姚非拉1810.0000158805542082.77032.7711809
逗比2750.000024127914321.028662.763499
茨木3750.0000329017025006.03862.7616844
闺蜜8990.000078876345840.85452.743314
真爱粉1650.000014476748422.130952.7400355
狗粮21900.00019214593823.80642.7364693
淇儿7410.000065013761107.472.7357907
单身狗10840.00009510785654.715152.735538
夏蒂3800.000033340392393.81352.7324243
金丘2700.0000236892253116.98072.7218895
脑残粉1890.000016582457737.53712.7108097
哆哆3190.000027988387592.6152.7099466
张若昀2160.00001895138595.090762.7083547
板绘1460.000012809729830.8562.700903
脑洞5200.0000456236921432.96512.697944
老宫8670.00007606873365.81852.6832836
王者荣耀2230.0000195655452297.39162.6817567
杨洋6640.0000582579453129.1482.676895
表情包7600.00006668078834.186772.6742978
网红7250.00006360996383.834172.673612
剧透4170.00003658669994.412352.6705313
拖稿2580.00002263637560.0692.668303
杜小莘1190.0000104408061354.86052.6673255
微信10350.000090808695433.499942.66124
马荣3070.000026935526556.48562.6507087
腹黑3440.0000301818271199.47292.623004
炒鸡7750.000067996851740.992.6187243
高仿10060.0000882643542.78462.615807
薛之谦2900.00002544398213751.1132.6034563
咬痕70330.000617060461358.76382.6024222
雾霾1280.0000112304478250.6662.5962553
林路13710.00012028862408.818852.5821934
凯爸锐妈1320.000011581399581.915342.5741382
福利图16250.00014257403521.510442.5649443
瑾斯里1280.000011230447390.256472.5566056
宋仲基1740.0000152663893581.41532.5511425
芙蕾23070.000202411263910.03442.5435712
伯贤1140.0000100021179617.5052.5391426
宋喆12960.000113708285152.06642.5304878
萝莉1150.0000100898558957.97952.5202932
杨美味1210.000010616282606.74592.493181
吴亦凡2340.0000205306613268.4372.493003
浸屎里1300.000011405923452.976322.4838595
养小鬼2620.0000229873222158.34382.4814637
江哥9740.00008545668345.304932.479942
阿修5030.00004413215616.27412.4794445
抢热门3350.000029392186308.256772.4698045
世勋1150.0000100898551542.13542.458998
盆友2830.000024829817424.237582.4581518
迷妹3060.000026847789391.91212.4477751
琪儿4150.000036411217911.042362.4461467
朱里安1950.0000171088851480.73082.4291697
柯基1370.000012020088418.458042.4283874
督尼3200.0000280761187561.7172.4274776
血族3360.000029479925897.68342.4200006
美瞳1850.000016231506305.564122.4142103
蓝翅6360.0000558012831351.73192.4104183
瑞思1320.000011581399445.857882.392941
学生党9530.00008361419521.82592.3849728
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值