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. 头条项目推荐的相关技术(四):离线文章画像的增量更新及离线文章相似度计算

    1. 写在前面 这里是有关于一个头条推荐项目的学习笔记,主要是整理工业上的推荐系统用到的一些常用技术, 这是第四篇, 上一篇文章整理了离线文章画像的计算过程,主要包括TFIDF和TextRank两种技 ...

  2. 【记录】文章相似度计算开发(附代码)

    写在前边:目前已经通过爬虫等手段获取了千万级的文章类数据,但是目前这些数据是只是简单的基于表层的应用,相对粗粒度的统计,文本之间的很多信息并没有被良好的利用起来.为了提高数据的使用率并获取更多有用信息 ...

  3. python文本相似度计算

    当计算出文本的Count Vector后,通过如下几种方法计算文本相似度. Count Vector相关计算:(8条消息) 利用python文章关键信息提取_菜鸟1号--的博客-CSDN博客https ...

  4. python 文本相似度计算函数_一文讲述常见的文本相似度计算方法

    作者 | LU_ZHAO 责编 | 徐威龙 前言 在自然语言处理中,我们经常需要判定两个东西是否相似. 比如,在微博的热点话题推荐那里,我们需要比较微博之间的相似度,让相似度高的微博聚集在一起形成一个 ...

  5. python图片相似度计算_python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁 ...

  6. python 文本相似度计算函数_四种计算文本相似度的方法对比

    作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...

  7. php文章相似度计算,PHP相似度算法

    写了很久忘保存了,囧没了,先放这里 catalogue 1. TF-IDF2. 基于空间向量的余弦算法3. 最长公共子序列4. 最小编辑距离算法5. similar_text 1. TF-IDF Re ...

  8. python中文相似度计算_doc2vec计算文本相似度--python实现

    Boblee人工智能硕士毕业,擅长及爱好python,基于python研究人工智能.群体智能.区块链等技术,并使用python开发前后端.爬虫等. 1.背景 doc2vec的目标是创建文档的向量化表示 ...

  9. Word2Vec原理及应用与文章相似度(推荐系统方法)

    Word2Vec与文章相似度(推荐系统方法) 学习目标 目标 知道文章向量计算方式 了解Word2Vec模型原理 知道文章相似度计算方式 应用 应用Spark完成文章相似度计算 1 文章相似度 在我们 ...

  10. python 文本相似度现状_python文本相似度分析

    如何用python计算文本的相似度 同学欢迎来到CSS布局HTML~文本的相似度计算是NLP(自然语言处理)方向的范畴,感兴趣可以找相关的书籍详细学习研究.同学问的这个问题,可以搜索:python文本 ...

最新文章

  1. linux 读取大量图片 内存,10 张图帮你搞定 TensorFlow 数据读取机制
  2. Linux的主要特性
  3. python表示复数的语句是_在python中复数如何表示
  4. 数据结构与算法之“之”字型打印矩阵和矩阵中找数
  5. 对勾函数_对勾函数?2020福建省中考压轴题分析
  6. EditPlus 文件查找功能:在指定文件夹,用正则查寻包含指定内容的文件,指定文件类型,并排除特殊文件名文件
  7. linux自动重启保护,Linux在崩溃时自动重启应用程序 – 守护进程
  8. nginx 和tomcat,apache的区别于联系。
  9. IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
  10. 转发和重定向又是什么“垃圾”——教你再分类
  11. CATransition 动画处理视图切换
  12. Y580已成功将bios升级至V8.01
  13. 什么软件测试情侣头像,在线识别情侣头像
  14. 软件测试结束的标准是什么??
  15. [原创]淘宝天猫抢购软件“tbBuyer“
  16. python qq群发消息_Python版QQ群发消息
  17. 实数,有理数,无理数,自然数,整数的概念分别是什么?
  18. 计算机瞬间黑屏又自动恢复,电脑显示器突然黑屏然后过几秒又自动恢复过来为什么?-显示器黑屏几秒又好...
  19. 优派 ELITE XG320Q、XG320U / UG 评测
  20. Android系统驱动介绍

热门文章

  1. 做好云平台架构需要哪些能力
  2. 【java】java: -source 1.5 中不支持 diamond 运算符
  3. 第一篇(上):对称分量分解(Symmetrical Component Decomposition)序列变换 (Sequence Transformation)零序 正序 负序 分解
  4. 计算机配置相关参考文献,计算机维护论文,关于《计算机配置维护》教学改革实践相关参考文献资料-免费论文范文...
  5. 浅谈中国各类教育优缺点
  6. 3.29黄金周初能空吗?黄金原油今日精准策略及沪银涨跌分析
  7. 复数类 complex
  8. Java实现RSA分段加密解密
  9. springboot RSA加密解密
  10. 机器学习实战——PCA降维