利用sklearn计算文本相似性

利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中。这里提取文本TF-IDF特征值进行文本的相似性计算。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import numpy
import os
import sys
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
reload(sys)
#sys.setdefaultencoding(‘utf8‘)了 网易 杭研 大厦","小明 硕士 毕业 与 中国 科学院","我 爱 北京 天安门"]
trainfile = open("C:\\Users\\hd\\Desktop\\docs.txt","r") #不同的documents用换行符隔开
traincorpus = trainfile.readlines()

#corpus=["我 来到 北京 清华大学","我 他 来到
trainfile.close()
corpus = traincorpus;

vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
tfidf_vectorizer = TfidfVectorizer(max_df=0.95, min_df=2, #max_features=n_features,
                                   stop_words=‘english‘)
transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值
tfidf=transformer.fit_transform(tfidf_vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
word=tfidf_vectorizer.get_feature_names()#获取词袋模型中的所有词语
weight=tfidf.toarray()#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
f = open("C:\\Users\\hd\\Desktop\\tif.txt","w+")
for i in range(len(weight)):#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
#         print u"-------这里输出第",i,u"类文本的词语tf-idf权重------"
    f.write(str(i+1)+"\t")
    for j in range(len(word)):
        if(weight[i][j]>0): f.write(str(j+1) + ":" + str(weight[i][j]) + " ")
    f.write("\n")
    print i
f.close()
f = open("C:\\Users\\hd\\Desktop\\dictionary.txt","w+")
for i in range(len(word)):
    f.write(str(i) + "\t" + word[i].encode("utf-8") + "\n")
f.close()

SimMatrix = (tfidf * tfidf.T).A
print SimMatrix[1,3] #"第一篇与第4篇的相似度"

numpy.savetxt("C:\\Users\\hd\\Desktop\\SimMatrix.csv", SimMatrix, delimiter=",") #保存相似度矩阵

  

时间: 2024-12-23 14:13:44

利用sklearn计算文本相似性的相关文章

利用余弦定理计算文本的相似度

#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import division import jieba.analyse from math import sqrt class Similarity(): def __init__(self, target1, target2, topK=10): self.target1 = target1 self.target2 = target2 self.topK = topK

文本相似性计算

文本相似性计算三个阶段: 1. 字面的匹配相似 2. 词汇的匹配相似 3. 语义的匹配相似 一.JaccardSimilarity方法 对文本进行分词,然后对每一个单词分配一个唯一的ID(token),为了计算文本之间的相似性.JaccardSimilarity方法的计算方法是: 两个集合的交集/两个集合的并集二.文本的向量化 文本->向量化为向量->向量空间中的某一个点->求两个点(即两个文本)之间的距离->得到文档的相似性 2.1 简单的向量化 为每一个词语分配一个唯一的ID,

利用LDA进行文本聚类(hadoop, mahout)

项目原理概述 利用sqoop将数据从MySQL导入到HDFS中,利用mahout的LDA的cvb实现对输入数据进行聚类,并将结果更新到数据库中.数据流向图如下 mahout算法分析 输入数据格式为<IntegerWritable, VectorWritable>的matrix矩阵,key为待聚类文本的数字编号,value为待聚类文本的单词向量Vector, Vector的index为单词在字典中的编号, value为TFIDF值. 算法相关参数详解(不包含hadoop运行参数)项目中所有参数设

jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现

jQuery计算文本宽度的原理是利用html提供的<pre>标签,向dom中动态添加<pre>标签,标签里的内容就是要测试长度的文本,获取完长度之后再删除刚才添加的<pre>标签,从而可取到文本的大概长度了.为什么要用标签而不用其他标签呢,那来看看<pre>标签的特性吧:pre 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符;而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.需要注

向量空间模型(VSM)计算文本相似度

1.定义 向量空间模型是一个把文本表示为标引项(Index Term)向量的代数模型,原型系统SMART*. 向量空间模型的定义很简单,文档d,查询q都用向量来表示. 查询和文档都可转化成term及其权重组成的向量表示,都可以看成空间中的点.向量之间通过距离计算得到查询和每个文档的相似度. 我们在向量空间模型中假设term是相互独立互不影响的. 2.模型构建 VSM向量空间模型构建的关键在于三点: 1.标引项term的选择 2.权重计算(Term Weighting):即计算每篇文档中每个ter

计算文本所占区域(字符串宽度,高度)

CRect GetTextRect(IN CDC* pDC,IN LPCTSTR lpText) { CRect rcText; //计算文本所占区域 pDC->DrawText(lpText,-1,&rcText,DT_CALCRECT); return rcText; }

利用MATLAB计算三维坐标序列距离误差程序

1.三维坐标储存在文件中,格式如下: 各坐标间的距离真值是一定值,计算相邻距离的标准差. 2.MATLAB程序如下: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 名称:caculateAccuracy.m % 功能:读取三维世界坐标,计算精度 % 作者:LYC % 单位:中科院苏州医工所 % 日期:2014.5.5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

IOS开发计算文本尺寸

在IOS开发中例如微博,QQ聊天界面中要显示大量的文字信息,这样需要计算出文字部分的尺寸,才能设计出合适的控件尺寸和位置.下面是IOS 7.0计算文本尺寸的方法.- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AV

计算文本宽高

// 计算文字的宽高 NSDictionary *attributesDic = @{NSFontAttributeName: self.labelView.font}; CGRect textRect = [text boundingRectWithSize:CGSizeMake(200, 100) options:NSStringDrawingUsesLineFragmentOriginattributes:attributesDic context:nil]; 计算文本宽高