python中文相似度_基于TF-IDF、余弦相似度算法实现文本相似度算法的Python应用

article/2025/9/11 9:15:35

7c07ac85-a2b0-4d05-8ef6-c4bdf71fc8ac

基于TF-IDF算法、余弦相似度算法实现相似文本推荐——文本相似度算法,主要应用于文本聚类、相似文本推荐等场景。

设计说明

使用jieba切词,设置自定义字典

使用TF-IDF算法,找出文章的关键词;

每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(待优化:为了避免文章长度的差异,可以使用相对词频,);

生成两篇文章各自的词频向量;

计算两个向量的余弦相似度,值越大就表示越相似。

实现说明

1)初始化

需要对原始文档做些简单的处理,在预处理结果文件中每一行记录一个文档,文档ID与文档内容通过一定分隔符分割(比如以:::间隔),写入txt文档,当然并非一定如此处理,此处可以根据实际使用,调整代码实现。

我选取了五则新闻,其中1,2,3为房地产板块新闻,4,5为NBA板块新闻。

dd649e40c60e4c01bd7619759d82bb38

原始文本预处理

其余初始化内容详见代码注释。

class DocumentSimilarity:

def __init__(self):

#停词字典路径

self.stopword = 'Cstopword.dic'

#原始文档路径,每一行一个文档,文档ID与文档内容以:::间隔

self.DocumentFilePath = 'Document.txt'

#切词结果存放路径

self.CutWordFilePath = 'CutWordNews.txt'

#每个文档选取关键词个数

self.KeyWordsNum = 10

#推荐相似文档个数

self.DocumentSimilarityNum = 6

#切词结果,格式为{文档ID:切词结果,……}

self.CutWordDict = {}

#文档关键词字典,格式为{文档ID:{关键词:TF-IDF值,……},……}

self.DocumentKeywords = {}

#文档词频字典,格式为{文档ID:{切词:词频,……},……}

self.WordsFrequenc


http://chatgpt.dhexx.cn/article/gpBY227h.shtml

相关文章

NLP文本相似度算法LCS

目录 一、什么是LCS子序列最长公共子序列 二、LCS的应用场景三、LCS的查找方法1. 动态规划法计算LCS的长度和两字符串的相似度2. 回溯算法查找LCS 四、代码实现 一、什么是LCS 子序列 子序列:一个序列S任意删除若干个字符得到的新序列T,则T叫做S的子序列 最长公共…

文本相似度算法对比分析,判断内容相似的算法有

有哪些算法用于比较两个字符串的相似程度 终于知道怎么判断字符串相似度了 一直不理解,为什么要计算两个字符串的相似度呢rfid。什么叫做两个字符串的相似度。经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面…

文本相似度算法对比分析,短文本相似度主流算法

如何检查多个word文档内容的相似度 工具/材料:电脑、WORD。第一步,打开电脑进入桌面,打开软件进界面。第二步,打开软件进入后,打开相应的文档。第三步,找到上方菜单栏的审阅点击。第四步,点击后…

文本相似度算法总结

文本匹配算法主要用于搜索引擎,问答系统等,是为了找到与目标文本最相关的文本。例如信息检索可以归结成查询项和文档的匹配,问答系统可以归结为问题和候选答案的匹配,对话系统可以归结为对话和回复的匹配。 一、传统模型 基于字面…

计算文本相似度

 计算文本相似度 推荐 2 收藏 简单讲解 上一章有提到过[基于关键词的空间向量模型]的算法,将用户的喜好以文档描述并转换成向量模型,对商品也是这么处理,然后再通过计算商品文档和用户偏好文档的余弦相似度。 文本相…

计算文本相似度的常用算法

文章目录 1. 余弦相似度2. TF-IDF模型2.1 词频TF的计算方法2.2 反文档频率IDF的计算方法2.3 TF-IDF的计算方法 3. 基于语义相似度的计算 —— DSSM4. LSI/LSA模型5. LDA模型6. 编辑距离计算7. 杰卡德系数计算8. Word2Vec计算9. BM25 NLP、数据挖掘领域中,文本分析是…

LCS、LIS

LCS是最长公共子序列的表示: 题目链接 代码也十分简单就不敲了。 LIS是最长上升子序列的英文缩写。 (动态规划) O(n2)O(n2) 状态表示:f[i]表示从第一个数字开始算,以w[i]结尾的最大的上升序列。(以w[i]结尾的所有上升序列中属性为最大值的…

LCMV相关的算法

写这个程序的时候,我们遵循如下的设计过程: 第一:设计LCMV; 第二:降秩LCMV; 第三:自适应降秩LCMV; 下面我首先给你捋一下整个算法的大致思路: 输入信号: …

SCC算法求强连通分量简单讲解证明及实现

目录 强连通分量SCC算法简介两个概念dfs结束时间转置图 SCC算法伪代码描述SCC算法正确性证明引理1:引理2:SCC证明不错找不漏找 代码实现 强连通分量 连通分量要求任意两点可达,而强连通分量要求任意两点互相可达,即必须存在a->…

最长公共子串LCS (Longest Common Subsequence) 算法

三个方法都有所借鉴,但代码部分是自己试着写出来的,虽然最后的运行结果都是正确的,但此过程中难免会有考虑不周全的地方,如发现代码某些地方有误,欢迎指正。同时有新的想法,也可以提出! 采用顺序结构存储串…

常考的经典算法--最长公共子序列(LCS)与最长公共子串(DP)

《1》最长公共子序列(LCS)与最长公共子串(DP) http://blog.csdn.net/u012102306/article/details/53184446 https://segmentfault.com/a/1190000007963594 http://www.cppblog.com/mysileng/archive/2013/05/14/200265.html 1. 问题描述 子串应该比…

LCS算法学习

LCS的定义 最长公共子序列,即Longest Common Subsequence,LCS。一个序列S任意删除若干个字符得到新序列T,则T叫做S的子序列;两个序列X和Y的公共子序列中,长度最长的那个,定义为X和Y的最长公共子序列。 字符…

算法系列之六:最长公共子序列(LCS)问题(连续子序列)的三种解法

最长公共子序列(LCS)问题有两种方式定义子序列,一种是子序列不要求不连续,一种是子序列必须连续。上一章介绍了用两种算法解决子序列不要求连续的最终公共子序列问题,本章将介绍要求子序列必须是连续的情况下如何用算法…

Hirschberg的LCS算法实现

解决Longest Common Subsequence(LCS)问题最常用的算法是Dyanmic programing,细节可以参考Ch15.4 of Introduction of Algorithm(2ED), MIT press, p 350。这个算法最大的问题是他的空间复杂度是O(m*n)。这样,当两个序列达到上万个节点时,内存…

SLIC算法

基础知识 在介绍SLIC之前,先来介绍以下Lab颜色空间的介绍。 Lab色彩模型是由亮度(L)要素和与有关色彩的a,b要素组成,L的值由0(黑色)到100(白色),a表示从洋红色至绿色的范围(a为负值表示绿色而正值表示品红),b表示从黄色至蓝色的…

动态规划之LCS算法

一、前言 LCS是Longest Common Subsequence的缩写,即最长公共子序列。一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列。 另外还有个分支问题:最长公共子串。子串的字符位置必…

LCS算法的C++实现

这两天忙里偷闲看了July的团队提供的LCS算法视频,真的如视频标题一样,十分钟搞定LCS算法。 感谢July大神,感谢其团队的邹博。 这里附上视频链接:http://www.julyedu.com/video/play?course17 说是十分钟搞定,其实是…

算法学习 - 最长公共子序列(LCS)C++实现

最长公共子序列 最长公共子序列的问题很简单,就是在两个字符串中找到最长的子序列,这里明确两个含义: 子串:表示连续的一串字符 。子序列:表示不连续的一串字符。 所以这里要查找的是不连续的最长子序列, …

SLIC算法介绍

SLIC(simple linear iterativeclustering),即 简单线性迭代聚类 。 💛它是2010年提出的一种思想简单、实现方便的算法,将彩色图像转化为CIELAB颜色空间和XY坐标下的5维特征向量,然后对5维特征向量构造距离度…

LSC算法

1.问题 给定序列 X<x_1,x_2,…,x_m> Y<y_1,y_2,…,y_j> 求X和Y的最长公共子序列(LCS) 2.解析 X<x1,x2,x3,x4…,xi> Y<y1,y2,y3,y4…,yi> 如果Z<z1,z2,z3,z4…,zk>是他们的最长公共子序列 则&#xff1a; &#xff08;1&#xff09;xi yi&…