1
考虑如下几篇文档:
文档1:new home sales top forecasts
文档2:home prices rise in june
文档3:increase in home sales in june
文档4:july new home sales rise
a. 画出文档集对应的词项-文档矩阵。
文档 1 | 文档 2 | 文档 3 | 文档 4 | |
forecasts | 1 | 0 | 0 | 0 |
home | 1 | 1 | 1 | 1 |
in | 0 | 1 | 1 | 0 |
increase | 0 | 0 | 1 | 0 |
july | 0 | 0 | 0 | 1 |
june | 0 | 1 | 1 | 0 |
new | 1 | 0 | 0 | 1 |
prices | 0 | 1 | 0 | 0 |
rise | 0 | 1 | 0 | 1 |
sales | 1 | 0 | 1 | 1 |
top | 1 | 0 | 0 | 0 |
b. 画出该文档集的倒排索引。
c. 给定如下查询,返回的结果是什么?
rise AND new
:rise 对应 0101
,new 对应 1001
,二者按位相与为 0001
,因此查询返回文档4。
sales AND NOT (forecasts OR july)
:sales 对应 1011
,forecasts 对应 1000
,july 对应 0001
,forecasts 与 july 按位相或取反为 0110
,与 sales 按位相与为 0010
,因此查询返回文档3。
2
写出倒排记录表 (777,17743,294068,31251336) 的 VB 编码以及 γ 编码。在可能的情况下对间距而不是文档 ID 编码。请以 8 位二进制串的方式写出这些编码。(γ 编码不考虑对 0 编码问题,仅对原始文档 ID 以及间隔进行编码)
文档 ID | 777 | 17743 | 294068 | 31251336 |
间距 | 16966 | 276325 | 30957268 | |
VB 编码 | 00000110 10001001 | 00000001 00000100 11000110 | 00010000 01101110 11100101 | 00001110 01100001 00111101 11010100 |
γ 编码 | 1111111110,100001001 | 111111111111110,00001001000110 | 1111111111111111110,000011011101100101 | 1111111111111111111111110,110110000101111011010100 |
3
给定以下词
a. 计算查询 “bord” 与图中每个包含 2-gram “or” 的词项之间的 2-gram Jaccard 系数, 并写出计算过程。
Jaccard 系数定义为集合 A A A 与 B B B 的交集大小与 A A A 与 B B B 的并集大小的比值,形式化地:
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ = ∣ A ∩ B ∣ ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ J(A,B) = \frac{|A\cap B|}{|A\cup B|} = \frac{|A\cap B|}{|A| + |B| - |A\cap B|} J(A,B)=∣A∪B∣∣A∩B∣=∣A∣+∣B∣−∣A∩B∣∣A∩B∣
当集合 A A A 和 B B B 都为空时, J ( A , B ) J(A,B) J(A,B) 定义为 1 1 1。
“bord”、“border”、“lord”、“morbid”和“sordid”对应的 2-gram 集合如下:
bord | $b, bo, or, rd, d$ |
border | $b, bo, or, rd, de, er, r$ |
lord | $l, lo, or, rd, d$ |
morbid | $m, mo, or, rb, bi, id, d$ |
sordid | $s, so, or, rd, di, id, d$ |
由此,分别计算“bord”与“border”、“lord”、“morbid”、“sordid”对应 2-gram 集合的 Jaccard 系数:
J
b
o
r
d
&
b
o
r
d
e
r
=
4
5
+
7
−
4
=
1
2
J
b
o
r
d
&
l
o
r
d
=
3
5
+
5
−
3
=
3
7
J
b
o
r
d
&
m
o
r
b
i
d
=
2
5
+
7
−
2
=
1
5
J
b
o
r
d
&
s
o
r
d
i
d
=
3
5
+
7
−
3
=
1
3
\begin{align} J_{\rm bord\; \& \; border} &= \frac{4}{5+7-4}=\frac{1}{2} \notag\\ J_{\rm bord\; \& \; lord} &=\frac{3}{5+5-3}=\frac{3}{7} \notag\\ J_{\rm bord\; \& \; morbid} &=\frac{2}{5+7-2}=\frac{1}{5}\notag\\ J_{\rm bord\; \& \; sordid} &=\frac{3}{5+7-3}=\frac{1}{3}\notag\\ \end{align}
Jbord&borderJbord&lordJbord&morbidJbord&sordid=5+7−44=21=5+5−33=73=5+7−22=51=5+7−33=31
标准答案:
b. 思考计算 k-gram(k>2)时,如何添加首尾标志符?(给出思路即可,不需要计算)
计算 k-gram 时会在序列前、后分别添加首、尾特殊标记,总共 k − 1 k-1 k−1 对首尾标记。以 “bord” 的 3-gram 为例,添加特殊标记后变为“<S1><S2>bord</S2></S1>”,所以对应的 3-gram 集合为 {<S1><S2>b, <S2>bo, bor, ord, rd</S2>, d</S2></S1>},其中 <S1></S1> 和 <S2></S2> 为两对首尾特殊标记。
标准答案:
4
考虑表 1 中的 3 篇文档 Doc1、Doc2、Doc3 中几个词项的 tf 情况,表 2 为词项在所有文档中的 idf 值。
表 1 tf 值
表 2 idf 值
a. 计算所有词项 car、auto、insurance、best 的 tf-idf 值。
b. 试计算采用欧氏归一化方式处理后的文档向量,其中每个向量有 4 维,每维对应一个词项。
c. 对于查询 car insurance 计算 3 篇文档的得分并进行排序。查询词项的权重计算采用:查询中出现的词项权重为 1,否则为 0。
查询向量为
Query | |
car | 1 |
auto | 0 |
insurance | 1 |
best | 0 |