基于fasttext算法的文本分类设计与实现

 2022-01-17 11:01

论文总字数:18975字

目 录

1 绪论 1

1.1研究背景与意义 1

1.2研究内容 1

2 Word2vec算法 2

2.1word2vec的产生及意义 2

2.2word2vec的模型架构 3

2.2.1Skip-Gram模型 3

2.2.2CBOW模型 3

2.3 CBOW模型 5

2.3.1模型架构 5

2.3.2前向传播 6

2.3.3反向传播学习权重矩阵 6

2.4本章小结 7

3 Fasttext思想 8

3.1预备知识 8

3.1.1BOW模型 8

3.1.2霍夫曼树数据结构 8

3.1.3Huffman编码 11

3.2fasttext算法 12

3.2.1 fasttext模型架构 12

3.2.2分层softmax 14

3.2.3N-gram特征 15

3.3本章小结 16

4Fasttext算法实现 16

4.1实验环境介绍及模型搭建 16

4.2实验过程 17

4.2.1处理文本数据 17

4.2.2利用fasttext进行分类 17

4.3实验结果及分析 18

4.4本章小结 19

5总结与展望 20

5.1总结 20

5.2展望 20

参考文献 20

致谢 22

基于fasttext算法的文本分类设计与实现

柴同庆

,China

Abstract:In mid-to-late 2016, Facebook's Tomas Mikolov, the open source fastfast algorithm, caused an uproar in the industry. Fasttext algorithm is very fast in processing large data sets. It provides a simple and efficient method for text classification and characterization learning. The performance is faster than shoulder deep learning. This article will specifically study the fasttext algorithm, understand its model architecture, and implement the text classification of the fasttext algorithm. In the end, the application of fasttext algorithm will be introduced in detail.

Key words:Natural Language; Fast; Text Classification

1 绪论

1.1研究背景与意义

如今的社会发展非常快,人与人之间的交流十分方便,通过网络就直接可以聊天、购物、打车。随着这些而来的就是各类数据,即大数据。大数据,字面意思,也就是Big data。面对这些非常大的数据集,对数据进行处理的速度要求也越来越快。

人们日常进行交流时使用的就是各自的语言。而在自然界中,目前只有人类是拥有用语言进行交流的能力的。与此同时,目前的人工智能也都是在语言的基础上进行开发的。要想实现人工智能,就需要人与计算机进行交流,这个用来交流的桥梁就是自然语言。

随着大数据时代的到来,人工智能这一领域代表的新技术正在不断的影响到各行各业的发展,同时也在不停的改变着我们正常人的生活,最直接的表现就是数据的增长。以前,数据的存储以G为单位就已经很大了,现在的话,需要以T为单位。正是由于这样数据爆炸的情况,用自然语言来处理数据就变得十分重要了。

自然语言处理[1],也就是业界人所说的NLP技术,它是以自然语言作为基础,来对数据进行处理。在自然语言处理中,对文本进行分类[2]是其中的一项非常重要的工作,这项技术在目前已经得到了很大的运用:比如在网络上搜索东西,查询相关信息,对文本文档进行分类等等。基于此,基于神经网络的模型非常流行,但是随着大数据时代的到来,在处理非常大的数据集时,这些模型训练和测试的速度相对来说比较慢。

在2013年,各种新技术不断兴起的那一年,Google实验室的Tomas Mikolov联合了他的同事提出了了一种Word2vec算法[3],这个算法在当时非常先进,能够用非常快的速度来对数据进行处理。过了3年,托马斯之前的基础上,进行了改进,使之专注于文本分类,由此提出了一种新的Fasttext算法[4],因为这个算法的先进理念,现在在很多场景都有了运用。

1.2研究内容

Fasttext算法是一个专注于处理词向量的文本分类工具[5],在2016年,被上传到了GITHUB上。目前它主要用来处理带有监督的文本分类问题,比如说处理新闻文本。它是一种非常简单但是效率非常高的文本分类和词向量学习的方法,但是性能非常好,甚至能比得上深度学习。而它的速度,从fasttext这个名字当中就可以看出,这是非常快的。

Fasttext作为一种非常新的算法,它将NLP和机器学习中的优势结合到了一起,取长补短。它利用袋装词以及N-gram特征来文本中的语句进行处理,同时利用其他字的信息,将它们的特征隐藏,从而让它们在不同的类别间分享信息。与此同时,还采用了分层softmax来进一步加快运算的速度,从而缩短时间。

前面提到的概念被应用到了两个不同的工作:带监督学习的高效文本分类任务;无监督学习的表达学习词向量[6]

举个例子:人能理解“父亲”、“母亲”、“儿子”、“女儿”这些词表示的含义,fasttext经过对这些词语进行处理,得到一些能够表示这些含义的数值,同时它会把这些数值存储在相关的文档中。然后,假设一个程序提出了一个请求,假如说“我儿子在干嘛”,fastext能够立刻在存储的文档中开始查找,同时能够理解这个问题想要知道的是关于儿子的。

本文将对fasttext算法进行全面的解读,包括fasttext算法的前身word2vec算法,fasttext算法在word2vec算法的基础做出了哪些改进,fasttext算法的核心内容,模型架构等。与此同时,还会讲解一些基础知识,方便对fasttext算法进行理解。在对fasttext算法理解的基础上,将会用fasttext算法的基础上进行实验,看看效果如何,同时将对实验结果进行进一步的探讨。同时,介绍一些fasttext算法最新的应用场景。

2 Word2vec算法

为了能够更加容易地了解fasttext算法,下面将对fasttext算法的前身--word2vec算法进行讲解。Word2vec算法也是由之前提到过的学者Tomas Mikolov提出,这位学者专注于自然语言的领域已经很多年,他的理念异于常人,领先当前很多水平。下面将对word2vec算法进行讲解。

Word2vec算法采用了连续的词袋模型和跳跃的词袋模型这两种不同的模型,将目标词语作为输入,然后映射到一个空间坐标系中,将产生的数值向量输出。它采用的就是神经网络。换句话说,就是把我们人类的语言,变成计算机能够理解的数字,也就是把一段文字转化为一个数值类型的向量[7]

2.1word2vec的产生及意义

随着科技的快速发展,文字、语音、图像等非结构化数据的研究也越来越深入,必然会出现word2vec或者与其类似的算法。特别是分析巨大文本数据时,就肯定要出现可以让计算机读懂文字意思的方法[8],把文字转化为数字直接又高效;所以说,word2vec算法的出现就是为了把文本映射到对应的数值空间,然后方便人类进行研究。

上下文之间的逻辑上的联系是语言最明显的一个特征,比如中文。在中文中,词与词之间的组合可以变成一个词语,词语与词语或字之间组合可以组合成句子,句子与句子构成一篇文章。假如将语句中的文字顺序打乱,那么我们的阅读将会出现很大的麻烦。例如下面两个句子:

1:“当他穿过地底深处的那道门时,她也看见了,并且感觉到爬行者的探测器官消失了,而它整个身体也跟随他一起隐入黑暗之中。随着一阵轻微的地震,隧道的侧壁晃了两下,然后再次静止下来。她知道,虽然不可能逆转,但局长说得对:改变是有可能的,总管在方程式里增加或减去了一项,只是这方程太复杂,没人能够完全理解。

2:“他当地底深处的那道门穿过时,看了她了也,感觉并且到者爬行的探测器官了失消,一起黑暗隐入之中整个身体而他跟随也他。一阵地震的轻微随着,下两晃了隧道的侧壁,然后静止再次下来。知道她,逆转不可能虽然,局长对得说但:有可能的是变改,管总在方程式里减加或增去了项一,是只这方程杂复太,能够全完解理没人。”

这两段话,前一段是正确的文字顺序,读着很通顺,也很容易理解其中的意思,但是后一段就完全让人摸不着头脑了。看到这里的话,我们能够看出语言的逻辑性以及上下文的正确顺序对一段话的重要性。在此引入一个叫做语言模型的概念。这个模型的目的就是为了经过训练来得到一个句子出现的概率。假如某个句子X由y个词1~y,那这个句子X会出现的概率应该是等于P(1,2,…,y),利用条件概率的公式进行计算,会得到下面的公式(1),如下:

P(X)=P(1,2,…,y)=P(1)P(2│1)…P(y|1,2,…,(y−1);

也就是说,前面的y−1个词决定了第y个词出现的概率。当y的值越来越大时,P(y│1,2,…,(y−1))的计算会十分费事甚至会出现没办法预算的情况,因此产生了一种二元的模型,这个模型叫做马尔科夫假设。马尔科夫假设的解释就是说,任意一个词,它的出现是由前面的词决定的。根据这个定理,上面的公式能够直接等价成下面的公式(2)的方程:

P(X)=P(1)P(2│1)…P(y|(y−1))。

上面提到的语言模型[9]就是为了计算出句子,也就是从词1到词2在整个句子中的概率才会出现的。假定将某个语言模型设为X,然后用word2vec算法对这个语言模型进行训练,训练模型的目的不是为了考察这个模型有没有瑕疵,而是为了得到训练这个模型时产生的数值,这个得到的数值就可以用来作为神经网络的权重参数放在word2vec中。这就就能用这些得到的参数来代替这个句子X。前文提到的词向量就是用这些得到参数组成,word2vec算法最终会输出这些词向量。

在大批量的文本语句材料中,word2vec用一种没有监督的方法来学习理解语句想要表达的信息。通常在文本分类时,word2vec算法通过向量之间的距离判断目标归属同一类的可能性。比如“人类”和“人”是近义词,但是“人类”和“老虎”的意思就差别很大了。所以在由word2vec构造的这个由数值组成的空间中,“人类”和“人”这两个近义词之间的距离很近,但是“人类”和“老虎”这两个非近义词就会隔的很远。

2.2word2vec的模型架构

通过考察前文与后文的相关程度,word2vec算法产生了两种不同的模型:Skip-Gram模型和CBOW模型[10]

2.2.1Skip-Gram模型

Skip-gram模型,是一种很常用的通过高质量矢量来对非结构化文本数据中词语进行有效表达的方法。这个模型与大多数以前用于学习单词向量的神经网络体系结构不同,训练跳跃模型的时候不会利用密集矩阵乘法,见下图1:

剩余内容已隐藏,请支付后下载全文,论文总字数:18975字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;