句子相似度_tf/idf
import math
from math import isnan
import pandas as pd
#结巴分词,切开之后,有分隔符
def jieba_function(sent):
import jieba
sent1 = jieba.cut(sent)
s = []
for each in sent1:
s.append(each)
return ' '.join(str(i) for i in s)
def count_cos_similarity(vec_1, vec_2):
if len(vec_1) != len(vec_2):
return 0 s = sum(vec_1[i] * vec_2[i] for i in range(len(vec_2)))
den1 = math.sqrt(sum([pow(number, 2) for number in vec_1]))
den2 = math.sqrt(sum([pow(number, 2) for number in vec_2]))
return s / (den1 * den2)
#计算文本向量,传入文本,接受的是字符串
def tf(sent1, sent2):
from sklearn.feature_extraction.text import CountVectorizer sent1 = jieba_function(sent1)
sent2 = jieba_function(sent2) count_vec = CountVectorizer() sentences = [sent1, sent2]
print('sentences',sentences)
print('vector',count_vec.fit_transform(sentences).toarray())## 输出特征向量化后的表示
print('cut_word',count_vec.get_feature_names())#输出的是切分的词, 输出向量各个维度的特征含义 #转换成维度相同的
vec_1 = count_vec.fit_transform(sentences).toarray()[0]
vec_2 = count_vec.fit_transform(sentences).toarray()[1]
similarity=count_cos_similarity(vec_1, vec_2)
if isnan(similarity):
similarity=0.0 print('count_cos_similarity',similarity)
def tfidf(sent1, sent2):
from sklearn.feature_extraction.text import TfidfVectorizer sent1 = jieba_function(sent1)
sent2 = jieba_function(sent2) tfidf_vec = TfidfVectorizer() sentences = [sent1, sent2]
vec_1 = tfidf_vec.fit_transform(sentences).toarray()[0]
vec_2 = tfidf_vec.fit_transform(sentences).toarray()[1]
similarity=count_cos_similarity(vec_1, vec_2)
if isnan(similarity):
similarity=0.0
return similarity if __name__=='__main__': sent1 = '我喜欢看电视也喜欢看电影,'
sent2 = '我不喜欢看电视也不喜欢看电影'
print('<<<<tf<<<<<<<')
tf(sent1, sent2)
print('<<<<tfidf<<<<<<<')
tfidf(sent1, sent2)
句子相似度_tf/idf的更多相关文章
- 使用 TF-IDF 加权的空间向量模型实现句子相似度计算
		使用 TF-IDF 加权的空间向量模型实现句子相似度计算 字符匹配层次计算句子相似度 计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算 ... 
- NLP入门(一)词袋模型及句子相似度
		本文作为笔者NLP入门系列文章第一篇,以后我们就要步入NLP时代. 本文将会介绍NLP中常见的词袋模型(Bag of Words)以及如何利用词袋模型来计算句子间的相似度(余弦相似度,cosi ... 
- [LeetCode] 737. Sentence Similarity II 句子相似度 II
		Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ... 
- [LeetCode] 734. Sentence Similarity 句子相似度
		Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ... 
- LSTM 句子相似度分析
		使用句子中出现单词的Vector加权平均进行文本相似度分析虽然简单,但也有比较明显的缺点:没有考虑词序且词向量区别不明确.如下面两个句子: "北京的首都是中国"与"中国的 ... 
- [LeetCode] Sentence Similarity 句子相似度
		Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ... 
- Wordvec_句子相似度
		import jiebafrom jieba import analyseimport numpyimport gensimimport codecsimport pandas as pdimport ... 
- [LeetCode] Sentence Similarity II 句子相似度之二
		Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ... 
- [LeetCode] 737. Sentence Similarity II 句子相似度之二
		Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ... 
随机推荐
- 虚拟机 安装 CentOS7
			初次接触CentOS,最好是在虚拟机中安装: 因为CentOS的安装选项有很多,不理解的情况下千万不要在物理机上尝试: 不然可能出现这种情况:安装好以后,只有黑色的屏幕,只能在里面敲命令:这对于新手来 ... 
- Mybatis批量更新和插入
			<update id="updateOrInsert"> <foreach collection="list" index="ind ... 
- cacti有图无数据解决办法
			Cacti 安装不久,图像界面出来了,但是一直没有数据. Cacti 日志中的错误或警告也都一个个全部解决.有些需要访问文件的权限也都有了. 1.system utilities –>Rebui ... 
- MySQL实现中文拼音排序
			MySQL下新建一个表,默认采用utf8字符集,中文不能直接按照拼音进行排序. 例如以下语句: SELECT * FROM `tb_fixedassets` order by C_FANAME 得到的 ... 
- Eclipse kepler 安装 Dynamic Web Project差距WTP
			原文地址:http://blog.csdn.net/westrain2010/article/details/25122999, 欢迎转载 Eclipse 标准版是不能创建 Dynamic Web P ... 
- linux启动jmeter(二十三),执行./jmeter.sh报错解决方法(转载)
			转载自 http://www.cnblogs.com/yangxia-test 1.l-bash: ./jmeter.sh: Permission denied解决办法:jmeter.sh的执行权限改 ... 
- 今天设置apache二级域名ssl证书后出现问题
			用集成环境 phpwamp重启服务失败,但是重启电脑后apache就启动成功,也不知道哪里原因,待以后解决. 
- 约束布局 ConstraintLayout
			app:layout_constraintVertical_bias="0.5"app:layout_constraintHorizontal_bias="0.5&quo ... 
- 游戏行业的女性拥有强大的新盟友:Facebook
			据外媒 TheNextWeb 报道,Facebook 本周宣布其新的游戏行业女性倡议,致力于鼓励更多的女性加入游戏行业.这家社交媒体公司专注于提供榜样和成功故事,而这实际上是一种令人愉快的方式.虽然游 ... 
- Cisco VSS
			1.原理 VSS是将两台及以上的物理设备虚拟成逻辑上的一台,可类比堆叠.VSS在控制层面上两个交换机有主从之分,但在数据面上处理是双活的.无论是从网络控制层面和管理视图上在网络上都是一个单独的设备实体 ... 
