NLP学习(3) 文本表示

词袋模型文本表示

设词典是 [我们, 又, 去, 爬山, 今天, 你们, 昨天, 跑步]

one-hot 单词表示

表示单词 “我们” [1,0,0,0,0,0,0,0]

boolean-based 句子表示

表示句子 “我们 今天 去 爬山” [1,0,1,1,1,0,0,0]

count-based 句子表示

表示句子 “我们去爬山又去跑步” [1, 1, 2, 1, 0, 0, 0, 1]

句子相似度

欧氏距离

d = ( x − y ) 2 d=\sqrt{(\bold{x}-\bold{y})^2} d=(xy)2

余弦相似度

d = x ⋅ y ∣ x ∣ ⋅ ∣ y ∣ d=\frac{\bold{x}\cdot \bold{y}}{|\bold{x}|\cdot |\bold{y}|} d=xyxy, x ⋅ y = ∣ x ∣ ⋅ ∣ y ∣ cos ⁡ θ \bold{x}\cdot \bold{y}=|\bold{x}|\cdot |\bold{y}|\cos \theta xy=xycosθ, 所以 d d d就是夹角的余弦值

TF-IDF 文本(句子)表示

TF-IDF ( w ) = tf ( d , w ) × idf ( w ) \text{TF-IDF}(w)=\text{tf}(\bold{d},w)\times \text{idf}(w) TF-IDF(w)=tf(d,w)×idf(w)

文档 d \bold{d} d w w w的词频 tf ( d , w ) = # w \text{tf}(\bold{d}, w)={\#w} tf(d,w)=#w

逆文档频率 idf ( w ) = log ⁡ N N ( w ) \text{idf}(w)=\log{N \over N(w)} idf(w)=logN(w)N, N N N是文档个数, N ( w ) N(w) N(w) w w w在几个文档中出现

例子: 设词典是 [今天, 上, NLP, 课程, 的, 有, 意思, 数据, 也]

句子(文档)1 “今天 上 的 NLP 的 课程”

句子2 “今天 的 课程 有 意思”

句子3 “数据 课程 也 有 意思”

将句子1表示成TF-IDF向量 [ 1 ⋅ log ⁡ 3 2 , 1 ⋅ log ⁡ 3 1 , 1 ⋅ log ⁡ 3 1 , 1 ⋅ log ⁡ 3 3 , 2 ⋅ log ⁡ 3 2 , 0 , 0 , 0 , 0 ] [1\cdot \log {3\over 2}, 1\cdot \log {3\over 1}, 1\cdot \log {3\over 1}, 1\cdot \log {3\over 3},2\cdot \log{3\over 2},0,0,0,0] [1log23,1log13,1log13,1log33,2log23,0,0,0,0]

词向量

生成词向量的流程
深度学习模型
skip-gram
glove
cbow
RNN/LSTM
Gaussian Embedding
输入 String
分布式表示

词向量在某种意义上代表单词的意思

从词向量表示句子
  • 对句子每个单词的词向量取平均
  • 也可以用LSTM/RNN计算句子的向量

你可能感兴趣的:(深度学习)