1.词袋模型(BOW)
词袋模型(Bag of Words, BOW)是一种通过词频将句子转化为向量表示的方法,不考虑句子的顺序,只考虑词表中单词在这个句子中出现的次数。
例句:
Jack lives in Shanghai.
Bob wants to go to Shanghai.
对于这两个句子中出现的单词,使用词袋模型形成词表:
['bob', 'go', 'in', 'jack', 'lives', 'shanghai', 'to', 'wants'] |
因此,这两个句子的向量表示为
s1=[0, 0, 1, 1, 1, 1, 0, 0] s2=[1, 1, 0, 0, 0, 1, 2, 1] |
可使用sklearn中的CountVectorizer()函数实现BOW模型
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
"Jack lives in Shanghai.",
"Bob wants to go to Shanghai."
]
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
print(X.toarray())
# 输出
['bob', 'go', 'in', 'jack', 'lives', 'shanghai', 'to', 'wants']
[[0 0 1 1 1 1 0 0]
[1 1 0 0 0 1 2 1]]
2.N-gram
假设我们有一个由n个词组成的句子 S = ( w 1 , w 2 , ⋯ , w n ) S=(w_1,w_2,⋯,w_n) S=(w1,w2,⋯,wn),如何衡量它的概率呢?让我们假设,每一个单词 w i w_i wi都要依赖于从第一个单词 w 1 w_1 w1到它之前一个单词 w i − 1 w_{i−1} w