NLP学习笔记「第三章」3.1 Representing Documents in Vector Space(如何将文档映射到向量空间里面)

这篇博客探讨了朴素贝叶斯模型在文档分类中的应用,介绍了如何通过计算每个类别的条件概率来确定文档的类别。文章提到了特征向量的概念,其中每个元素表示词在文档中的出现次数,以及词与类别的概率关系。进一步,文章讨论了向量空间模型,特别是TF-IDF向量,它通过降低频繁词的权重来提高文档表示的有效性。TF-IDF考虑了词在所有文档中的分布,从而更准确地反映了词的重要性和区分度。
摘要由CSDN通过智能技术生成
Review Naibe Bayes

P ( c ∣ d ) = P ( c ) ∗ ∏ x ∈ c P ( w ∣ c ) l o g P ( c ∣ d ) = l o g P ( c ) + ∑ w ∈ c l o g P ( w ∣ c ) \begin{aligned}P(c|d)&=P(c)*\prod_{x\in c}P(w|c)\\logP(c|d)&=logP(c)+\sum_{w\in c}logP(w|c)\end{aligned} P(cd)logP(cd)=P(c)xcP(wc)=logP(c)+wclogP(wc)

文档分类模型,给定文档d,朴素贝叶斯计算各个类别c的条件概率,参数化过程是公式一,那么取对数就是公式二。

l o g P ( c ) logP(c) logP(c)是指类别本身出现的概率,比如说每一个词对于类别的影响,如果我见到更多的关于财经类的词,那我判断为财经类,如果我见到更多关于运动类的词那我确定是运动类。

Feature vectors

换一个角度理解 l o g P ( w ∣ c ) logP(w|c) logP(wc)

∑ w ∈ c l o g P ( w ∣ c ) \sum_{w\in c}logP(w|c) wclogP(wc)可以看成是两个因素决定的:

  1. 每一个词出现在文档里的个数
  2. 每一个词和类别标签的概率关系

我们把第一个因素用一个向量 Φ \Phi Φ来表示,这个向量有词汇表V这么长,其中向量中的f_i代表词汇表第i个词出现的次数。

假定第一个元素f_1代表goal在文档d出现的次数

第二个因素我们定义为 θ \theta θ,对于每一个类别都有一个特定的值。比如,拿sports这个类别来讲,我可以给一个 θ ⃗ s p o r t s \vec\theta_{sports} θ sports这个向量同样有词汇表V那么长,每一个元素对应 Φ \Phi Φ里面的一个元素,比如第一个元素我存的是 l o g P ( g o a l ∣ s p o r t s ) logP(goal|sports) logP(goalsports)
Φ ⃗ = [ f 1 f 2 . . . f ∣ v ∣ ]                            θ ⃗ s p o r t s = [ l o g P ( g o a l ∣ s p o r t s ) l o g P ( f a n s ∣ s p o r t s ) . . . l o g P ( s t o c k ∣ s p o r t s ) l o g P ( l o a n ∣ s p o r t s ) l o g P ( C E O ∣ s p o r t s ) ] \vec\Phi= \begin{bmatrix} f_1\\f_2\\...\\f_{|v|} \end{bmatrix} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vec\theta_{sports}= \begin{bmatrix} logP(goal|sports)\\ logP(fans|sports)\\ ...\\ logP(stock|sports)\\ logP(loan|sports)\\ logP(CEO|sports) \end{bmatrix} Φ =f1f2...fv                          θ sports=logP(goalsports)logP(fanssports)...logP(stocksports)logP(loansports)logP(CEOsports)

f 1 = # g o a l ∈ d f_1=\#goal\in d f1=#goald
当我们用这个向量来表示,文档和概率之间关系的时候,就会发现,
l o g P ( c = s p o r t s ∣ d ) = θ ⃗ s p o r t s ⋅ Φ ⃗ + l o g P ( c = s p o r t s ) logP(c=sports|d)=\vec\theta_{sports}\cdot\vec{\Phi}+logP(c=sports) logP(c=sportsd)=θ sportsΦ +logP(c=sports)

Vector Space Model

mapping documents to vectors

朴素贝叶斯模型和向量空间有一定的内在联系,我们把一个文档映射到一个向量空间里,空间的每一维代表词汇表的某一个词的语义信息,d这个文档向量,在这个空间里每一个维度的大小,就代表d里面含有相关信息的大小。

image-20220620172051327
Vector representation of documents
image-20220620172304203

对于这四个文档我可以计算四个不同的向量,每一个向量就代表这个文档不同的词出现的频率,那么抽象起来就是如下:

Sparse vectors document representation
  • 词汇表用w来表示 ,Vocabulary: V = w 1 , w 2 , … , w n V = {w_1,w_2,…,w_n} V=w1w2,wn

  • 将文档映射为向量,Vector representation for document d:

    • v ⃗ ( d ) = ⟨ f 1 , f 2 , … , f ∣ v ∣ ⟩ \vec v(d)=\big \langle f_1,f_2,…,f_{|v|}\big \rangle v (d)=f1,f2,fv
  • 上面基于词数量的向量表示,每一个f就是一个词w在文档里出现的个数。

    • f i = # w i a n d v ⃗ ( d ) = ⟨ # w 1 , w 2 , … , # w ∣ v ∣ ⟩ f_i=\#w_i and \vec v(d)=\big \langle \#w_1,w_2,…,\#w_{|v|}\big \rangle fi=#wiandv (d)=#w1,w2,,#wv

这种向量表示非常的直观,但是在整个词汇表里,不是所有的词都能区分不同文档的属性,

比如说:

  • ∣ ∣ a ∣ ∣ t h e ∣ ∣ o n ∣ ∣ o f ∣ ∣ w i t h ∣ ∣ a b o u t ∣ ∣ a n d ∣ ∣ i n ∣ ∣ a t ∣ ∣ t o ∣ ∣ " ∣ ∣ , ∣ ∣ ? ∣ ∣ o h ∣ ∣ . ∣ ∣ ||a| |the| |on| |of | |with| |about| |and| |in| |at| |to| |"| |,| |?| |oh| |.|| atheonofwithaboutandinatto",?oh.

几乎在所有的文档里都会出现多次,并不能区分文档的类别,STOP WORD

可以把停止词从向量的定义中去掉,可以增加文档向量表示的有效性,但是停止词需要人工定义,选择起来缺乏系统性,有一种方法,可以把停止词这样的硬约束(Hard constraints)变成一种软约束(soft constraint),基本的思想就是我去数一数哪些词出现在所有的文档里,哪些词只出现在特定的文档里,我们把出现在所有文档中的词权重稍微降低,这个思想就叫TF-IDF向量

TF-IDF vectors document representation
  • soft version of stop words in selecting useful words

  • intuition - the more documents in which of words exists, the less informative the word is .

  • reduce the importance values of uninformative words

    tf就是一个词在文档中数量,df就是每一个词出现在不同文档中的数量,df分之一就是idf,直观上认为,这个词出现的次数越多,那么这个词的重要性就越低。

    v ⃗ t f − i d f ( d j ) = ⟨ T F ( w i , d i ) D F ( w 1 ) , T F ( w 2 , d j ) D F ( w 2 ) , . . . , T F ( w n , d j ) D F ( w n ) = ⟨ T F ( w 1 , d i ) I D F ( w 1 ) , T F ( w 2 , d i ) I D F ( w 2 ) , . . . , T F ( w n , d i ) I D F ( w n ) \begin{aligned} \vec v_{tf-idf}(d_j)& = \big \langle \frac{TF(w_i, d_i)}{DF(w_1)},\frac{TF(w_2,d_j)}{DF(w_2)},...,\frac{TF(w_n,d_j)}{DF(w_n)}\\ &=\big \langle TF(w_1,d_i)IDF(w_1),TF(w_2,d_i)IDF(w_2),...,TF(w_n,d_i)IDF(w_n) \end{aligned} v tfidf(dj)=DF(w1)TF(wi,di),DF(w2)TF(w2,dj),...,DF(wn)TF(wn,dj)=TF(w1,di)IDF(w1),TF(w2,di)IDF(w2),...,TF(wn,di)IDF(wn)
    那一个形式定义就是:

    • tf 定义为:w出现在文档里的次数,除以 所有文档里词的总数

      T F ( w i , d j ) = # w i ∣ w i ∈ d j # w ∣ w ∈ d j , w ∈ V TF(w_i,d_j)=\frac {\#{w_i|w_i\in d_j}}{\#{w|w\in d_j,w\in V}} TF(wi,dj)=#wwdj,wV#wiwidj

    • df定义为一套数据集里出现w所有的文档的个数:
      D F ( w i ) = # d ∣ d ∈ D , w i ∈ d ∣ D ∣ DF(w_i)=\frac{\#{d|d\in D, w_i\in d}}{|D|} DF(wi)=D#ddD,wid

    • 那么idf就是定义为:
      I D F ( w i ) = l o g ∣ D ∣ # d ∣ d ∈ D , w i ∈ D IDF(w_i)=log \frac{|D|}{\#{d|d\in D,w_i\in D}} IDF(wi)=log#ddD,wiDD
      或者呢,有些方法里面也不取log。

vector representation of documents

那么,假如我们用tf-idf来表示,同样这四个文档,向量就如下表右边所示,们可以看到,出现在很多文档里面的词,a他的权重其实是降低了

summary:
  1. 学到了把一个文档d映射到向量空间的方法
  2. 直接按照词的频率来数数,这种叫count based vector
  3. 我们区分高频词和低频次叫,TF-IDF vectors
  4. 把一个文档映射到一个向量的过程理解为特征抽取的过程,重要性在于他把一个语言学层面的问题,文档理解,映射成了一个数学领域的对象,向量,这样的话我们之后的建模就可以在向量空间里面进行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值