布尔模型(Boolean Model)
要从文档集合D={d1,d2,…,dn}中检索出: 包含"北京妹纸",或者"杭州妹纸, "但不包括"日本妹纸"的文档。
假设D = {“北京的妹纸豪爽”,“北京是中国首都,而东京不是日本首都,一个妹纸说”,“北京和杭州都是旅游名城”,“杭州的妹纸温婉”}
将查询语句表示为布尔表达式:Q = 妹纸 AND (北京 OR 杭州) NOT 日本
将布尔表达式Q转换为向量表达:
①(1,1,0,0) 即:包含"妹纸"和"北京",且没包含"杭州"和"日本"的语句
②(1,0,1,0) 即:包含"妹纸"和"杭州",且没包含"北京"和"日本"的语句
③(1,1,1,0) 即:包含"妹纸",“北京"和"杭州”,且没包含"日本"的语句
文档集合D中的文档四元组对应的向量值如果包含于上述①②③向量中的任何一个,就可认为他们之间是相似关系,且sim(Q,D)只能为0或1。
将文档集合D解析为向量表达:
d1的向量解析为:(1,1,0,0)
d2的向量解析为:(1,1,0,1)
d3的向量解析为:(0,1,1,0)
d4的向量解析为:(1,0,1,0)
综上可得:d1与向量①相同,d4和③相同,所以查询召回文档d1和d4
布尔模型缺点
- 布尔模型没有考虑索引词和文档中词的权重
- 布尔模型是命中模型,不涉及对召回结果的排序
- 布尔模型是完全匹配,不支持部分匹配,会导致太多或太少的结果被召回
向量空间模型(Vector Space Model)
VSM是把对文本转换为空间向量, 通过向量的计算来处理文本内容
- 把文本内容转换为空间向量 (一般使用词的tf-idf值作为向量来表征文本内容)
- 计算向量之间的相似度来度量文档间的相似性 (常用余弦值来度量相似性)
计算VSM的步骤
要从文档中找出与查询语句最相关的文档
查询语句:Query={q1,q2,…,qn}
文档:
Document1 = {term11,term12,…,term1N},
Document2 = {term21,term22,…,term2N},
Document3 = {term31,term32,…,term3N}
计算每个文档中所有词的TF-IDF值作为文档的向量表达:
Vector1 ={weight11, weight12,…,weight1N},
Vector2 ={weight21, weight22,…,weight2N},
Vector3 ={weight31, weight32,…,weight3N}
把查询语句Query当作一个文档并计算其中所有词的TF-IDF值作为向量表达:
VectorQ = {weightq1, weightq2, …… , weightqN}
分别计算Query与Document1、Document2、Document3的夹角余弦值sim(Q,D1)、sim(Q,D2)、sim(Q,D3作为相关性的打分,两个向量之间的夹角越小,余弦值就越大,打分就越高,相关也就性越大。
最终根据sim(Q,D)的大小进行召回、排序
计算VSM的公式
sim(Q,D) = cosθ = V e c t o r Q ⋅ V e c t o r D ∣ V e c t o r Q ∣ ∣ V e c t o r D ∣ \frac{VectorQ·VectorD}{|VectorQ||VectorD|} ∣Vector