使用文本相似度可以识别变化的时间点
大邓和他的Python
共 2655字,需浏览 6分钟
· 2022-01-01
使用文本相似度可以识别变化的时间点,先配置环境
配置环境
!pip3 install scikit-learn==1.0
!pip3 install cntext==1.2
# 安装pyecharts可视化
!pip3 install pyecharts==1.6.2
!pip3 install pyecharts-javascripthon==0.0.6
!pip3 install pyecharts-jupyter-installer==0.0.3
!pip3 install pyecharts-snapshot==0.2.0
1. 查看数据
本次使用sotu数据集,收集了从1790年至2018年国情咨文文本,这是漂亮国大统领每年发表的演讲,用于描述国家过去的成就和未来面临的挑战。
import pandas as pd
df = pd.read_csv('sotu.csv')
#text2是text向下顺移1位的结果
df['text2']=df['text'].shift(1)
#剔除空字符
df.dropna(inplace=True)
df.tail(10)
两段文本的相似度可以通过cos计算
from cntext.similarity import similarity_score
text1 = 'Mr. Speaker, Mr. Vice President, members of'
text2 = 'Thank you very much. Mr. Speaker, Mr. Vice'
similarity_score(text1, text2)
{'Sim_Cosine': 0.4629100498862757,
'Sim_Jaccard': 0.3,
'Sim_MinEdit': 16,
'Sim_Simple': 0.9619883040935673}
2. 相似度可视化
如果把很多个相邻文本(有时间先后顺序)依次计算相似度,可以绘制出曲线,我们根据自己的领域知识,就可以看出变化的时间点。
from cntext.similarity import similarity_score
cosines = []
for idx, row in df.iterrows():
text1 = df.loc[idx, 'text']
text2 = df.loc[idx, 'text2']
simi = similarity_score(text1, text2)['Sim_Cosine']
cosines.append(simi)
cosines
[0.42767330405703097,
0.39821498388325544,
0.410744931596176,
0.3844380358041578,
0.4116242706522565,
0.4169268094228332,
0.4249719376001671,
....
0.39065212923423315,
0.3763764307701755,
0.35307484669994105,
0.4119319787659037,
0.43053043053064594,
0.45219743197249296,
0.421723837550935,
0.427904362863808]
from pyecharts.charts import Line
from pyecharts import options as opts
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK
line = Line()
line.add_xaxis(xaxis_data=[str(y) for y in df['year'].values])
line.add_yaxis("本期与上期的相似度",
cosines,
label_opts=opts.LabelOpts(is_show=False))
line.set_global_opts(title_opts=opts.TitleOpts(title="1790年至2018年国情咨文文本相似度"))
line.load_javascript()
line.render('1790年至2018年国情咨文文本相似度可视化.html')
line.render_notebook()
注意,横坐标显示的是当年报告 与 前一年报告 的对比相似度
3. 图形解读
相似度越低,说明本期与前期相比,文本变化较大,在本场景中可能是漂亮国在大幅度调整政策。
在图中,我们最熟悉的时期是一战和二战,这个阶段在图中较长时间处于低位,漂亮国zf的政策处于战时状态。
漂亮国立国初期,相似度连线也长时间处于低位,新国家正在探索(或创新)为政之道,那么政策前后期的相似性也会比较低。
漂亮国每4年选ju一次,那么换届年份,相似度也会比较低。
近期文章
评论
真高!比亚迪员工爆料比亚迪在越南的薪资水平:基本工资480万,全勤奖35万,交通补助20万,餐补110万,每周6天,每天10小时
上一篇:某大公司为逼迫员工离职,竟然把他的工位安排到厕所旁,没想到他直接开始记录领导的如厕时间,还发到公司大群...对此,你怎么看?--完--PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。全文完,感谢你的耐心阅读。如果你还想看到我的文章,请一定给本
开发者全社区
0
某大公司为逼迫员工离职,竟然把他的工位安排到厕所旁,没想到他直接开始记录领导的如厕时间,还发到公司大群...
上一篇:字节的跳动职级与薪资(2024年)我们与公司间的合作,宛如两艘船只在茫茫大海上相互依靠,共同抵御风浪,携手驶向成功的彼岸。然而,当航向开始产生分歧,或是波涛汹涌的风浪改变了我们的初衷,我们或许应当冷静地选择和平分手,而非在风雨中硬撑。最近,一位网友的遭遇引起了广大职场人的关注和热议。这位网友
开发者全社区
0
我看阿里的年终奖总算发了!
到4月底了,这两天看朋友圈,发现阿里的年终奖终于发了,问了问老同学,也从网上检索了不少信息,基本搞清楚了阿里今年的年终奖情况。近来来阿里一些集团对绩效等级做了较大的调整,以前的旧绩效系统中,绩效分为3.25、3.5、3.75、4和5五个等级,其中4和5是较高绩效等级,较少见。而且之前3.5绩效内部划
公子龙
0
CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿本文目录1 序列建模打造大视觉模型(来自 U
极市平台
1
字节的跳动职级与薪资(2024年)
上一篇:阿里公布年终奖,P7, 3.5+,22W年终奖,还有35W长期现金激励,真香字节跳动自2012年3月成立以来,已经迅速成长为一个全球性的科技公司。其产品和服务已经遍布全球150多个国家与地区,并且支持超过75种不同的语言。在字节跳动的官方网站上,列出了一系列引人注目的产品和服务,包括但不限于
开发者全社区
0
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
Apache Paimon毕业,湖仓架构的未来发展趋势!
北京时间 2024 年 4 月 16日,开源软件基金会 Apache Software Foundation(以下简称 ASF)正式宣布 Apache Paimon 毕业成为 Apache 顶级项目(TLP, Top Level Project)。经过社区的共同努力和持续创新,Apache Paim
程序源代码
0