基于今日头条开源数据的词共现、新热词发现、短语发现
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号: datayx
loveai.tech
AI图谱,一个全新的IT技术分享社区
原创作者在AI图谱平台上每成功发布一篇文章,通过审核后可奖励人民币30-50元不等,欢迎参与!
实现的功能大致有三个:
词共现是词-词离散出现,词共现包括了上面的内容,探究:‘举’,‘来说’,不用挨着的词出现的次数。
本文完整源码 数据集获取方式:
关注微信公众号 datayx 然后回复 今日头条 即可获取。
一、数据集介绍
数据来源:今日头条中文新闻(文本)分类数据集
今日头条是最近开源的数据集,38w,其中的数据格式为:
每行为一条数据,以!分割的个字段,从前往后分别是 新闻ID,分类code(见下文),分类名称(见下文),新闻字符串(仅含标题),新闻关键词。
二、短语发现、新词发现算法介绍2.1 理论介绍 凝聚度:
以双汉字词语为例,可以想象到,如果该词语的聚合度很低,说明其第一个字和第二个字的相关性很弱,甚至是不相关的,那么P(S)和P(sl)×P(sr)将处于同一个数量级。
相反,如果该词语的聚合度很高,“齐天”、“大圣”和“齐天大圣”三者的概率都很接近,因此P(S)/(P(sl)×P(sr))将是一个远大于1的数值。
自由度:
用熵来衡量一个词语的自由度。假设一个词语一共出现了N次,其左边共出现过n个汉字,每个汉字依次出现N1,N2,……,Nn次,则满足N = N1 + N2 + …… + Nn,因此可以计算该词语左边各个汉字出现的概率, 并根据熵公式计算左邻熵。熵越小则自由度越低,例如“天大圣”的左邻熵接近于0,因为“齐”字的概率几乎为1;熵越大则自由度越高,表示用词搭配越混乱、越自由、越多样。 因为“天大圣”的左邻熵很小,而右邻熵则相对较大,因此我们将一个词语左邻熵和右邻熵中较小者作为最终的自由度。
IDF:
逆文档词频
2.2 主函数参数
算法的参数描述:
其中的参数::
diction:字典,第一批Jieba分词之后的内容算法步骤:可用的函数:三、词共现算法介绍
我这边只是简单利用笛卡尔积:
permutations 排列
combinations 组合,没有重复
combinations_with_replacement 组合,有重复
文件夹介绍:
短语发现、新词发现算法:termsRecognition.py
今日头条数据38w:toutiao_data.csv
二元组算法:tuplewords.py
先来看看数据长啥样:
4.1 短语发现、新词发现模块
4.1.1 没有经过分词的原始语料
得到的结论,如图:
这边其实可以在Jieba分词的时候,预先载入一些停用词。这边来看,发现的有:对下联、王者荣耀
4.1.2 经过分词的原始语料
当然,探究的是词-词之间的连续共现的情况。此时,我用今日头条的关键词其实不是特别合适,因为关键词之间没有前后逻辑关系在其中。
得到的结论:
其中发现了的规律都没啥用,大家看看就行。
4.2 词共现模块
二元组模块跟4.1中,分完词之后的应用有点像,但是这边是离散的,之前的那个考察词-词之间的排列需要有逻辑关系,这边词共现会更加普遍。
其中,在该模块写入了两种:
热词统计
词共现统计
该模块输入的是keywords,List形:
tw.CoOccurrence就是对上面的内容进行解析,得到了:
发现,快乐大本营-谢娜的组合比较多,詹姆斯-猛龙嘛,看客们懂的,詹皇血克猛龙,哈哈~ 热词发现这个很常规:
阅读过本文的人还看了以下:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注