word2vec_文本相似度
#提取关键词
#关键词向量化
#相似度计算 from jieba import analyse
import numpy
import gensim # 实现给出任意字符串,获取字符串中某字符的位置以及出现的总次数
def get_char_pos(string,char):
chPos=[]
try:
chPos=list(((pos,char) for pos,val in enumerate(string) if(val == char)))
except:
pass
return chPos
#提取关键词
def keyword_extract(data,filename):
tfidf=analyse.extract_tags
keywords=tfidf(data)
return keywords
#将文档的每句话进行关键词提取,并将结果保存在txt文件中
def getKeywords(docpath,savepath):
with open(docpath,'r',encoding='utf-8') as docf,open(savepath,'w',encoding='utf-8') as outf:
for data in docf:#每句话
data=data[:len(data)-1]
keywords=keyword_extract(data,savepath)
for word in keywords:
outf.write(word+'/')
outf.write('\n ')
#利用训练好的词向量获取关键词的词向量
import codecs
def word2vec(file_name,model): DataFile = codecs.open(file_name, "r",encoding='utf-8')
DataSet = DataFile.readlines()[:-1] wordvec_size =100
word_vec_all = numpy.zeros(wordvec_size) for data in DataSet:# space_pos=get_char_pos(data,'/')
first_word=data[0:space_pos[0][0]]
if first_word in model: word_vec_all=word_vec_all+model[first_word] for i in range(len(space_pos)-2):
word=data[space_pos[i][0]:space_pos[i+1][0]] try:
c=model[word] except KeyError:
c=0
word_vec_all=word_vec_all+c return word_vec_all
#词向量相似度计算代码:余弦
def simlarityCalu(vector1,vector2):
vector1Mod=numpy.sqrt(vector1.dot(vector1))
vector2Mod=numpy.sqrt(vector2.dot(vector2))
if vector2Mod!=0 and vector1Mod!=0:
simlarity=(vector1.dot(vector2))/(vector1Mod*vector2Mod)
else:
simlarity=0
return simlarity if __name__=='__main__':
#下载模型
model=gensim.models.Word2Vec.load('zhiwiki_news.word2vec')
p1='P1.txt'
p2='P2.txt'
p1_keywords='P1_keyword.txt'
p2_keywords = 'P2_keyword.txt'
#获取关键词
getKeywords(p1,p1_keywords)
getKeywords(p2,p2_keywords)
p1_vec=word2vec(p1_keywords,model)
p2_vec=word2vec(p2_keywords,model)
#计算相似度
print(simlarityCalu(p1_vec,p2_vec))
word2vec_文本相似度的更多相关文章
- NLP点滴——文本相似度
[TOC] 前言 在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性.而有了文本之间相似性的度 ...
- TF-IDF 文本相似度分析
前阵子做了一些IT opreation analysis的research,从产线上取了一些J2EE server运行状态的数据(CPU,Menory...),打算通过训练JVM的数据来建立分类模型, ...
- 文本相似度算法——空间向量模型的余弦算法和TF-IDF
1.信息检索中的重要发明TF-IDF TF-IDF是一种统计方法,TF-IDF的主要思想是,如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分 ...
- 【机器学习】使用gensim 的 doc2vec 实现文本相似度检测
环境 Python3, gensim,jieba,numpy ,pandas 原理:文章转成向量,然后在计算两个向量的余弦值. Gensim gensim是一个python的自然语言处理库,能够将文档 ...
- 文本离散表示(三):TF-IDF结合n-gram进行关键词提取和文本相似度分析
这是文本离散表示的第二篇实战文章,要做的是运用TF-IDF算法结合n-gram,求几篇文档的TF-IDF矩阵,然后提取出各篇文档的关键词,并计算各篇文档之间的余弦距离,分析其相似度. TF-IDF与n ...
- 从0到1,了解NLP中的文本相似度
本文由云+社区发表 作者:netkiddy 导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是, ...
- C# 比较两文本相似度
这个比较文本用到的主要是余弦定理比较文本相似度,具体原理右转某度,主要适用场景是在考试系统中的简答题概述,可根据权重自动打分,感觉实用性蛮广的. 先说下思路: 文本分词,中文于英文不同,规范的英文每个 ...
- NLP文本相似度
NLP文本相似度 相似度 相似度度量:计算个体间相似程度 相似度值越小,距离越大,相似度值越大,距离越小 最常用--余弦相似度: 一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小 余 ...
- 【NLP】Python实例:基于文本相似度对申报项目进行查重设计
Python实例:申报项目查重系统设计与实现 作者:白宁超 2017年5月18日17:51:37 摘要:关于查重系统很多人并不陌生,无论本科还是硕博毕业都不可避免涉及论文查重问题,这也对学术不正之风起 ...
随机推荐
- Node KeyNote
[Node KeyNote] 1.实际上,.node文件在windows下它是一个.dll文件,在*nix下则是一个.so文件. 2.默认变量 function(exports, require, m ...
- cacti报ERROR: unknown option '--border' 解决方法
cacti制图报下面提示 if (isset($rrdborder) && $rrdversion >= 1.4) { $graph_opts .= "--border ...
- CSS中的通用字体
往往设计师在设计时一厢情愿地去思考问题,那样会带来很多潜在的麻烦.事实上你可以为网页设计任意字体,包括艺术字体.也许你的计算机中已经安装了很多字体,但是不能够保证所有的浏览者都已经安装了相同的字体,因 ...
- with as 如何工作
with as 如何工作 with如何工作? Python对with的处理还是很机智滴.基本思想就是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法 紧跟wi ...
- Docker 网络不通的解决方法
表现是: docker主机内部网络正常,与其它主机的连接失效,其它主机不能连接docker主机上映射的端口,docker内部也无法连接外部主机. 执行docker info,可以看到一些警告. 可在不 ...
- SRVE0255E: 尚未定义要处理 ***的 Web 组/虚拟主机。
原因: 访问的端口未设置,因此无法访问 解决办法: 1.设置端口 控制台-环境-虚拟主机-default_host-主机别名-新建 主机名根据实际情况填写 笔者这里填如下 2.设置好端口后重启对应服务 ...
- JavaScript各种继承方式(二):借用构造函数继承(constructor stealing)
一 原理 在子类的构造函数中,通过call ( ) 或 apply ( ) 的形式,调用父类的构造函数来实现继承. function Fruit(name){ this.name = name; th ...
- Xcode调试与其他
在项目中设置main接收的参数,模拟终端输入 Product->Scheme->Edit Scheme->Run->Arguments 例: 相当于在终端执行命令:./ac-t ...
- Java后端工程师的学习技术栈
https://loveincode.cnblogs.com/
- 利用Java创建Windows服务
1.Java测试代码 import org.apache.log4j.Logger; public class Test { private static Logger logger = Logger ...