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=(x?y)2 ?
余弦相似度 d = x ? y ∣ x ∣ ? ∣ y ∣ d=\frac{\bold{x}\cdot \bold{y}}{|\bold{x}|\cdot |\bold{y}|} d=∣x∣?∣y∣x?y?,x ? y = ∣ x ∣ ? ∣ y ∣ cos ? θ \bold{x}\cdot \bold{y}=|\bold{x}|\cdot |\bold{y}|\cos \theta x?y=∣x∣?∣y∣cosθ, 所以 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] [1?log23?,1?log13?,1?log13?,1?log33?,2?log23?,0,0,0,0]
词向量 生成词向量的流程 深度学习模型 skip-gram glove cbow RNN/LSTM Gaussian Embedding 输入 String 分布式表示 【NLP学习(3) 文本表示】词向量在某种意义上代表单词的意思
从词向量表示句子

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

    推荐阅读