python-文章相似度计算
python-文章相似度计算
编写一个程序,设计实现以下函数并实现整体功能(文章相似度计算):
1.0 word_input_file(file):输入文本文件路径(如input.txt),返回该文档的合理表示(用于以下任务)
1.1 word_tf_df(sentences,word):输入文章列表、词,输出该词的词频、文档频率
1.2 word_cosine_similarity(sentences,sentence1,sentence2):输入文章列表、文章1、文章2,输出文章1和文章2的相似度(即相似的程度,使用余弦相似度【可搜索相关概念】)’’’
读取文章列表
def get_article_list(path):"""从文件中读取文章列表:path: 文件路径return: (返回列表list[]/元组tuple())"""file = open(path, encoding='utf8')res = []# 定义一个空列表for line in file:list1 = line.split(' ')res.append(list1[1])# 每一行新闻加入列表当作一个字符串return tuple(res)
# 列表转换成元组,加上'tuple’
articles = get_article_list('../day2/input.txt')
获取文章的词
# 返回词袋,所有文章的词(不重复的)->tuple
def get_bag(article_list):"""返回文章列表词袋:article_list:文章列表:return:词袋"""# 定义一个空集合,集合可以去重res = set()for article in article_list:word_list = article.split(' ')for word in word_list:res.add(word)return tuple(res)bag = get_bag(articles)
获取文章的词频
# 获取一篇文章的TF,使用词袋中的词的对应->tuple
def get_article_tf(article, bag):"""返回一篇文章的TF:param article:一篇文章:return:TF"""word_list = article.split(' ')word_count_dic = {}for word in word_list:if word_count_dic.get(word) is None:word_count_dic[word] = 1else:word_count_dic[word] += 1res = []for word in bag:if word_count_dic.get(word) is None:res.append(0)else:res.append(word_count_dic.get(word))return tuple(res)tf1 = get_article_tf(articles[0], bag)
tf2 = get_article_tf(articles[1], bag)
计算两篇文章的相似度
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。给定两个属性向量,A和B,其余弦相似性θ由点积和向量长度给出,如下所示:
# 计算两篇文章的相似度,基于各自的TF
# (1,0,1),(0,1,0)
def cal_cos_similarity(tf1, tf2):"""计算两篇文章的相似度(0-1),根据TF:param tf1:文章1的TF tuple:param tf2:2 TF tuple:return: 0-1,越大越相似"""if len(tf1) != len(tf2):return 0a = 0for i in range(len(tf1)):a += tf1[i] * tf2[i]b1 = 0b2 = 0for i in range(len(tf1)):b1 += tf1[i] * tf1[i]b2 += tf2[i] * tf2[i]b1 = b1 ** 0.5b2 = b2 ** 0.5similarity = a / (b1 * b2)return similarity
求与第一篇文章相似度最大的文章
max_sim = 0
max_sim_i = 0
for i in range(len(articles)):if i == 0:continuetfi = get_article_tf(articles[i], bag)sim = cal_cos_similarity(tf1, tfi)print(cal_cos_similarity(tf1, tfi))if max_sim < sim:max_sim = simmax_sim_i = i
print('max sim=', max_sim, 'i=', max_sim_i)
求两篇相似度最大的文章
# all
max_s = 0
max_i = 0
max_j = 0
for i in range(len(articles)):tfi = get_article_tf(articles[i], bag)for j in range(len(articles)):if i == j:continuetfj = get_article_tf(articles[j], bag)sim = cal_cos_similarity(tfi, tfj)if max_s < sim:max_s = simmax_i = imax_j = j
print(max_s, max_i, max_j)
python-文章相似度计算相关推荐
- 头条项目推荐的相关技术(四):离线文章画像的增量更新及离线文章相似度计算
1. 写在前面 这里是有关于一个头条推荐项目的学习笔记,主要是整理工业上的推荐系统用到的一些常用技术, 这是第四篇, 上一篇文章整理了离线文章画像的计算过程,主要包括TFIDF和TextRank两种技 ...
- 【记录】文章相似度计算开发(附代码)
写在前边:目前已经通过爬虫等手段获取了千万级的文章类数据,但是目前这些数据是只是简单的基于表层的应用,相对粗粒度的统计,文本之间的很多信息并没有被良好的利用起来.为了提高数据的使用率并获取更多有用信息 ...
- python文本相似度计算
当计算出文本的Count Vector后,通过如下几种方法计算文本相似度. Count Vector相关计算:(8条消息) 利用python文章关键信息提取_菜鸟1号--的博客-CSDN博客https ...
- python 文本相似度计算函数_一文讲述常见的文本相似度计算方法
作者 | LU_ZHAO 责编 | 徐威龙 前言 在自然语言处理中,我们经常需要判定两个东西是否相似. 比如,在微博的热点话题推荐那里,我们需要比较微博之间的相似度,让相似度高的微博聚集在一起形成一个 ...
- python图片相似度计算_python Opencv计算图像相似度过程解析
这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁 ...
- python 文本相似度计算函数_四种计算文本相似度的方法对比
作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...
- php文章相似度计算,PHP相似度算法
写了很久忘保存了,囧没了,先放这里 catalogue 1. TF-IDF2. 基于空间向量的余弦算法3. 最长公共子序列4. 最小编辑距离算法5. similar_text 1. TF-IDF Re ...
- python中文相似度计算_doc2vec计算文本相似度--python实现
Boblee人工智能硕士毕业,擅长及爱好python,基于python研究人工智能.群体智能.区块链等技术,并使用python开发前后端.爬虫等. 1.背景 doc2vec的目标是创建文档的向量化表示 ...
- Word2Vec原理及应用与文章相似度(推荐系统方法)
Word2Vec与文章相似度(推荐系统方法) 学习目标 目标 知道文章向量计算方式 了解Word2Vec模型原理 知道文章相似度计算方式 应用 应用Spark完成文章相似度计算 1 文章相似度 在我们 ...
- python 文本相似度现状_python文本相似度分析
如何用python计算文本的相似度 同学欢迎来到CSS布局HTML~文本的相似度计算是NLP(自然语言处理)方向的范畴,感兴趣可以找相关的书籍详细学习研究.同学问的这个问题,可以搜索:python文本 ...
最新文章
- linux 读取大量图片 内存,10 张图帮你搞定 TensorFlow 数据读取机制
- Linux的主要特性
- python表示复数的语句是_在python中复数如何表示
- 数据结构与算法之“之”字型打印矩阵和矩阵中找数
- 对勾函数_对勾函数?2020福建省中考压轴题分析
- EditPlus 文件查找功能:在指定文件夹,用正则查寻包含指定内容的文件,指定文件类型,并排除特殊文件名文件
- linux自动重启保护,Linux在崩溃时自动重启应用程序 – 守护进程
- nginx 和tomcat,apache的区别于联系。
- IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
- 转发和重定向又是什么“垃圾”——教你再分类
- CATransition 动画处理视图切换
- Y580已成功将bios升级至V8.01
- 什么软件测试情侣头像,在线识别情侣头像
- 软件测试结束的标准是什么??
- [原创]淘宝天猫抢购软件“tbBuyer“
- python qq群发消息_Python版QQ群发消息
- 实数,有理数,无理数,自然数,整数的概念分别是什么?
- 计算机瞬间黑屏又自动恢复,电脑显示器突然黑屏然后过几秒又自动恢复过来为什么?-显示器黑屏几秒又好...
- 优派 ELITE XG320Q、XG320U / UG 评测
- Android系统驱动介绍
热门文章
- 做好云平台架构需要哪些能力
- 【java】java: -source 1.5 中不支持 diamond 运算符
- 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解
- 计算机配置相关参考文献,计算机维护论文,关于《计算机配置维护》教学改革实践相关参考文献资料-免费论文范文...
- 浅谈中国各类教育优缺点
- 3.29黄金周初能空吗?黄金原油今日精准策略及沪银涨跌分析
- 复数类 complex
- Java实现RSA分段加密解密
- springboot RSA加密解密
- 机器学习实战——PCA降维