计算多个文档之间的文本相似程度

首先我们上代码:

from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'UNC played Duke in basketball',
'Duke lost the basketball game',
'I ate a sandwich'
]
vectorizer = CountVectorizer(binary=True,stop_words='english')#设置停用词为英语,这样就会过滤掉
#过滤掉a an the 等不必要的冠词,同时设定英语里的同种词的形式,单复数,过去式等为同样的词语
print(vectorizer.fit_transform(corpus).todense())
print(vectorizer.vocabulary_)

输出:

[[0 1 1 0 0 1 0 1][0 1 1 1 1 0 0 0][1 0 0 0 0 0 1 0]]
{'unc': 7, 'played': 5, 'duke': 2, 'basketball': 1, 'lost': 4, 'game': 3, 'ate': 0, 'sandwich': 6}

 前面三行的矩阵只有0和1两个值,每一个矩阵都有8个0或者1,这里说明了我们的词库当中一共有8个不同的英语词汇,由于之前我们使用了代码:

vectorizer = CountVectorizer(binary=True,stop_words='english')#设置停用词为英语,这样就会过滤掉
#过滤掉a an the 等不必要的冠词,同时设定英语里的同种词的形式,单复数,过去式等为同样的词语

因此我们已经过滤掉了a an tne 这种英语里的冠词,每一个名次的单复数,动词的过去,过去完成时等词,比如说我们的play和played计算机就会默认为是同一个词了,真的神奇。

后面的输出0和1表示了所有词库当中的某一个词是否出现,我们所有的词汇的所对应的数值已经计算出:

{'unc': 7, 'played': 5, 'duke': 2, 'basketball': 1, 'lost': 4, 'game': 3, 'ate': 0, 'sandwich': 6}

 在每一句话当中,出现就记为1,不出现则记为0,这就是上述矩阵的含义了。最后我们通过sklearn库当中的函数来计算这三个句子特征向量的欧式距离,其实就是把我们的矩阵拿来计算,计算的公式如下:

代码如下:

from sklearn.metrics.pairwise import euclidean_distances
counts = vectorizer.fit_transform(corpus).todense()
for x,y in [[0,1],[0,2],[1,2]]:dist = euclidean_distances(counts[x],counts[y])print('文档{}与文档{}的距离{}'.format(x,y,dist))

因此我们有输出:

文档0与文档1的距离[[2.]]
文档0与文档2的距离[[2.44948974]]
文档1与文档2的距离[[2.44948974]]

 说明文档2和文档1、0的相似程度是一样的。

转载于:https://www.cnblogs.com/geeksongs/p/11189136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断操作系统的位数

#include<stdio.h>int main(void) {unsigned int num ~0;if (num 0xffffffff)printf("32");elseif (num 0xffff)printf("16");elseprintf("64");getchar();return 0; } 以上是判断一个操作系统是多少位的代码。 附另一种解法&#xf…

几个ubuntu16.04镜像下载地址

中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开源镜像站 http://mirrors.aliyun.com/ubuntu-releases/16.04/ 兰州大学开源镜像站 http://mirror.lzu.edu.cn/ubuntu-releases/16.04/ 北京理工大学开源 http://mirror.bit.edu.cn/ubuntu-releases…

转】未指定 INSTANCESHAREDWOWDIR 命令行值。如果指定INSTANCESHAREDDIR 值,则必须指定该值 ....

插入光盘后不要用autorun的安装&#xff0c;使用命令行安装&#xff01;cd进安装光盘的根目录&#xff0c;输入命令&#xff1a;setup.exe /INSTALLSHAREDDIR"D://Program Files//Microsoft SQL Server//" /INSTALLSHAREDWOWDIR"D://Program Files (x86)//Micro…

C#使用StreamReader类读取文件文件

输入流用于从外部源读取数据。在很多情况下&#xff0c;数据源是磁盘上的文件或网络的某些位置。任何可以发送数据的位置都可以是数据源&#xff0c;比如网络应用程序、Web服务&#xff0c;甚至是控制台。 用来从文件中读取数据的类是StreamReader。同StreamWriter一样&#xf…

三种不使用中间参数,交换两个参数的值的方法

第一种&#xff1a;要求必须是整数 int i 50&#xff0c;j 60&#xff1b; i i^j; j i^j; i i^j;第二种&#xff1a;可以不是整数类型 i i j; j i - j; i i - j;第三种&#xff1a;很巧妙 i i j - (j i);

双边滤波

双边滤波 高斯滤波是最常用的图像去噪方法之一&#xff0c;它能很好地滤除掉图像中随机出现的高斯噪声&#xff0c;但是在之前的博客中提到过&#xff0c;高斯滤波是一种低通滤波&#xff08;有兴趣的点击这里&#xff0c;查看之前的博客&#xff09;&#xff0c;它在滤除图像中…

java代码做repeat次运算,从键盘输入几个数,比最值

总结&#xff1a;今天这个题目有点灵活&#xff0c;因为它不但要求输出结果&#xff0c;还要进行几次相同的输入&#xff0c;不退出循环 import java.util.Scanner;//从键盘一次输入更多的数&#xff0c;然后把每一次的数进行---可比较&#xff0c;或输出 public class ertyw {…

与C语言有关的面试题目

1. 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN&#xff0c;这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) < (B) …

用SQL语句更改数据库名,表名,列名

参考SQL Server联机丛书的 sp_renamedb与sp_rename一、更改数据库名sp_renamedb更改数据库的名称。语法sp_renamedb [ dbname ] old_name ,[ newname ] new_name 参数[ dbname ] old_name 是数据库的当前名称。old_name 为 sysname 类型&#xff0c;无默认值…

将区块链哈希转化为文字标题?IPSE哈希技术Hashlink解释

前言 在人类历史中&#xff0c;有多次的转化改变了信息文明走向。第一个是人类语言的诞生。将人类从抽象的声音识别交流转化为具体的文字交流。第二个是二进制的广泛使用。二进制是电子信息技术的巨大进步&#xff0c;让机器用0和1就能处理各类信息&#xff0c;二进制成就了今天…

Gabor滤波器原理

一、什么是Gabor函数&#xff08;以下内容含部分翻译自维基百科&#xff09; 在图像处理中&#xff0c;Gabor函数是一个用于边缘提取的线性滤波器。Gabor滤波器的频率和方向表达同人类视觉系统类似。研究发现&#xff0c;Gabor滤波器十分适合纹理表达和分离。在空间域中&#x…

Linux中的MAN命令

学习Linux的同学&#xff0c;都会使用man来查阅一些命令的帮助信息&#xff0c;常见的使用方法就是“man 命令名称”这样简单的格式。本文就对man命令简要介绍一下。 l man命令的章节 man就是manual的缩写&#xff0c;用来查看系统中自带的各种参考手册&#xff0c;但是手册页分…

java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

oracle中procedure是不能有返回值的&#xff0c;要想返回值&#xff0c;就得有输出参数&#xff0c;同样要想返回记录集&#xff0c;可以把游标类型作为输出参数。 下面是详细情况说明&#xff1a; 一&#xff1a;无返回值的存储过程调用 存储过程&#xff1a; create or repl…

jeecms附件标签用法

[#if content.attachments?size gt 0] [#list content.attachments as attach] <a id"attach${attach_index}">附件下载</a> [/#list] [/#if] 转载于:https://www.cnblogs.com/Jeely/p/11195310.html

递归的理解

其实就解决两个问题 1、当前应该怎么做&#xff1b; 2、下一步应该怎么做&#xff1b; 见下面的一个短小的例子&#xff1a;倒着输出刚才输入的整数。 #include<stdio.h>void fun(int);int main(void) {int a 0;printf("value of a \n");scanf("%d&quo…

点云配准

https://www.cnblogs.com/endlesscoding/p/10033527.html https://www.cnblogs.com/yhlx125/p/4955337.html https://blog.csdn.net/qq_41581769/article/details/89460153

支持多并发的单例有哪几种写法

一.什么是单例以及单例的使用场景就不多说了&#xff0c;不清楚的可以看我上篇文章或者自行查找 二.单例和多并发之间的规则 单例就是只能创建一个实例对象&#xff0c;而多并发情况下如果不处理一下单例的写法很难保证只创建一个实例对象&#xff0c;所以后面会出问题 处理的思…

兼容各种浏览器的自动左右滚动兼左右点击滚动代码

直接切入正题 红色表示要统一&#xff08;所有的id&#xff09; 演示地址&#xff1a;http://www.er-china.com/index.php?mcontent&cindex&alists&catid772 本框架为phpcms&#xff0c;大家可根据自己的框架更改循环。 <div class"rollBox"> <…

同步数据库仅在Worker内,目前只有Chrome6支持

Database.html <!DOCTYPE HTML><html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <script> if(window.Worker){ var workernew Worker(worker.js); //向worker发送消息 wo…

全局曝光和卷帘曝光的区别

全局曝光和卷帘曝光是常见的相机曝光方式。一般来说&#xff0c;CCD相机是全局曝光&#xff0c;而CMOS相机则存在卷帘曝光。那么&#xff0c;这两种方式孰优孰劣呢&#xff1f;或者说&#xff0c;他们两者的差别在哪里呢&#xff1f;那么&#xff0c;先从两者的定义说起。 全局…