文本相似性热度统计(python版)
0. 写在前面
节后第一篇,疫情还没结束,黎明前的黑暗,中国加油,武汉加油,看了很多报道,发现只有中国人才会帮助中国人,谁说中国人一盘散沙?也许是年龄大了,看到全国各地的医务人员源源不断的告别家人去支援湖北,看到医务人员、肺炎病人的故事,总会忍不住落泪,中国加油,中国人加油!
1. 场景描述
背景不写了,只谈技术,做的是文本相似性统计,因需要从文本描述性信息中分析同类信息,以便后续重点关注,数据量比较大,大概20多万,人工效率低,需要算法来实现。
根据需求要从不同维度进行统计:
(1)分组不分句热度统计(根据某列首先进行分组,然后再对描述类列进行相似性统计);
(2)分组分句热度统计(根据某列首先进行分组,然后对描述类列按照标点符号进行拆分,然后再对这些句进行热度统计);
(3)整句及分句热度统计;(对描述类列/按标点符号进行分句,进行热度统计)
(4)热词统计(对描述类类进行热词统计,反馈改方式做不不大)
2. 解决方案
在网上以及和同事都验证了很多不同实现方案,具体过程就不说了,对比下来,jieba+gensim效果最好。
算法实现介绍:
(1)输入文件是excel,数据大概20多万,首先通过pandas获取excel信息,通过jieba分词进行处理,jieba分词要首先自定义词典以及排除信息,这样效果会差异很大,然后形成一个二维数组。
(2)使用gensim 中的corpora模块,将分词形成后的二维数组生成词典
(3)将二维数组通过doc2bow稀疏向量,形成语料库
(4)刚开始使用TF模型算法,后来更改为:LsiModel模型算法,将语料库计算出Tfidf值。
(5)获取词典token2id的特征数
(6)计算稀疏矩阵相似度,建立一个索引
(7)读取excel行数据,通过jieba进行分词处理
(8)通过doc2bow计算测试数据的稀疏向量
(9)求得测试数据与样本数据的相似度
算法说明:
(1)这里有个点,7-9步会循环执行,针对文档描述列中的每一行,会与在第六步中创建的索引就行比对,会统计与该行相似性超过50%的行数据,同时会将统计到的数据增加个数组中,后续不再执行比对,以免重复统计。
(2)第一步jieba算法中会用到专业术语词典及stop词典等,7-9部会循环执行,目前相似度阈值设置的为:50%,另外excel操作就不多说了(增加了汇总起来清单的超链,可以导航到清单)
(3)效率上,20多万的数据,因需要转换向量,大概需要20来分钟。
(4)大的算法发是这样的,下一篇再开始上代码,针对不同需求,进行介绍。
I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!
文本相似性热度统计(python版)的更多相关文章
- 利用sklearn计算文本相似性
利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中.这里提取文本TF-IDF特征值进行文本的相似性计算. #!/usr/bin/python # -*- coding: utf- ...
- 人脸验证算法Joint Bayesian详解及实现(Python版)
人脸验证算法Joint Bayesian详解及实现(Python版) Tags: JointBayesian DeepLearning Python 本博客仅为作者记录笔记之用,不免有很多细节不对之处 ...
- 字符串匹配算法之 kmp算法 (python版)
字符串匹配算法之 kmp算法 (python版) 1.什么是KMP算法 KMP是三位大牛:D.E.Knuth.J.H.MorriT和V.R.Pratt同时发现的.其中第一位就是<计算机程序设计艺 ...
- Python版飞机大战
前面学了java用java写了飞机大战这次学完python基础后写了个python版的飞机大战,有兴趣的可以看下. 父类是飞行物类是所有对象的父类,setting里面是需要加载的图片,你可以换称自己的 ...
- 【Python】《大话设计模式》Python版代码实现
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
- ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)
ROS Indigo beginner_Tutorials-10 编写 ROS 话题版的 Hello World 程序(Python版) 我使用的虚拟机软件:VMware Workstation 11 ...
- 《大话设计模式》Python版代码实现
上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 数据结构:顺序表(python版)
顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...
随机推荐
- Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 Go 开发关键技术指南文章目录: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 开发指南大图 ...
- spring boot介绍
spring boot简介 1.spring boot是spring家族中的一个全新的框架,它用来简化spring应用程序的创建和开发过程,也可以说spring boot能简化我们之前采用ssm框架进 ...
- MySQL保存 emoji 表情(微信昵称表情)
问题分析 在微信开发过程中,总是会遇到带有emoji表情昵称的微信用户无法自动登录的问题. 后台代码抛出类似下面的异常信息. java.sql.SQLException: Incorrect stri ...
- No property andp found for type String! Traversed path: CmsPage.siteId.
Respository没有找到该参数 1)由该参数,函数名写错,不符合JPA规范 2)实体类没有该参数
- restapi-sql
身份验证,确定该成员是交过费的机构的成员,包含(用户名)和(密码) 各个表中的属性,有关timetemp等特殊类型,LocalDate等日期等具体格式. 引入了传输过程的不同的数据格式导致的两个错误, ...
- vue超简单加载字体方法,解决scss难加载字体的问题
vue超简单加载字体方法,解决scss难加载字体的问题 scss在加载字体方面一直不太好用,需要繁杂的配置才能达到想要的效果,这里说一种非常简单的方法 在App.vue的style标签下引入字体文件后 ...
- 《【面试突击】— Redis篇》-- Redis的主从复制?哨兵机制?
能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注左上角编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis的主从复制?哨兵机制? 在这个 ...
- target 和 currentTarget的区别
target是当前点击的组件,currentTarget是扑捉到事件的组件
- DFS——深度优先搜索的一般格式
DFS是一种深度优先的搜索思想,运用递归完成搜索,本质上也算是穷举思想的一类,可以通过剪枝进行优化. DFS的核心是回溯和递归, 如果以迷宫为例,一般会指定走各个方向的顺序(例如先左再上再右再下).从 ...
- BigDecimal的加减乘除,比较,小数保留
关于BigDecimal的一些常用基本操作记录 1 BigDecimal b1 = new BigDecimal("1.124"); 2 BigDeci ...