pytorch nlp实战,pytorch nlp库
最先进的NLP
的一个非常简单的框架。由Zalando研究所开发。Flair简介:
一个功能强大的NLP库。
Flair允许您将最先进的自然语言处理(NLP)模型应用于您的文本,如命名实体识别(NER)、词性标注(PoS)、词义消歧和分类。
多种语言。
感谢Flair社区,我们支持快速增长的语言数量。现在我们还包括“一个模型,多种语言”标记,即单个模型,用于预测各种语言输入文本的词性或NER标记。
文本嵌入库。
Flair有一个简单的界面,允许您使用和组合不同的文本和文档嵌入,包括Flair嵌入
、BERT嵌入和我们提议的ELMo嵌入。
Pytorch NLP框架。
我们的框架直接构建在Pytorch上,让您可以轻松训练自己的模型,并使用Flair嵌入和类尝试新方法。与现有技术相比Flair在一系列NLP任务中优于以前最好的方法;
语言数据集Flair最佳命名实体识别英文Conll-03
93.09
(F1)92.22(Peters等人,2018)命名实体识别英文on Notes89.71
(F1)86.28(Chiu等人,2016)英文WNUT-1750.20
(F1)45.55(Aguilar等人,2018)英文WSJ97.85
97.64(Borchmann等人,2018)85.1(PolDeepNer)以下是如何使用Flair重现这些数字。您还可以在我们的文章中找到详细的评估和讨论:
用于序列标记的上下文字符串嵌入。艾伦阿克比克、邓肯布莱斯和罗兰沃尔格拉夫。2018年第27届计算语言学国际会议。
快速启动需求和安装(Windows 10 py torch==1.0 Python==3.6测试成功)。这个项目基于PyTorch 0.4和Python 3.6,因为方法签名和类型提示非常漂亮。如果没有Python 3.6,请先安装。然后,在您最喜欢的虚拟环境中,只需:
让我们对一个例句运行命名实体识别(NER)。你只需要创建一个句子,加载预先训练好的模型,用它来预测句子的标签:
从flair.data导入句子从flair.models导入序列Tagger#造句句子=句子(我爱柏林。)# loader tagger tagger=sequence tagger . load( ner )# runner over sentence tagger . predict(sentence)done!目前,句子中有实体的标注。打印句子,看看记号笔发现了什么。
Print(句子)print(找到以下ner标记:)#迭代实体并打印句子中的实体。Get _ spans (ner): print (entity)应该打印以下内容:
句子:“我爱柏林。”-4 tokens找到了以下ner标记:loc-span [3]: Berlin 教程我们提供了一组快速教程来帮助您开始使用该库:
教程1:基础知识教程2:标记文本教程3:使用Word嵌入教程4:使用BERT、ELMo和Flair嵌入教程5:使用文档嵌入教程6:加载自己的语料库教程7:训练自己的模型教程8:训练自己的Flair嵌入教程9:这些教程解释了基本的NLP类是如何工作的,如何加载预先训练好的模型来标记文本,如何用不同的单词或文档嵌入嵌入文本,以及如何训练。如果有任何不清楚的地方,请告诉我们。
还有一些很好的第三方文章和帖子解释了如何使用Flair:
如何使用Flair构建文本分类器如何使用Flair和Flask构建Dock图像引用微服务Flair的人才请在使用Flair时引用以下文章:
@inproceedings{akbik2018coling,title={用于序列标注的上下文字符串嵌入},作者={Akbik,Alan and Blythe,Duncan and Vollgraf,Roland},书名={{coling} 2018,第27届计算语言学国际会议},页数={1638-1649},年份={2018}}联系方式请将您的问题或意见发邮件至Alan Akbik。
感谢您有兴趣投稿!参与的方式有很多;从我们的贡献者指南开始,然后针对具体任务检查这些未解决的问题。
对于想要了解更多API的贡献者,我们建议克隆存储库并检查单元测试以获得如何调用方法的示例。几乎所有的类和方法都有记录,所以很容易找到适合代码的方法。
麻省理工学院许可证(麻省理工学院)
Flair在以下麻省理工学院许可证下授权:麻省理工学院许可证(麻省理工学院)版权2018 Zalando SE,https://tech.zalando.com。
在此,获得本软件和相关文档副本的任何人(“软件”)被授予不受限制地交易本软件的自由许可,包括但不限于使用、复制、修改和合并的权利。本软件的副本是根据以下条件发布、分发、再许可和/或出售的,并且允许提供它的人这样做:
上述版权声明和本许可声明应包含在本软件的所有副本或重要部分中。
本软件按“原样”提供,没有任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和不侵权的担保。在任何情况下,作者或版权所有者都不对由本软件或与本软件的使用或其他交易相关的任何索赔、损害或其他责任负责,无论是在合同、侵权或其他方面。软件。
代码可视化:这是一个很酷的代码进化可视化。
https://www.youtube.com/watch?v=PSP bad 9 mz 4xk
教程1: NLP基本类型这是本教程的第一部分,我们将在其中介绍本库使用的一些基本类型。
创建一个句子有两种类型的对象,即句子和令牌对象,它们是这个库的核心。ASentence保存一个文本句子,它基本上是一个列表标记。
让我们从句子开始,为一个例句创建一个对象。
#句子对象包含我们可能想要嵌入或标记的句子。数据导入句子#通过传递空格标记化字符串来生成句子对象句子=句子( the grass is green。))#打印对象以查看其中的内容print(句子)应该打印以下内容:
句子:“草是绿色的。”-5个标记打印输出告诉我们,这个句子由5个标记组成。您可以通过标记ID或索引来访问句子的标签:
#使用令牌id打印(sentence.get _ token (4)) #使用索引本身打印(sentence [3])在这两种情况下都应该打印。
令牌:4绿色该打印输出包括令牌ID(4)和令牌的词汇值(“绿色”)。也可以迭代一个句子中的所有标签。
对于句子中的token:print(token)应该打印:
代币:1绿色代币:2绿色代币:3绿色代币:4绿色代币:5。符号化在某些用例中,您可能没有将文本标记为已标记。在这种情况下,我们使用轻量级segtok库添加了一个简单的标记器。
Use_tokenizer当句子用未加密的字符串实例化时,只需使用此标志:
from flair.data import Sentence#通过传递一个未标记化的字符串和 use _ tokenizer flag Sentence=Sentence( The grass is green。Use _ tokenizer=true) #打印对象,看看里面有什么print(句子)这应该打印出来:
句子:“草是绿色的。”-5 tokens使用语言注释向token的字段添加标记,如条目、词性标记或命名实体标记。您可以通过指定标记类型和标记值来添加标记。在本例中,我们将“color”类型的NER标签添加到单词“green”中。这意味着我们已经将这个单词标记为颜色类型的实体。
#给句子句子[3]中的一个单词加一个标签add_tag(ner , color)#打印带有此类型的所有标记的句子打印(句子。to _ tagged _ string())这应该打印:
草是绿色的。每个标签都是类标签,其值旁边有一个表示置信度的分数。像这样打印:
来自flair.data导入Labeltag: Label=句子[3].get _ tag( ner )print(f {句子[3]} 被标记为{tag.value} ,置信度得分为{tag.score}“”)这应该打印:
"令牌:4绿色"被标记为"颜色",置信度为"1.0"我们的彩色标签得分为1.0,因为我们手动添加了它。如果我们的序列标记器预测了标签,则评分值将指示分类器置信度。
为句子添加标签a句子可以具有一个或多个标签,例如可以用于文本分类任务。例如,下面的示例显示了我们如何在句子中添加标签"运动",从而将其标记为属于体育类别。
法国是本届世界杯的冠军。)#给句子添加标签sentence.add_label(sports)#一个句子也可以属于多个类感觉。add _ labels([体育,世界杯])#你还可以在初始化句子的时候设置标签句子=句子(法国是当前的世界杯冠军标签=[体育,世界杯])标签也属于标签同类产品。所以,你可以像这样打印一个句子的标签:
法国是本届世界杯的冠军标签=[运动,世界杯])打印(句子)用于句子中的标签。标签:打印(标签)这应该打印:
体育(1.0)世界杯(1.0)这表明该句子属于这两个类,每个类的置信度得分为1.0。
下一个现在,让我们看看如何使用预先训练的模型标记您的文本。