04[NLP训练营]文本处理(下)

Word Representation

独热编码

这个很简单,稍微带过
词典:[我们,去,爬山,今天,你们,昨天,跑步]7个词,7个维度
每个单词的表示:
我们:(1,0,0,0,0,0,0)
爬山:(0,0,1,0,0,0,0)
跑步:(0,0,0,0,0,0,1)
昨天:(0,0,0,0,0,1,0)

Sentence Representation(boolean)

这里是Boolean Representation,后面还会有一种Count based Representation
词典:[我们,又,去,爬山,今天,你们,昨天,跑步]8个词

每个句子的表示
我们今天去爬山:(1,0,1,1,1,0,0,0)8维=词典大小
你们昨天跑步:(0,0,0,0,0,1,1,1)8维=词典大小
你们又去爬山又去跑步:(0,1,1,1,0,1,0,1)8维=词典大小

Sentence Representation(Count )

词典:[我们,又,去,爬山,今天,你们,昨天,跑步]8个词
每个句子的表示
我们今天去爬山:(1,0,1,1,1,0,0,0)8维=词典大小
你们昨天跑步:(0,0,0,0,0,1,1,1)8维=词典大小
你们又去爬山又去跑步:(0,2,2,1,0,1,0,1)8维=词典大小

Sentence Similarity

计算距离(欧式距离): d = s 1 s 2 d=|s_1-s_2|
例如:
s 1 = ( x 1 , x 2 , x 3 ) , s 2 = ( y 1 , y 2 , y 3 ) s_1=(x_1,x_2,x_3),s_2=(y_1,y_2,y_3)
d = ( x 1 y 1 ) 2 + ( x 2 y 2 ) 2 + ( x 3 y 3 ) 2 d=\sqrt{(x_1-y_1)^2+(x_2-y_2)^2+(x_3-y_3)^2}
S1:“我们今天去爬山”=(1,0,1,1,0,0,0,0)
S2:"你们昨天跑步“=(0,0,0,0,0,1,1,1)
S3:“你们又去爬山又去跑步“=(0,2,2,1,0,1,0,1)
根据公式:
在这里插入图片描述
s i m ( s 1 , s 2 ) > s i m ( s 2 , s 3 ) sim(s_1,s_2)>sim(s_2,s_3)
sim代表similarity,距离越小相似度越大
由于向量是有方向的,欧式距离没有考虑方向因素,因此就有了:
计算相似度(余弦相似度): d = s 1 s 2 s 1 s 2 d=\cfrac{s_1\cdot s_2}{|s_1|*|s_2|}
例如:
s 1 = ( x 1 , x 2 , x 3 ) , s 2 = ( y 1 , y 2 , y 3 ) s_1=(x_1,x_2,x_3),s_2=(y_1,y_2,y_3)
d = x 1 y 1 + x 2 y 2 + x 3 y 3 x 1 2 + x 2 2 + x 3 2 y 1 2 + y 2 2 + y 3 2 d=\cfrac{x_1y_1+x_2y_2+x_3y_3}{\sqrt{x_1^2+x_2^2+x_3^2}\sqrt{y_1^2+y_2^2+y_3^2}}
根据公式:
在这里插入图片描述
这里d越小,相似度越小,第一个 d ( s 1 , s 2 ) = 0 d(s_1,s_2)=0 说明这两个句子意思也是相反的。

例子

句子1:He is going from Beijing to Shanghai
句子2:He denied my request,but he actually lied.
句子3:Mike lost the phone,and phone was in the car
用以上句子构建词库后,用count based representation来表示:
句子1:(0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,1,0)
句子2:(1,0,0,1,0,1,0,0,2,0,0,1,0,0,1,0,1,0,0,0,0)
句子3:(0,1,0,0,1,0,0,0,0,1,0,0,1,1,0,2,0,0,2,0,1)
以第二个句子来看,he出现了两次,表示为2,但是句子中最重要的单词denied 由于只出现了一次,所以表示为1,这样是不合理的。
也就是说:并不是出现的越多就越重要,并不是出现的越少就越不重要!
如何解决这个问题?就是:

Tf-idf Representation

公式:
t f i d f ( w ) = t f ( d , w ) i d f ( w ) tfidf(w)=tf(d,w)*idf(w)
t f ( d , w ) tf(d,w) 是文档d中w的词频,就是前面所提到的count based representation方法
i d f ( w ) idf(w) 表示单词的重要性: l o g N N ( w ) log\cfrac{N}{N(w)}
N N :语料库中的文档总数
N ( w ) N(w) :词语(w)出现在多少个文档?
加log是防止 N N ( w ) \cfrac{N}{N(w)} 太大
例子:
句子1:今天 上 NLP 课程
句子2:今天 的 课程 有 意思
句子3:数据 课程 也 有 意思
抽取出来的词典=[今天,上,NLP,课程,的,有,意思,数据 ,也],9维。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

boolean based representation
count based representation
tfidf based representation
都属于one-hot向量。
但是有这些个向量有缺点,例如:
下面哪些单词之间语义相似度更高?
我们,爬山,运动,昨天
我们:(0,1,0,0,0,0)
爬山:(0,0,1,0,0,0)
运动:(1,0,0,0,0,0)
昨天:(0,0,0,1,0,0)
1、欧式距离
d(我们,爬山)= 2 \sqrt{2}
d(我们,运动)= 2 \sqrt{2}
d(我们,昨天)= 2 \sqrt{2}
d(运动,昨天)= 2 \sqrt{2}
说明这个one-hot不适合表达语义相似度
2、余弦相似度
sim(我们,爬山)=0/1=0
sim(我们,运动)=0/1=0
sim(我们,昨天)=0/1=0
sim(运动,昨天)=0/1=0
说明这个one-hot不适合表达语义相似度
注意,这里的欧氏距离和余弦相似度是没有问题的,问题出在向量的表示方法上。
那么怎么来表示向量才能解决这个问题?那就是词向量!

发布了140 篇原创文章 · 获赞 35 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/oldmao_2001/article/details/104498150
今日推荐