文本表示基础
单词和句子的表示
迭代1:one-hot表示
词库:[今天 天气 很好]
句子1:[今天 天气 很好] = [1,1,1]
缺点:没有顺序和权重;稀疏;无法比较语义相似度
迭代2:出现次数
句子1:[今天 天气 很好 很好 啊] = [1,1,2]
缺点:所以,如果只记录单词的个数也是不够的,我们还需要考虑单词的权重,也可以认为是质量。这有点类似于,一个人有很多朋友不代表这个人有多厉害,还需要社交的质量,其实是同一个道理。 那如何把这种所谓的“质量”引入到表示中呢?答案是tf-idf
迭代3:TF-IDF
首先,单词在该篇文档中的频率要高,同时,单词不能出现在过多的文档中。例如,“的”会100%出现在任何一篇文档中,因此 idf("的") = log(100/100) = 0
向量长度为词库的长度
对每一个词库的单词进行计算tfidf(w)
计算向量相似度
欧氏距离,没有考虑方向;通常使用 余弦相似度
import numpy as np
def cos_sim(a, b):
"""给定两个向量,a和b,计算它俩之间的余弦相似度
"""
dot_product = np.dot(a,b)
norm_a = np.linalg.norm(a)
norm_b = np.linalg.norm(b)
return dot_product / (norm_a * norm_b)
词向量基础
image.pngimage.png
词向量到句向量
mean_pooling
网友评论