第一句子大全,网罗天下好句子,好文章尽在本站!

用最新NLP库Flair做文本分类

时间:2011-06-24

它是一个被广泛应用的自然语言处理方法,在垃圾邮件过滤、情感分析、新闻稿件分类以及与许多其它业务相关的问题中发挥着重要作用

友情提示:本文共有 2558 个字,阅读大概需要 6 分钟。

介绍

文本分类是一种监督机器学习方法,用于将句子或文本文档归类为一个或多个已定义好的类别。它是一个被广泛应用的自然语言处理方法,在垃圾邮件过滤、情感分析、新闻稿件分类以及与许多其它业务相关的问题中发挥着重要作用。

目前绝大多数最先进的方法都依赖于一种被称为文本嵌入的技术。它将文本转换成高维空间中的数值表示方式。它可以将文档、语句、单词、字符(取决于我们所嵌入的形式)表示为这个高维空间中的一个向量。

Flair之所以对NLP来说是一个令人兴奋的消息,是因为Zalando Research最近发表的一篇论文《Contextual String Embeddings for Sequence Labelling(用于序列标注的上下文相关字符串的嵌入)》,其中涵盖了一种始终优于以前最先进方案的方法。该算法在Flair中得到了完整的支持和实现,可以用来构建文本分类器。

1、准备

安装Flair需要Python 3.6,如果你还没有,请点击这里查看安装向导。然后执行pip命令安装即可:

pip install flair

上面的命令将安装运行Flair所需的所有依赖包,当然也包括了PyTorch。

2、使用一个预训练的分类模型

最新的0.4版本包含了两个预训练的模型,还有一个基于IMDB数据集上训练的情感分析模型和“攻击性语言检测”模型(当前仅支持德语)。

使用、下载和存储模型都被整合到了一个单一的方法中,这使得使用预训练模型的整个过程都非常简单。

要使用情感分析模型,只需执行以下代码片段:

当第一次运行时,Flair将下载情感分析模型,默认情况下将其存储到home目录下的.flair子目录中,这大概得需要几分钟。

上面的代码首先加载必需的库,然后将情感分析模型加载到内存中(必要时先进行下载),接下来可以预测句子“Flair is pretty neat!”的情感数值,按0到1的区间赋值。最后命令的输出结果是:

就是这么简单!例如,现在你可以将上述代码合并在一个REST API中,并提供一个与Google的云自然语言API的情感分析类似的服务,当在有大量请求的生产环境中使用时,这种分析的成本将会非常的高。

3、训练一个自定义文本分类器

要训练一个自定义的文本分类器,我们首先需要一个标注过的数据集。Flair的分类数据集格式基于Facebook的FastText格式。格式要求在每行的开头定义一个或多个标签,以前缀__label__开头。格式如下:

在本文中,我们将利用Kaggle的Spam Detection数据集通过Flair构建一个垃圾/非垃圾的分类器。这个数据集比较适合我们的学习任务,因为它足够小,并且仅包含5572行的数据,可以在一个CPU上只花几分钟就可以完成一个模型的训练。

来自数据集中的标记为spam(垃圾邮件)或ham(非垃圾邮件)的SMS信息

3.1 预处理-构建数据集

我们首先从Kaggle上的这个链接下载数据集来获得spam.csv文件。然后,在与数据集相同的目录中,我们运行下面的预处理代码片段,该代码将执行一些预处理,并将数据集拆分为训练集、开发集和测试集三个部分。

确保安装了Pandas。如果还没有,请先运行命令:

上面的代码将从数据集中删除一些重复数据,并对其进行无序处理(随机化行),并按照80/10/10的比例将数据拆分为训练集、开发集和测试集。

如果运行成功,你将会得到FastText格式的三个数据文件:train.csv、test.csv和dev.csv,它们可以与Flair一起使用。

3.2 训练自定义文本分类模型

请在生成数据集的目录中运行以下代码片段用以训练模型:

第一次运行上述代码时,Flair将会自动下载需要的所有嵌入模型,这可能需要几分钟,然后接下来的整个培训过程还需要大约5分钟。

程序首先将所需的库和数据集加载到一个corpus对象中。

接下来,我们创建一个嵌入列表,包含两个Flair上下文的字符串嵌入和一个GloVe单词嵌入。然后将此列表作为文档嵌入对象的输入。堆叠和文档嵌入是Flair中最有趣的概念之一,提供了将不同的嵌入整合在一起的方法。你可以同时使用传统的单词嵌入(如GloVe, word2vec, ELMo)和Flair上下文的字符串嵌入。在上面的例子中,我们使用了一种基于LSTM(Long Short-Term Memory,长短期记忆网络)的方法,将单词和上下文的字符串嵌入结合起来以生成文档嵌入。想要了解更多,请点击这里。

最后,上述代码进行模型训练并生成了final-model.pt和best-model.pt两个文件,它们表示我们存储的训练模型。

3.3 用训练过的模型进行预测

我们现在可以从同一目录通过运行以下代码,使用导出的模型来生成预测结果:

这段代码会输出“[ham(1.0)]”,这意味着该模型100%确定我们的示例消息不是垃圾邮件。

与其它框架相比表现如何?

与Facebook的FastText甚至谷歌的AutoML自然语言平台不同,使用Flair进行文本分类仍然是一项底层的工作。我们可以通过设置诸如学习率、批量大小、退火因子(anneal factor)、损失函数、优化选择等参数来完全控制文本嵌入和训练的方式…为了获得最佳表现,需要调整这些超参数。Flair为我们提供了一个有名的超参数调优库Hyperopt的封装器,我们可以使用它来对超参数进行调优以获得最佳的性能。

在本文中,为了简单起见,我们使用了默认的超参数。在大多数默认参数下,我们的Flair模型在10个训练周期后获得了0.973的f1-score。

为了进行对比,我们使用FastText和AutoML自然语言平台训练了一个文本分类模型。首先我们使用默认参数运行FastText,并获得了0.883的f1-score,这意味着模型在很大程度上优于FastText。然而,FastText只需要几秒钟的训练时间,而我们训练的Flair模型则需要5分钟。

我们将结果与在谷歌的AutoML自然语言平台上获得的结果进行了比较。平台首先需要20分钟来解析数据集。之后,我们开始了训练过程,这几乎花了3个小时完成,但却获得了99.211的f1-score——这比我们自己训练的模型稍微好一点。

本文如果对你有帮助,请点赞收藏《用最新NLP库Flair做文本分类》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
基于Bert和通用句子编码的Spark

基于Bert和通用句子编码的Spark

自然语言处理(NLP)是许多数据科学系统中必须理解或推理文本的关键组成部分。常见的用例包括文本分类、问答、释义或总结、情感分析、自然语言BI、语言建模和消歧。NLP在越来越多的人工智能应用中是越来越重要。如果你正...

2022-12-06 #经典句子

2021最新文本综述:从浅层到深度学习(附PDF下载)

2021最新文本综述:从浅层到深度学习(附PDF下载)

...rVisionGzq」计算机视觉研究院专栏作者:Edison_G从1961-2021年文本分类自浅入深的发展:1、摘要文本分类是自然语言处理中最基本的任务。由于深度学习的空前成功,过去十年中该领域的研究激增。已有的文献提出了许多方法,数...

2023-07-31 #经典句子

从语言学到深度学习NLP 一文概述自然语言处理

从语言学到深度学习NLP 一文概述自然语言处理

...即自然语言理解和自然语言生成,它们演化为理解和生成文本的任务(图 1)。图 1:NLP 的粗分类语言学是语言的科学,它包括代表声音的音系学(Phonology)、代表构词法的词态学(Morphology)、代表语句结构的句法学(Syntax)、...

2010-02-15 #经典句子

FAIR 最新论文:一种不需要训练就能探索句子分类的随机编码器

FAIR 最新论文:一种不需要训练就能探索句子分类的随机编码器

...的一个热门话题,因为它比单独使用单词嵌入更容易进行文本分类。鉴于句子表达研究的快速进展,建立坚实的基线是很重要的。我们开始使用当前最先进的方法来确定有哪些收获,而不是采用随机的方法,这些随机的方法只结...

2023-01-28 #经典句子

NLP之文本分类:「Tf

NLP之文本分类:「Tf

字幕组双语原文:NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较英语原文:Text Classification with NLP: Tf-Idf vs Word2Vec vs BERT翻译:雷锋字幕组(关山、wiige)概要在本文中,我将使用NLP和Python来解释3种不同的文本多分类策略:...

2023-01-22 #经典句子

百度NLP主任架构师全面讲解百度语义表示技术及最新进展

百度NLP主任架构师全面讲解百度语义表示技术及最新进展

...么才能高效训练规模为1T的语料?如何构建大规模分布式文本计算?此外,算法上我们也有一些研究,比如,如何在一百万超大规模的词表里完成Softmax分类?我们通过一些策略和技术,做成启发式Hierarchical Softmax的方法,从而有...

2023-12-23 #经典句子

人工智能与自然语言处理概述:AI三大阶段 NLP关键应用领域

人工智能与自然语言处理概述:AI三大阶段 NLP关键应用领域

...差距。下面是三个不同等级的语言学分析:句法学:给定文本的哪部分是语法正确的。语义学:给定文本的含义是什么?语用学:文本的目的是什么?NLP 处理语言的不同方面,例如:音韵学:指代语言中发音的系统化组织。词...

2023-11-06 #经典句子

首篇NLP图神经网络综述来了!127页文档让你全面了解这个领域

首篇NLP图神经网络综述来了!127页文档让你全面了解这个领域

...为处理NLP各种任务的主要方法。由于用图(graph)来表征文本可以更好的获取文本的结构信息,且随着火热的图神经网络的兴起,各种各样的NLP问题开始用图结构的形式来表示和学习。因此,为大量的NLP任务开发新的图深度学习...

2023-07-08 #经典句子