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 摘要:关于查重系统很多人并不陌生,无论本科还是硕博毕业都不可避免涉及论文查重问题,这也对学术不正之风起 ...
随机推荐
- centos6安装nginx
1.获取官方的仓库地址 我们需要先访问nginx的官方网站,获取官方的仓库地址https://nginx.org/en/linux_packages.html#stable 新建/etc/yum.re ...
- 数据持久化PlayerPrefs
1.Unity3D中的数据持久化是以键值对的形式存储的,可以看作是一个字典 2.Unity3D中的值是通过键名来读取的,当值不存在时,返回默认值 3.在Unity中只支持int.float.strin ...
- python学习 day19 configparser模块 os模块 subprocess模块
上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...
- CentOS SELinux服务关闭与开启
查看SElinux是否开启 查看是否开启SELinux,如果是未开启则是diabled,enforcing(enforce的分词,正在执行的意思),表明开启 #getenforce 临时关闭S ...
- JTAG-测试数据寄存器
1.问题:JTAG中的数据寄存器的结构 JTAG标准规定了两个必须的数据寄存器: 1.旁通寄存器 2.边界扫描寄存器(已经在可测性设计-扫描通路中介绍了) 可选的的寄存器有: 1.器件标示寄存器(32 ...
- python网络爬虫《http和https协议》
一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...
- websocket搭建错误
用一下版本: gevent == 1.2.2 Eel == 0.9.7 gevent-websocket == 0.10.1 greenlet == 0.4.13 PyInstaller == 3.3 ...
- WIN7,安装所以软件都提示error writing temporary file
执行: icacls C:\Users\Administrator\Desktop /setintegritylevel H
- 项目总结14:Windows远程连接redis(cmd指令或PowerShell指令)
1-确认远程的redis服务器是否允许被远程连接,已redis server安装在阿里云ECS上为例 1-1-确认在阿里云控制台,开放了端口6379和允许访问的IP 1-2-确认在服务器上安装redi ...
- easyui datagrid 表格不让选中(双层嵌套)
代码: function local(role,region,ip){ $("#roleList").datagrid({ // title:'服务器监控列表', height:( ...