基于Python的中文分词词性标注词频统计的实现
今天是2018年10月22号,小亮继续着自己深度学习与自然语言处理的打怪升级之路。今天给大家介绍一下最近接的小项目,基于Python的中文分词词性标注词频统计的实现,在这里与大家交流一下!
笔者信息:Next_Legend QQ:1219154092 机器学习 自然语言处理 计算机视觉 深度学习
一、项目需求
该项目的背景领域是金融工程,处理语料是中文的金融方向的txt书籍,目的是检测出书中的名词与动词等关键信息,并标注词性、统计词频等信息,最后导出数据为Excel格式。下图是需要处理的txt文本数据以及小亮自己找的停用词文本:
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYxNS9hOTM5YzUyY2I0MTdhNGU4MGI5MDY3ZjIzNjIzNzhkNy5KUEVH.JPEG?w=700&webp=1)
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgzMi80M2VlYmFkZTAwMzIwM2M5MzRlMTViMWMwODFmNTg0OC5KUEVH.JPEG?w=700&webp=1)
二、需求分析
小亮并没有急于上手开始做项目,而是先分析了一下项目需求,其实主要的流程就是输入数据——>数据预处理——>词性标注(包含了分词)——>词频统计——>数据再次处理——>数据保存为Excel。其中中前后两部分的数据处理考验基本的Python数据结构能力,这部分可能得花一部分时间考虑。然后最难得部分是先做词性标注还是词频统计的顺序问题,刚开始小亮并没有考虑,只是先做了几个小样本的测试,结果到后面数据处理部分非常之麻烦,所以小亮百思终得其姐(解),先处理词性标注,再处理词频统计,从根本上说,词频统计其实也是数据处理问题,而不是自然语言处理(NLP)问题。
三、项目过程
(1) 导入相关的库
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc3NC9jZTdkODU2ZGQ5NDg4OWQyZDdlY2Y3NmEwOGM5MzdiNi5KUEVH.JPEG?w=700&webp=1)
(2) 读取中文语料数据
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUzOS9jZDFmYThhODQ2NmY3ZjgxZDlmYTdkMzc0ZTUxNWI1My5KUEVH.JPEG?w=700&webp=1)
(3) 去除停用词
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc3Mi9kMmUzZGQ1MzJiNzRmYjZmM2YzZTExNmY0NzllOTg0Yy5KUEVH.JPEG?w=700&webp=1)
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2Ny85MmIzMmNjNWMwOTlmNmI1MjZhNTY1MmYwNzE4NTM0Zi5KUEVH.JPEG?w=700&webp=1)
(4) 正则表达式过滤非中文字符
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIzNS9jOTU0Mjc1ODkwMjRkOTdmYjQ5MjQ4ZWRjYzhlNjljYi5KUEVH.JPEG?w=700&webp=1)
(5) 词性标注
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU5NC8wNDczMTc3MGY2NDM0NjJhNjFkMTM1ODMxNDg3M2NmYS5KUEVH.JPEG?w=700&webp=1)
(6) 去除结果中的空格等现象
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI2MC9kNjQyMjU2YWQwYmZjMTViNWNlMzczOTJjNGY0YzAzNC5KUEVH.JPEG?w=700&webp=1)
(7) 词频统计
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE5MC9mYzc0ZDFjMmQ2OTRkMTdjMTljOGQ2ODQ0NmNiODQyNi5KUEVH.JPEG?w=700&webp=1)
(8) 数据二次处理整合
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQzMy8xZDk4OTA0NDBiNGVlYjQ5OWY0ZDBiNWE4ZWVjOWEwOS5KUEVH.JPEG?w=700&webp=1)
(9) 保存数据为Excel格式
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ2NC8wZTMxOGZhNjQwODdmYWZkYmE0MjQ3MmU5NGIwOGNjMC5KUEVH.JPEG?w=700&webp=1)
四、项目结果
(1) 去除停用词后的结果
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkxNS85MjA4ODA3NWRmODVlZTU5ZDBiMWYxNWNmM2MxZDA1Yi5KUEVH.JPEG?w=700&webp=1)
(2) 词性标注结果
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY4OC84OTdlNGFmMTUzMmRkYWRmZDg3Njg3YjRmNGRiMWJlOC5KUEVH.JPEG?w=700&webp=1)
(3) 词频统计结果
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEvODgzMjZlZmYzZTczZGZjNzIwOWQxOGZlNTNiMWViZDEuSlBFRw%3D%3D.JPEG?w=700&webp=1)
(4) Excel结果
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc5LzVjMWI3ZDlhZTYxNzEwNTUyYmRlY2MzM2MyYTI0Nzg3LkpQRUc%3D.JPEG?w=700&webp=1)
![基于Python的中文分词词性标注词频统计的实现 基于Python的中文分词词性标注词频统计的实现](https://image.shishitao.com:8440/aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE4Ni9jYTg4OTQ4YjNjMWNmMDBmMmI3ODM4OTRiZjgyZGFhMi5KUEVH.JPEG?w=700&webp=1)
五、项目总结
其实,这个项目对于自然语言处理(NLP)任务来说,还是挺基础的,挺考验基本功的。说它基础是因为就用到了一个分词和词性标注,甚至说分词这一步都没做处理,词性标注包含了分词这一步骤。其次,对于Python的基本语法也很讲究,小亮就是困于数据处理与保存为Excel格式而消耗了大量时间,说明自己的基本功还是很差的,现在还做不到Python语法结构了然于心,项目整体框架形然于胸的地步。小亮还需要做的事情还有很多,理论还是要继续坚持的,代码也还是每天Coding的。小亮曾说过:“因为有你,BATJWM才那么Easy! 今天的挥汗如雨,是为了明天的挥金如土!我是赵小亮,我为自己打Call!”
笔者信息:Next_Legend QQ:1219154092 机器学习 自然语言处理 计算机视觉 深度学习