词权重 (term weight)方案总结

目录

1 无监督 (unsupervised) 方法

1.1 统计方法(TF, TF-IDF, YAKE)

详情可以参考我之前的博文:TF, TFIDF, YAKE

1.2 图方法 (TextRank, SingleRank, TopicRank, PositionRank)

详情可以参考我之前的博文:TextRank, SingleRank, TopicRank, PositionRank

2 有监督 (supervised ) 统计方法

2.1 Delta TF-IDF

Delta TF-IDF针对文本分类,通过计算单词在正负语料的TF-IDF得分差异来衡量一个词的重要性,核心思想是提高在正负样本之间分布不均匀的词的重要性,分布不均匀的词具有更高的区分度,term t t t在文本d d d的分值计算如下:
V t , d = T F ( t , d ) × l o g 2 ( ∣ P ∣ P t ) − T F ( t , d ) × l o g 2 ( ∣ N ∣ N t ) V_{t,d} = TF(t, d) \times log_2(\frac{|P|}{P_t}) – TF(t, d) \times log_2(\frac{|N|}{N_t})V t ,d ​=T F (t ,d )×l o g 2 ​(P t ​∣P ∣​)−T F (t ,d )×l o g 2 ​(N t ​∣N ∣​)
= T F ( t , d ) × l o g 2 ( ∣ P ∣ P t N t ∣ N ∣ ) =TF(t, d) \times log_2(\frac{|P|}{P_t}\frac{N_t}{|N|})=T F (t ,d )×l o g 2 ​(P t ​∣P ∣​∣N ∣N t ​​)
其中T F ( t , d ) TF(t,d)T F (t ,d )表示的是 term t t t在文本d d d的词频率,一般计算公式是用文本包含term t t t的词频除以文本的总词频,得到该词的频率分值,∣ P ∣ |P|∣P ∣表示的是正样本文档数量,P t P_t P t ​表示的在正样本文档中包含 term t t t的文档数,而∣ N ∣ |N|∣N ∣表示的是负样本文档数量,N t N_t N t ​表示的是在负样本文档中包含 term t t t的文档数。

2.2 TF-IDF-ICF

TF-IDF-ICF是在TF-IDF基础上,利用label信息进行有监督的对term进行权重学习,通过增加Inverse Class Frequency (ICF)因子,让那些在少量文本( IDF) 出现以及少量类别 (ICF)出现的term给与更高的权重分值。其中term t t t在文本d d d中的权重计算公式如下:
V t , d = T F ( t , d ) × I D F ( t ) × ( 1 + l o g ( M C F ( t ) ) ) V_{t,d} = TF(t,d) \times IDF(t) \times (1 + log ( \frac{M}{CF(t)}))V t ,d ​=T F (t ,d )×I D F (t )×(1 +l o g (C F (t )M ​))

T F ( t , d ) TF(t,d)T F (t ,d )表示term t t t在文本d d d中的词频,I D F ( t ) = l o g 2 ( D D t ) IDF(t)=log_2(\frac{D}{D_t})I D F (t )=l o g 2 ​(D t ​D ​)表示倒文本频率。M M M表示的是类别的数量,C F ( t ) CF(t)C F (t )表示的是term t t t在所有类别M M M个中出现的次数。从上面公式可以看出,相比TF-IDF,TF-IDF-ICF对那些在类别中出现较少的词提高了权重,因为该词在所有类别中出现频率较少,则相对更有区分度。

2.3 TF-RF

TF-RF (Term Frequency-Relevance Frequency) 和 Delta TF-IDF思想类似,将term在正样本和负样本的分布考虑进去,但是仅仅考虑包含该term的文本,分值计算如下:

V t , d = T F ( t , d ) × l o g 2 ( 2 + P t m a x ( 1 , N t ) ) V_{t,d} = TF(t, d) \times log_2(2 + \frac{P_t}{max(1, N_t)} )V t ,d ​=T F (t ,d )×l o g 2 ​(2 +m a x (1 ,N t ​)P t ​​)
其中P t P_t P t ​表示的是包含term t t t的正样本数量,N t N_t N t ​表示的是包含term t t t的负样本数量。论文指出,不包含term t t t的文本特别多,将这些文本考虑进来,会影响term t t t在正负样本中的分布情况,所以只用了相对的频率分布,其中公式中常数值起到平滑作用。

2.4 TF-IGM

TF-IGM ( Term Frequency-Inverse Gravity Moment) 用来衡量term在类别之间的不均匀度,进而可以反映term在类别的区分度。首先我们来看下IGM的公式:
I G M ( t ) = ( f t 1 ∑ r = 1 M f t r × r ) IGM(t) = (\frac{f_{t1}}{\sum_{r=1}^Mf_{tr} \times r})I G M (t )=(∑r =1 M ​f t r ​×r f t 1 ​​)
其中f t r ( r = 1 , 2 , . . . , M ) f_{tr} (r=1,2,…,M)f t r ​(r =1 ,2 ,…,M )表示的是term t t t在第r r r个类别的文本频率,f t r f_{tr}f t r ​是降序排列好的,也就是说f t 1 f_{t1}f t 1 ​代表term t t t在该类别中出现的文本频率最高。从IGM的公式可以看出,当term t t t在类别分布越均匀,分母分值越大,则IGM分值越小;而分布越不均匀,则相反,分布越不均匀,说明该term在类别区分度越大。TF-IGM权重分值计算如下:
V t , d = T F ( t , d ) × ( 1 + λ × I G M ( t ) ) V_{t,d} = TF(t,d) \times (1+ \lambda \times IGM(t))V t ,d ​=T F (t ,d )×(1 +λ×I G M (t ))
其中λ \lambda λ是一个可以调整的系数,用来平衡term在全局或者局部分值权重,通常设置值为5到9之间。

2.5 CTF-ICF

CTF-ICF ( Class Term Frequency-Inverse Class Frequency) 主要解决文本较短 (比如在电商场景下的sku title),重要的term有可能在一个文本 (sku) 中出现的词频并不高,用TF不能够很好的衡量term的重要度,所以需要对相同类别的文本聚合为一个大的文本,再计算term的频率,在这里称为CTF,若该term在该类别的所有文本中出现的频率越高,该term对于该类别越重要,CTF分值越大,同时为了衡量term在不同的类别上的区分度,用ICF倒类别频率分值来衡量,具体计算如下:

V t , d i c = C T F ( t ) × I C F ( t ) = ∑ i = 1 k N d i c ( t ) ∑ i = 1 k N d i c × log ⁡ ( M C F ( t ) ) V_{t,d_{i}^c} = CTF(t) \times ICF(t) = \frac{\sum_{i=1}^{k} N_{d_i^c}(t) } {\sum_{i=1}^{k} N_{d_i^c}} \times \log(\frac{M}{CF(t)})V t ,d i c ​​=C T F (t )×I C F (t )=∑i =1 k ​N d i c ​​∑i =1 k ​N d i c ​​(t )​×lo g (C F (t )M ​)
N d i c N_{d_i^c}N d i c ​​表示的是类别为c c c的第i i i个文本的所有词频,N d i c ( t ) N_{d_i^c}(t)N d i c ​​(t )表示的是包含term t t t的词频,而∑ i = 1 k N d i c ( t ) ∑ i = 1 k N d i c \frac{\sum_{i=1}^{k} N_{d_i^c}(t) } {\sum_{i=1}^{k} N_{d_i^c}}∑i =1 k ​N d i c ​​∑i =1 k ​N d i c ​​(t )​表示的是term t t t在类别为c c c的词频率。M M M表示的总类别数,C F ( t ) CF(t)C F (t )表示包含term t t t的类别数量。(实际应用场景效果还可以,该算法是通过实践过程中改进的)

3 有监督 (supervised ) 语义学习方法

此类方法主要基于语义模型,通过对应的学习任务,让模型学习出每个term的分值。

3.1 基于关键词学习

Keyphrase Extraction Using Deep Recurrent Neural Networks on Twitter,该论文发表在2016年 EMNLP上,本文基于一个2层的RNN模型将关键词和关键短语提取当做一个标注分类任务,判断每个词是否是关键词或者关键短语,对每个term进行一个二分类任务,模型预测的分值可以当做该term的权重。论文中模型的第一层用来做关键词识别任务,第二层用来做关键短语识别任务,最后将两个任务损失函数进行权重融合,作为最终的损失函数:
J ( θ ) = a J 1 ( θ ) + ( 1 − a ) J 2 ( θ ) J(\theta) = aJ_1(\theta) + (1-a)J_2(\theta)J (θ)=a J 1 ​(θ)+(1 −a )J 2 ​(θ)

3.2 基于文本分类

Progress Notes Classification and Keyword Extraction using Attention based Deep Learning Models with BERT, 本论文基于BERT+attention Layer通过对文本进行分类,利用attention层自动学习文本中的每个词的权重,根据词的权重,可以获取与文本主题相关的关键词,下图是截取论文中提供的高attention权重的关键词效果:

词权重 (term weight)方案总结

; 3.3 基于检索语义向量匹配

Learning Term Discrimination,发表在2020 SIGIR会议的short paper上。论文用一个浅层的神经网络去学习term的TDV (term discrimination values)分值,同时基于学到的termTDV分值,在建立倒排索引的时候,除了对一些停用词进行过滤,进一步对TDV分值为0的进行过滤,在没有降低检索质量的同时,检索速度提升了几倍。

3.3.1 TF-IDF的相关性分值计算

首先我们来看下query q q q和文本d d d基于TF-IDF相关性分值计算如下:
T F – I D F ( q , d ) = ∑ t ∈ q t f t d ⋅ i d f t = Q T ⋅ ( S : , d ⊙ I D F ) TF\text{-}IDF(q,d) = \sum_{t \in q}tf_{td} \cdot idf_t = Q^T \cdot (S_{:,d} \odot IDF)T F -I D F (q ,d )=t ∈q ∑​t f t d ​⋅i d f t ​=Q T ⋅(S :,d ​⊙I D F )
其中S ∈ R ∣ V ∣ × ∣ C ∣ S \in R^{|V| \times |C|}S ∈R ∣V ∣×∣C ∣,里面的每个元素S t , d S_{t,d}S t ,d ​表示的是term t ∈ V t \in V t ∈V在文本d d d的词频t f t d tf_{td}t f t d ​,S S S的每一列S : , d S_{:,d}S :,d ​表示文本d d d的BoW表征,而每一行S t , : S_{t,:}S t ,:​表示的是term t t t的倒排列表,Q ∈ N ∣ V ∣ Q \in N^{|V|}Q ∈N ∣V ∣表示的是query q q q的BoW表征。⊙ \odot ⊙表示的是点元素相乘,I D F ∈ R ∣ V ∣ IDF \in R^{|V|}I D F ∈R ∣V ∣表示的是所有terms 的一个倒文本频率。而idf可以用L 0 L_0 L 0 ​范数从S S S矩阵求解得到:
i d f t = log ⁡ ∣ C ∣ + 1 d f t = log ⁡ ∣ C ∣ + 1 L 0 ( S t , : ) idf_t = \log \frac{|C|+1}{df_t} = \log\frac{|C|+1}{L_0(S_t,:)}i d f t ​=lo g d f t ​∣C ∣+1 ​=lo g L 0 ​(S t ​,:)∣C ∣+1 ​
d f t df_t d f t ​表示包含term t t t的文本频率,但因为L 0 L_0 L 0 ​范数不可导,所以用L 1 L_1 L 1 ​范数替代L 0 L_0 L 0 ​范数( L0范数是指向量中非0的元素的个数),使得可以用梯度下降方法求解,由于L 1 ( S t , : ) L_1(S_{t,:})L 1 ​(S t ,:​)有可能大于∣ C ∣ + 1 |C|+1 ∣C ∣+1,导致IDF分值为负数,所以论文用最大归一化操作,则最终的idf求解得:
i d f t ‾ = log ⁡ m a x { t ′ ∈ V } L 1 ( S t ′ , : ) + 1 L 1 ( S t , : ) \overline{idf_t} = \log \frac{max_{{t^{‘}\in V}} L_1(S_{t^{‘}},:)+1}{{L_1(S_t,:)}}i d f t ​​=lo g L 1 ​(S t ​,:)m a x {t ′∈V }​L 1 ​(S t ′​,:)+1 ​
所以调整后的TF-IDF计算公式如下:
T F – I D F ( q , d ) ‾ = ∑ t ∈ q t f t d ⋅ i d f t = Q T ⋅ ( S : , d ⊙ I D F ‾ ) \overline{TF\text{-}IDF(q,d)} = \sum_{t \in q}tf_{td} \cdot idf_t = Q^T \cdot (S_{:,d} \odot \overline{IDF})T F -I D F (q ,d )​=t ∈q ∑​t f t d ​⋅i d f t ​=Q T ⋅(S :,d ​⊙I D F )
其中I D F ‾ ∈ R ∣ V ∣ \overline{IDF} \in R^{|V|}I D F ∈R ∣V ∣是一个向量,包含了所有term的i d f t ‾ \overline{idf_t}i d f t ​​的值。

3.3.2 基于BM25的相关性分值计算

BM25算法是计算相关性评分的常用一种算法,核心原理是对query Q进行单元解析(一般是分词)得到term,然后计算每个term与文本d的相关性得分,最后将相关性得分进行加权求和,得到query Q与文本d的相关性得分,相关性得分计算如下:
s c o r e ( Q , d ) = ∑ i n w i ⋅ R ( t i , d ) score(Q, d) = \sum_{i}^n w_i \cdot R(t_i, d)s c o r e (Q ,d )=i ∑n ​w i ​⋅R (t i ​,d )
其中t i t_i t i ​表示的是query Q Q Q分解后的第i i i个term,w i w_i w i ​是对应的权重,R ( t i , d ) R(t_i,d)R (t i ​,d )表示的是t i t_i t i ​与文本d d d的相关性。一般情况w i w_i w i ​分值根据IDF计算,而t i t_i t i ​与文本d的相关性得分R ( t i , d ) R(t_i, d)R (t i ​,d )计算公式如下:
R ( t i , d ) = d f i ⋅ ( k 1 + 1 ) d f i + K ⋅ q f i ⋅ ( k 2 + 1 ) q f i + k 2 R(t_i, d) = \frac{df_i \cdot (k_1 + 1)}{df_i + K} \cdot \frac{qf_i \cdot (k_2 + 1)}{qf_i + k_2}R (t i ​,d )=d f i ​+K d f i ​⋅(k 1 ​+1 )​⋅q f i ​+k 2 ​q f i ​⋅(k 2 ​+1 )​
K = k 1 ⋅ ( 1 − b + b ⋅ d l a v g d l ) K = k_1 \cdot (1-b+b \cdot \frac{dl}{avgdl})K =k 1 ​⋅(1 −b +b ⋅a v g d l d l ​)
其中k 1 , k 2 , b k_1, k_2, b k 1 ​,k 2 ​,b为调节因子,q f i qf_i q f i ​,d f i df_i d f i ​分别表示term t i t_i t i ​在query中的词频和在文本中的词频,d l dl d l表示文本d的长度,a v g d l avgdl a v g d l表示所有文档的平均长度。由于多数情况下,一个term在query中只出现一次,所以q f i = 1 qf_i=1 q f i ​=1,则上述公式可以化简为:
R ( t i , d ) = d f i ⋅ ( k 1 + 1 ) d f i + K R(t_i, d) = \frac{df_i \cdot (k_1 + 1)}{df_i + K}R (t i ​,d )=d f i ​+K d f i ​⋅(k 1 ​+1 )​
K = k 1 ⋅ ( 1 − b + b ⋅ d l a v g d l ) K = k_1 \cdot (1-b+b \cdot \frac{dl}{avgdl})K =k 1 ​⋅(1 −b +b ⋅a v g d l d l ​)
从上面的公式可以看出,若文本越长,则相关性分值越低,因为文本越长,越可能命中term,而参数b b b越大,文本长度对相关性影响越大。BM25相关性得分整体公式如下:
s c o r e ( Q , d ) = ∑ i n I D F ( t i ) ⋅ d f i ⋅ ( k 1 + 1 ) d f i + k 1 ⋅ ( 1 − b + b ⋅ d l a v g d l ) score(Q,d) = \sum_{i}^n IDF(t_i)\cdot \frac{df_i \cdot (k_1 + 1)}{df_i + k_1 \cdot (1-b+b \cdot \frac{dl}{avgdl})}s c o r e (Q ,d )=i ∑n ​I D F (t i ​)⋅d f i ​+k 1 ​⋅(1 −b +b ⋅a v g d l d l ​)d f i ​⋅(k 1 ​+1 )​

3.3.3 基于浅层神经网络的term TDV分值计算

论文中用一个浅层的神经网络学习term的区分度分值TDV,再对倒排索引矩阵S S S元素值进行调整,计算公式如下:
S t , d ′ = t f t d ⋅ t d v t = t f t d ⋅ R e L U ( w t T ⋅ w + b ) S_{t,d}^{‘} = tf_{td} \cdot tdv_t = tf_{td} \cdot ReLU(w_t^T \cdot w + b)S t ,d ′​=t f t d ​⋅t d v t ​=t f t d ​⋅R e L U (w t T ​⋅w +b )
我们基于新的S t , d ′ S^{‘}{t,d}S t ,d ′​,可以得到新的I D F ′ ‾ \overline{IDF^{‘}}I D F ′分值,则最终TDV-TF-IDF(q,d)的计算公式表达如下:
T D V – T F – I D F ( q , d ) = Q T ⋅ ( S : , d ′ ⋅ I D F ′ ) ‾ TDV\text{-}TF\text{-}IDF(q,d) = Q^T \cdot (S^{‘}
{:,d} \cdot \overline{IDF^{‘})}T D V -T F -I D F (q ,d )=Q T ⋅(S :,d ′​⋅I D F ′)​
而融入TDV分值的BM25算法调整如下:
B M 25 ( q , d ) ‾ = Q T ⋅ I D F ′ ‾ ⊙ ( S : , d ( k 1 + 1 ) ) ( S : , d + k 1 ( 1 − b + b ∣ d ∣ a v g d l ) \overline{BM25(q,d)} = Q^T \cdot \overline{IDF{‘}} \odot \frac{(S_{:,d} (k_1 + 1))}{(S_{:,d} + k_1(1-b + b\frac{|d|}{avgdl})}B M 2 5 (q ,d )​=Q T ⋅I D F ′⊙(S :,d ​+k 1 ​(1 −b +b a v g d l ∣d ∣​)(S :,d ​(k 1 ​+1 ))​
其中∣ d ∣ = L 1 ( S : , d ) |d| = L_1(S:,d)∣d ∣=L 1 ​(S :,d ),a v g d l = ∑ d ∈ C L 1 ( S : , d ) / ∣ C ∣ avgdl = \sum_{d \in C} L_1(S:,d)/ |C|a v g d l =∑d ∈C ​L 1 ​(S :,d )/∣C ∣

3.3.4 Training

整体模型结构图如下:

词权重 (term weight)方案总结
考虑到由于有限的训练样本,其中词向量基于Wikipedia语料进行pre-train学习得到,在fine tune阶段并不进行更新。模型需要学习的参数为神经网络层的权重参数w w w和偏移项b b b。论文用pairwise hinge loss作为损失函数:
L H i n g e ( f , q , d + , d − ) = m a x ( 0 , 1 − f ( q , d + ) + f ( q , d − ) ) L_{Hinge}(f, q, d^+, d^-) = max(0, 1-f(q,d^+) + f(q, d^-))L H i n g e ​(f ,q ,d +,d −)=m a x (0 ,1 −f (q ,d +)+f (q ,d −))
其中f f f是一个可微的排序函数(在本论文中比如为TDV-TF-IDF),d + d^+d +表示与query q q q相关的文本,而d − d^-d −表示不相关的文本。为了获得稀疏解,对TVD分值为0的进行过滤掉,对文本的BoW表征增加了L 1 L_1 L 1 ​范数约束,所以最终的loss表示如下:
( 1 − λ ) L H i n g e ( f , q , d + , d − ) + λ ( L 1 ( S f : , d + ′ ) + L 1 ( S f : , d − ′ ) ) (1-\lambda)L_{Hinge}(f, q, d^+, d^-) + \lambda(L_1(Sf^{‘}{:,d^+})+L_1(Sf^{‘}{:,d^-}))(1 −λ)L H i n g e ​(f ,q ,d +,d −)+λ(L 1 ​(S f :,d +′​)+L 1 ​(S f :,d −′​))
其中λ \lambda λ为权重参数,用来平衡hinge loss和L1归一化loss。

; 3.3.5 试验效果

通过加入TDV分值,不管是TF-IDF还是BM25,整体效果都有较大幅度的提高:

词权重 (term weight)方案总结
论文通过对TVD分值为0的进行过滤,所以倒排索引量减少较大:
词权重 (term weight)方案总结

Original: https://blog.csdn.net/BGoodHabit/article/details/120013114
Author: BGoodHabit
Title: 词权重 (term weight)方案总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531844/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球