用python写文本相似度 余弦相似度 代码 input函数 停用词
时间: 2023-06-05 12:05:56 浏览: 198
内容
以下是用 Python 实现文本相似度的代码,使用的是余弦相似度算法,包含使用内置的 input() 函数获取用户输入,以及使用停用词来提高相似度计算的准确性:
```
import string
from collections import Counter
import math
# 将文本转换为词列表,并过滤掉停用词
def get_words(text):
stopwords = {'a', 'an', 'the', 'of', 'in', 'and', 'to', 'from', 'that'}
words = text.lower().split()
words = [word.strip(string.punctuation) for word in words]
words = [word for word in words if word not in stopwords]
return words
# 计算词频向量
def get_vector(words):
return Counter(words)
# 计算余弦相似度
def cosine_similarity(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) / denominator
# 获取用户输入的文本,并计算相似度
def main():
text1 = input('请输入第一个文本:')
text2 = input('请输入第二个文本:')
words1 = get_words(text1)
words2 = get_words(text2)
vector1 = get_vector(words1)
vector2 = get_vector(words2)
similarity = cosine_similarity(vector1, vector2)
print('相似度为:%.2f' % similarity)
if __name__ == '__main__':
main()
```
此程序可以计算两个文本的相似度,可以通过 input() 函数获取用户输入文本,同时使用停用词过滤,提高相似度计算的准确性。
阅读全文