用python写文本相似度 余弦相似度 代码 input函数
时间: 2023-06-05 14:05:54 浏览: 175
Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度).zip
以下是使用 Python 编写文本相似度计算的余弦相似度代码以及 input 函数的使用示例:
```python
import math
def get_word_list(text):
# 将文本拆分成单词列表
return text.lower().split()
def calc_tf(word_list):
# 计算单词的词频
tf_dict = {}
for word in word_list:
tf_dict[word] = tf_dict.get(word, 0) + 1
return tf_dict
def calc_idf(word_list_list, word):
# 计算单词的逆文档频率
count = sum([1 for word_list in word_list_list if word in word_list])
return math.log(len(word_list_list) / count)
def calc_tfidf(tf_dict, idf_dict):
# 计算 TF-IDF
tfidf_dict = {}
sum_squares = 0
for word, tf in tf_dict.items():
tfidf = tf * idf_dict[word]
tfidf_dict[word] = tfidf
sum_squares += tfidf ** 2
magnitude = math.sqrt(sum_squares)
for word in tfidf_dict.keys():
tfidf_dict[word] /= magnitude
return tfidf_dict
def calc_cosine_similarity(tfidf_dict1, tfidf_dict2):
# 计算余弦相似度
dot_product = 0
for word in set(tfidf_dict1.keys()) & set(tfidf_dict2.keys()):
dot_product += tfidf_dict1[word] * tfidf_dict2[word]
return dot_product
def main():
# 获取用户输入的两段文本
text1 = input('请输入第一个文本:')
text2 = input('请输入第二个文本:')
# 计算两段文本的余弦相似度
word_list1 = get_word_list(text1)
word_list2 = get_word_list(text2)
word_list_list = [word_list1, word_list2]
tf_dict1 = calc_tf(word_list1)
tf_dict2 = calc_tf(word_list2)
idf_dict = {word: calc_idf(word_list_list, word) for word in set(word_list1) | set(word_list2)}
tfidf_dict1 = calc_tfidf(tf_dict1, idf_dict)
tfidf_dict2 = calc_tfidf(tf_dict2, idf_dict)
similarity = calc_cosine_similarity(tfidf_dict1, tfidf_dict2)
# 输出结果
print('两段文本的余弦相似度为:%.2f' % similarity)
if __name__ == '__main__':
main()
```
需要注意的是,这个代码示例只是一个简单的实现,实际应用中可能需要考虑更多的复杂情况,例如停用词、文本预处理等。
阅读全文