N-GRAM介绍:
N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。(隐马尔科夫当中的假设。)整个句子出现的概率就等于各个词出现的概率乘积。各个词的概率可以通过语料中统计计算得到。
假设句子T是有词序列w1,w2,w3,…wn组成,用公式表示N-Gram语言模型如下:
P
(
T
)
=
P
(
w
1
)
∗
P
(
w
2
∣
w
1
)
∗
p
(
w
3
∣
w
1
w
2
)
∗
p
(
w
n
∣
w
1
w
2
w
3...
)
P(T) = P(w1)*P(w2|w1)*p(w3|w1w2)*p(wn|w1w2w3...)
P(T)=P(w1)∗P(w2∣w1)∗p(w3∣w1w2)∗p(wn∣w1w2w3...)
p(w2|w1):w2出现的概率是在w1出现的条件概率的基础上出现;
n取多少合适?
一般常用的N-Gram模型是Bi-gram和Tri-Gram,分别由公式表示如下:
注意上面概率的计算方法,
P
(
w
1
∣
b
e
g
i
n
)
=
以
w
1
为
开
头
的
所
有
句
子
/
句
子
总
数
;
P
(
w
2
∣
w
1
)
=
w
1
,
w
2
同
时
出
现
的
次
数
/
w
1
出
现
的
次
数
,
以
此
类
推
P(w1|begin)=以w1为开头的所有句子/句子总数;P(w2|w1)=w1,w2同时出现的次数/w1出现的次数,以此类推
P(w1∣begin)=以w1为开头的所有句子/句子总数;P(w2∣w1)=w1,w2同时出现的次数/w1出现的次数,以此类推
一个经典的二元语言模型(Bi-gram)的例子:
N-gram可以用来预计或评估一个句子是否合理;
对中文词性标注,中文分词有很好的效果;NNLM,CBOW
TF-IDF算法介绍
TF-IDF用于评估字词对于一个文件集其中一份文件的重要程度,字词的重要性随着它在文件中出现的次数成正比增加,随着它在语料库中出现的频率而下降。
词频(TF)词语在文件中出现的次数,一般进行归一化,防止长文件数字过大;
逆向文件频率(IDF)是一个词语普遍重要性的度量,总文件数(语料库中有多少份文件)除以包含该词语文件数,再将得到的商取对数。
结论: 在某特定文件内的高频率词语,但是在该词语在整个文件集合中在较少文件中出现,则TF-IDF值较高。
公式:
TF/IDF是两个不同度量标准的的融合
T
F
/
I
D
F
=
T
F
i
j
∗
I
D
F
i
TF/IDF = TF_ij * IDF_i
TF/IDF=TFij∗IDFi
T
F
i
,
j
=
n
i
,
j
∑
k
n
k
,
j
,
n
i
,
j
TF_{i,j} = \frac {n_{i,j}} {\sum_{k}n_{k,j}},n_{i,j}
TFi,j=∑knk,jni,j,ni,j表示某词在文件中出现的次数,分母是文件中字数的总和。
I
D
F
i
=
l
o
g
∣
D
∣
∣
j
:
t
i
∈
d
j
+
1
∣
IDF_i=log{\frac {|D|}{|{j:t_i \in d_j}+1|}}
IDFi=log∣j:ti∈dj+1∣∣D∣ ,其中|D|表示语料库文件总数
|{$ j: t_i \in d_j$}| 包含某词文件总数
加的效果和乘的效果有什么区别呢?
加的效果是,如果两个融合的模型有一个效果很好,其效果就会非常高。而乘起来后,只要有一个低,整体的效果就会低。
应用举例
- 关键词提取
- 句子相似度计算
- 其他算法的前置算法
TF-IDF文章相似度计算流程:
- 使用TF-IDF算法,分别找出两篇文章的关键词;
- 分别取每篇文章TF/IDF值top15的词,合并为一个集合,计算该集合下,每篇文章关键词的相对词频;
- 分别生成两篇文章的词频向量;
- 计算两个向量的余弦相似度,值越大就表示越相似