写了一个用sapcy来判断两个句子结构相似度的代码:
import spacy
# 加载预训练的spaCy模型
nlp = spacy.load("zh_core_web_sm")
# 定义两个句子
sentence1 = "袁杰考试得了第一名"
sentence2 = "袁杰考试得了倒数第一名"
# 对两个句子进行解析
doc1 = nlp(sentence1)
doc2 = nlp(sentence2)
# 获取句子1的依存关系树
tree1 = []
for token in doc1:
tree1.append((token.text, token.dep_, token.head.text))
# 获取句子2的依存关系树
tree2 = []
for token in doc2:
tree2.append((token.text, token.dep_, token.head.text))
# 定义相似度度量方法(这里使用基于图的方法)
def similarity(tree1, tree2):
shared_nodes = set(tree1) & set(tree2)
total_nodes = set(tree1) | set(tree2)
similarity_score = len(shared_nodes) / len(total_nodes)
return similarity_score
# 计算两个句子的相似度得分
similarity_score = similarity(tree1, tree2)
print("句子1的依存关系树:", tree1)
print("句子2的依存关系树:", tree2)
print("两个句子的相似度得分:", similarity_score)
报错:
查了相关文章,发现是python版本问题,我的是python3.9的版本,降级为3.8或者之前的版本就好了。