• 文本相似性热度统计(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 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

  • 相关阅读:
    gitlab详解
    Centos7源码安装MySQL5.7
    git常用语句
    jenkins的Pipeline代码流水线管理
    jenkins配置Maven的私有仓库Nexus
    jenkins按角色授权
    jenkins集群节点构建maven(几乎是坑最多的)
    jenkins按版本发布maven项目
    jenkins发布java项目
    实现拷贝函数(strcpy)
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/12320273.html
Copyright © 2020-2023  润新知