IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 词权重 (term weight)以及相关性文本分方法总结 -> 正文阅读

[人工智能]词权重 (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}) Vt,d?=TF(t,d)×log2?(Pt?P?)?TF(t,d)×log2?(Nt?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|}) =TF(t,d)×log2?(Pt?P?NNt??)
其中 T F ( t , d ) TF(t,d) TF(t,d)表示的是 term t t t在文本 d d d的词频率,一般计算公式是用文本包含term t t t的词频除以文本的总词频,得到该词的频率分值, ∣ P ∣ |P| P表示的是正样本文档数量, P t P_t Pt?表示的在正样本文档中包含 term t t t的文档数,而 ∣ N ∣ |N| N表示的是负样本文档数量, N t N_t Nt?表示的是在负样本文档中包含 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)})) Vt,d?=TF(t,d)×IDF(t)×(1+log(CF(t)M?))

T F ( t , d ) TF(t,d) TF(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}) IDF(t)=log2?(Dt?D?)表示倒文本频率。 M M M表示的是类别的数量, C F ( t ) CF(t) CF(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)} ) Vt,d?=TF(t,d)×log2?(2+max(1+Nt?)Pt??)
其中 P t P_t Pt?表示的是包含term t t t的正样本数量, N t N_t Nt?表示的是包含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}) IGM(t)=(r=1M?ftr?×rft1??)
其中 f t r ( r = 1 , 2 , . . . , M ) f_{tr} (r=1,2,...,M) ftr?(r=1,2,...,M)表示的是term t t t在第 r r r个类别的文本频率, f t r f_{tr} ftr?是降序排列好的,也就是说 f t 1 f_{t1} ft1?代表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)) Vt,d?=TF(t,d)×(1+λ×IGM(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 ) V_{t,d_{i}^c} = CTF(t) \times ICF(t) Vt,dic??=CTF(t)×ICF(t)
= ∑ i = 1 k N d i c ( t ) ∑ i = 1 k N d i c × l o g ( M C F ( 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)}) =i=1k?Ndic??i=1k?Ndic??(t)?×log(CF(t)M?)
N d i c N_{d_i^c} Ndic??表示的是类别为 c c c的第 i i i个文本的所有词频, N d i c ( t ) N_{d_i^c}(t) Ndic??(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=1k?Ndic??i=1k?Ndic??(t)?表示的是term t t t在类别为 c c c的词频率。 M M M表示的总类别数, C F ( t ) CF(t) CF(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(θ)=aJ1?(θ)+(1?a)J2?(θ)

3.2 基于文本分类

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

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) TF-IDF(q,d)=tq?tftd??idft?=QT?(S:,d?IDF)
其中 S ∈ R ∣ V ∣ × ∣ C ∣ S \in R^{|V| \times |C|} SRV×C,里面的每个元素 S t , d S_{t,d} St,d?表示的是term t ∈ V t \in V tV在文本 d d d的词频 t f t d tf_{td} tftd? S S S的每一列 S : , d S_{:,d} S:,d?表示文本 d d d的BoW表征,而每一行 S t , : S_{t,:} St,:?表示的是term t t t的倒排列表, Q ∈ N ∣ V ∣ Q \in N^{|V|} QNV表示的是query q q q的BoW表征。 ⊙ \odot 表示的是点元素相乘, I D F ∈ R ∣ V ∣ IDF \in R^{|V|} IDFRV表示的是所有terms 的一个倒文本频率。而idf可以用 L 0 L_0 L0?范数从 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,:)} idft?=logdft?C+1?=logL0?(St?,:)C+1?
d f t df_t dft?表示包含term t t t的文本频率,但因为 L 0 L_0 L0?范数不可导,所以用 L 1 L_1 L1?范数替代 L 0 L_0 L0?范数( L0范数是指向量中非0的元素的个数),使得可以用梯度下降方法求解,由于 L 1 ( S t , : ) L_1(S_{t,:}) L1?(St,:?)有可能大于 ∣ 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,:)}} idft??=logL1?(St?,:)max{tV}?L1?(St?,:)+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}) TF-IDF(q,d)?=tq?tftd??idft?=QT?(S:,d?IDF)
其中 I D F  ̄ ∈ R ∣ V ∣ \overline{IDF} \in R^{|V|} IDFRV是一个向量,包含了所有term的 i d f t  ̄ \overline{idf_t} idft??的值。

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) score(Q,d)=in?wi??R(ti?,d)
其中 t i t_i ti?表示的是query Q Q Q分解后的第 i i i个term, w i w_i wi?是对应的权重, R ( t i , d ) R(t_i,d) R(ti?,d)表示的是 t i t_i ti?与文本 d d d的相关性。一般情况 w i w_i wi?分值根据IDF计算,而 t i t_i ti?与文本d的相关性得分 R ( t i , d ) R(t_i, d) R(ti?,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(ti?,d)=dfi?+Kdfi??(k1?+1)??qfi?+k2?qfi??(k2?+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=k1??(1?b+b?avgdldl?)
其中 k 1 , k 2 , b k_1, k_2, b k1?,k2?,b为调节因子, q f i qf_i qfi? d f i df_i dfi?分别表示term t i t_i ti?在query中的词频和在文本中的词频, d l dl dl表示文本d的长度, a v g d l avgdl avgdl表示所有文档的平均长度。由于多数情况下,一个term在query中只出现一次,所以 q f i = 1 qf_i=1 qfi?=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(ti?,d)=dfi?+Kdfi??(k1?+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=k1??(1?b+b?avgdldl?)
从上面的公式可以看出,若文本越长,则相关性分值越低,因为文本越长,越可能命中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})} score(Q,d)=in?IDF(ti?)?dfi?+k1??(1?b+b?avgdldl?)dfi??(k1?+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) St,d?=tftd??tdvt?=tftd??ReLU(wtT??w+b)
我们基于新的 S t , d ′ S^{'}_{t,d} St,d?,可以得到新的 I D F ′  ̄ \overline{IDF^{'}} IDF分值,则最终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^{'})} TDV-TF-IDF(q,d)=QT?(S:,d??IDF)?
而融入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})} BM25(q,d)?=QT?IDF(S:,d?+k1?(1?b+bavgdld?)(S:,d?(k1?+1))?
其中 ∣ d ∣ = L 1 ( S : , d ) |d| = L_1(S:,d) d=L1?(S:,d) a v g d l = ∑ d ∈ C L 1 ( S : , d ) / ∣ C ∣ avgdl = \sum_{d \in C} L_1(S:,d)/ |C| avgdl=dC?L1?(S:,d)/C

3.3.4 Training

整体模型结构图如下:
在这里插入图片描述
考虑到由于有限的训练样本,其中词向量基于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^-)) LHinge?(f,q,d+,d?)=max(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 L1?范数约束,所以最终的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?λ)LHinge?(f,q,d+,d?)+λ(L1?(Sf:,d+?)+L1?(Sf:,d??))
其中 λ \lambda λ为权重参数,用来平衡hinge loss和L1归一化loss。

3.3.5 试验效果

通过加入TDV分值,不管是TF-IDF还是BM25,整体效果都有较大幅度的提高:
在这里插入图片描述
论文通过对TVD分值为0的进行过滤,所以倒排索引量减少较大:
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:48:58  更:2021-09-07 10:50:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 15:50:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码