立即注册找回密码

7m足球比分

查看: 121|回复: 0

你知道什么是文本的词权重吗?算法模型是怎么计算词权重的呢?

[复制链接]

8947

主题

8947

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
26851
发表于 2019-10-5 07:37:57 | 显示全部楼层 |阅读模式
总结篇

本文,我们将主要讲一讲词权重。为什么要讨论这个问题呢?88娱乐在自然语言处理过程中,我们最重要的目的是尝试去理解文本语义,而让计算机通过算法去掌握文本的语义信息,最重要的就是能够提取文本的特征,这些特征的产生从本质上来说是离不开词权重的。不过本文会主要用通俗的语言去讲解,尽量不去讲比较细的算法。



词权重在很多场景中未必是一定需要计算出分数的,很多时候我们根据赋值在词身上的其他特征来简单代替,例如位置坐标,词频,亦或者是训练出的词距离来表示词语的重要程度。那么对于一个长文本来说,词权重是怎么得来的呢?

1. 词语在自然语聊中的信息。

大家都知道,机器学习下的各个分支都是非常吃语料的,自然语言处理(NLP)也不例外。在工业界,很多数据基础来自于清洗后的自然语料。例如10年来的人民日报的文章,社交媒体的文章等。通过对这些语料的特征提取,例如词频统计,idf信息提取,词向量训练 来获取我们模型和算法所需要的先验知识。经过训练后,每个词我们都可以得到一个先验,例如我们知道 “的,得,哇” 这种词在绝大多数语料中是没有什么价值的。这时候在当前文本信息缺失的情况下,我们可以大胆假定这些词在本文中的词权重较低。算法去使用这种特征的好处就是,语料容易获得无需标注。



2.位置信息。

在文本中,位置是一个非常具有价值的特征。例如:"小明打小张",和"小张打小明"是完全不一样的,在前在后的词权重也不一样。最大熵模型,或者贝叶斯模型等统计模型,是比较容易通过数据的训练学习到这一类特征的。当然我们也可以通过规则的算法来做硬识别,并打上标签。

一个词在文章不同位置得分会有所不同。例如,标题中出现的词会重要一些,出现在小标题中的词就要比出现在文章中的词重要。文章开头的词得分也会高不少。

在具体算法实现中,这个特征是应该被融合进去的,假如我们使用tfidf来训练词权重,我们可以给出现在标题的词一个大于1的系数,以增加它在本文中的重要程度。

3. 词频信息。

一个词在文章中出现的次数越多,我们可以简单的认为这个词越重要。也有一些语气词,助词等在所有文章中出现频率都不低但是却并不重要。这部分词可以用idf特征来消“消灭”掉。IDF逆文本频率指数(Inverse Document Frequency),通俗点说就是包含这个词的文章越多,这个指数越低。

例如一篇文章中反复出现的词会重要一些。但是呢例如“你们,我们” 这类词肯定经常在文档中出现,但是明显不重要。因此,哪怕这个词的tf很高,但是由于idf低,最后的tfidf值也并不高。



4.引用信息。

如果一个词,在相应领域的文章所提取出的关键词中,引用次数越高,就认为该词越重要。通常这个信息会使用一个简单的线性模型去学习出一个参数。如果没有足够的条件,也可以认为排定权值alpha。这类信息有个延伸就是专家文档。

5.专家文档信息。

根据引用信息我们知道,词语也是有出身的,出身好的词自然更重要。那么这个出身是怎么来的呢?其实就是优质的领域内文本,这种文本优质的确立不是通过机器学习算法,也不是通过规则来定的。很多时候来自于人为筛选的,因此这一类文章我们称作专家文档,在相应领域内有很强的认可性或者权威性。我们在训练模型时,例如 统计类模型诸如条件随机场模型,贝叶斯模型,或者是深度学习模型如lstm+attention的网络结构都可以使用这一类feature作为我们的一个先验超参数去干预我们的输入。



6.网络爬虫信息。

在我们确认了当前文章标题或者主题后,我们可以通过离线使用爬虫的形式去进行互联网搜索,并从搜索结果中提取词语,通过和我们文本词语的交集来判断哪些词是重要的。这种方法的难点就是在于写一个搜索爬虫,可以快速爬取相应的信息,虽然方法有些trick,但是往往就是这一类方法在工业界里为我们解决很多意想不到的case。而且,爬虫也可以为我们的模型提供源源坐88路车回家电视剧全集的最新数据,当然对数据清洗会有一定的要求。

7. 负采样信息。

上面提到的都是正采样。其实通过负采样,我们同样可以调整一些词的词权重。例如我们通过统计信息并经过算法计算后,发现,同类型的文章中,有些词设置了高权重但是推荐效果或者语义理解效果并不好,而其他样本中这些词的词权重设置低一些,反而效果不错。这时候,我们可以把那些效果不好的词作为我们当前文本的负采样,为模型设置一些惩罚参数。

在机器学习模型中,负采样往往是可以解决部分数据的瓶颈的,但是由于负例样本数量的缺失而不能很好的利用这一特征。

既然知道了词权重的出处和计算来源,我们可以在我们的文本编排中尽量少掉坑里:

1.减少使用助词和停用词(例如语气词,主语也不用使用太多),尽量提高核心词的合理出镜频率。

2.多使用小标题,并且把我们的核心词或者你希望被算法识别的关键词放到标题中。

3.尽量使用总分的写作方式,把重要词放在文本的段落开头,提高算法的采集和关注。

4.在写一些专业文中时,多使用领域内的优质词汇。减少把生僻词当成我们的核心词,88娱乐算法很可能识别不了。

5.不要跨过多领域。如果算法或者模型在处理文章时发现需要匹配到多种主题下,那么会出现很多词权重得分可能比较集中,这样就凸显不出文本的有效语义和特征了。

总结:

总的来说,词权重是自然语言处理过程中不可或缺的特征。在现在很多工业界模型的训练中,会发现我们也许仅仅计算了词向量,剩余参数全交给模型了。这种训练就忽略了很多先验信息,使得最后的训练的模型精度不够。

从非技术角度来说,我们也希望更多的人能理解词权重(term weight),让你更了解未来机器学习对语义理解的一些机制和方法。

(对机器学习,自然语言处理,聊天机器人,机器翻译感兴趣,可以关注我哦)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表