栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-给定2个句子字符串,计算余弦相似度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-给定2个句子字符串,计算余弦相似度

一个简单的纯Python实现是:

import re, mathfrom collections import CounterWORD = re.compile(r'w+')def get_cosine(vec1, vec2):     intersection = set(vec1.keys()) & set(vec2.keys())     numerator = sum([vec1[x] * vec2[x] for x in intersection])     sum1 = sum([vec1[x]**2 for x in vec1.keys()])     sum2 = sum([vec2[x]**2 for x in vec2.keys()])     denominator = math.sqrt(sum1) * math.sqrt(sum2)     if not denominator:        return 0.0     else:        return float(numerator) / denominatordef text_to_vector(text):     words = WORD.findall(text)     return Counter(words)text1 = 'This is a foo bar sentence .'text2 = 'This sentence is similar to a foo bar sentence .'vector1 = text_to_vector(text1)vector2 = text_to_vector(text2)cosine = get_cosine(vector1, vector2)print 'Cosine:', cosine

印刷品:

Cosine: 0.861640436855

这里所用的余弦公式描述这里。

这不包括通过

tf-idf
对单词进行加权,但是为了使用
tf-idf
,你需要具有一个相当大的语料库才能从中估计
tfidf
的权重。

你还可以通过使用更复杂的方法从一段文本中提取单词,对其进行词干或词义化等来进一步开发它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号