Page 139 - 高中 信息技术 必修1 数据与计算
P. 139
6.1 认识人工智能
进入问题理解模块。FAQ库主要用于提高智能问答系统的效率,其主要技术就是问句相似
度计算和候选问句的选择。
问句相似度计算通常采用Jaccard相似度系数算法。Jaccard相似度系数表示两集合的交
集元素个数与两集合的并集元素个数之比,系数越高,两集合的相似度越高。例如,计算
问句A“空调机有什么功能?”与问句B“空调机的功能有哪些?”的Jaccard相似度系数
流程如下:
(1)运用分词系统处理问句。处理后得到集合A={“空调机”,“有”,“什么”,“功
能”,“?”}和集合B={“空调机”,“的”,“功能”,“有”,“哪些”,“?”}。
(2)计算集合A和集合B的交集与并集。集合A和集合B的交集={“空调机”,“有”,“功
能”,“?”},集合A和集合B的并集={“空调机”,“有”,“什么”,“功能”,“的”,“哪
广东教育出版社
些”,“?”}。
(3)计算交集元素的数量和并集元素的数量的比值。交集元素的数量为4,并集元素
的数量为7,交集元素的数量和并集元素的数量的比值为4÷7≈0.57。因此,将0.57作为问
句A和问句B的相似度系数。
实 践
基于上述的流程,可以用 Python 语言编程实现 Jaccard 相似度系数算法,程序如下:
# -*- coding:utf-8 -*-
# 计算jaccard系数
def jaccard(p,q):
c=[val for val in p if val in q] #求p和q的交集
return float(len(c)/(len(p)+len(q)-len(c)))
# 注意:在使用之前必须对两个数据集去重
a=["空调机","有","什么","功能","?"]
b=["空调机","的","功能","有","哪些","?"]
print(jaccard(a,b))
程序结果:0.5714285714285714。
分 析
计算下列两个语句的Jaccard相似度系数,并利用Python语言编程求出Jaccard相似度
系数。
A:我爱祖国的壮丽山河;我爱祖国悠久的历史和璀璨的文化。
B:我爱祖国人民的勤劳、智慧与勇敢;我更爱祖国那生生不息、辉煌雄壮的民族魂!
131131
9 ֻੂᅣ JOEE