一个非常简单的最新nlp框架

flair的Python项目详细描述


alt text

pypi versiongithub issues欢迎捐款license:mittravis

一个非常简单的框架,用于最先进的nlp。由Zalando Research开发


才能是:

  • 一个强大的NLP库。Flair允许您应用我们最先进的自然语言处理(NLP) 文本模型,如命名实体识别(NER)、词性标注(POS)。 词义消歧和分类。

  • 多语。多亏了Flair社区,我们支持的语言数量迅速增长。我们现在还包括 '一个模型,多种语言'标记,即预测各种语言输入文本的POS或NER标记的单个模型。

  • 文本嵌入库。flair有简单的界面,允许您使用和组合不同的单词和 文档嵌入,包括我们提议的flair嵌入,bert嵌入和elmo嵌入。

  • Pythorch NLP框架。我们的框架直接建立在Pythorch上,使得 训练自己的模型,并使用flair嵌入和类尝试新方法。

现在请访问0.4.2版!

与最新技术的比较

flair在一系列nlp任务上优于以前的最佳方法:

<表><广告>任务语言 数据集天赋 以前最好的< /广告><正文>命名实体识别英语CONLL-0393.18(F1)92.22(彼得斯等人,2018年)命名实体识别英语注释89.3(F1)86.28(Chiu等人,2016年)新兴实体检测英语Wnut-1749.49(F1)45.55(Aguilar等人,2018年)词性标注英语 《华尔街日报》< /TD>97.8597.64(choi,2016年)分块英语CONLL-200096.72(F1)96.36(彼得斯等人,2017年)命名实体识别德语CONLL-0388.27(F1)78.76(Lample等人,2016年)命名实体识别德语德国84.65(F1)79.08(h_nig等人,2014年)命名实体识别荷兰语CONLL-0390.44(F1)81.74(Lample等人,2016年)命名实体识别波兰语Poleval-2018年86.6(F1)
(Borchmann等人,2018年)85.1(poldeepner)

下面是如何使用flair重现这些数字。您还可以在我们的论文中找到详细的评估和讨论:

快速启动

要求和安装

该项目基于pytorch 1.1+和python 3.6+,因为方法签名和类型提示非常漂亮。 如果没有Python3.6,请先安装它。这里是ubuntu 16.04的方法。 然后,在您最喜欢的虚拟环境中,只需执行以下操作:

pip install flair

示例用法

让我们对一个示例语句运行命名实体识别(ner)。你只需要做一个句子,加载 一个预先训练的模型,并用它来预测句子的标记:

fromflair.dataimportSentencefromflair.modelsimportSequenceTagger# make a sentencesentence=Sentence('I love Berlin .')# load the NER taggertagger=SequenceTagger.load('ner')# run NER over sentencetagger.predict(sentence)
完成了!语句现在有实体注释。打印句子以查看标记器找到了什么。

print(sentence)print('The following NER tags are found:')# iterate over entities and printforentityinsentence.get_spans('ner'):print(entity)

这应该打印:

Sentence: "I love Berlin ." - 4 TokensThe following NER tags are found: LOC-span [3]: "Berlin"

教程

我们提供一套快速教程,帮助您开始使用库:

这些教程解释了基本NLP类的工作原理,以及如何加载预先训练的模型来标记 文本,如何用不同的单词或文档嵌入文本,以及如何训练自己的文本 语言模型、序列标签模型和文本分类模型。如果有不清楚的地方,请告诉我们。

还有一些好的第三方文章和帖子说明了如何使用天赋:

引用天赋

使用flair时,请引用以下文章:

@inproceedings{akbik2018coling,
  title={Contextual String Embeddings for Sequence Labeling},
  author={Akbik, Alan and Blythe, Duncan and Vollgraf, Roland},
  booktitle = {{COLING} 2018, 27th International Conference on Computational Linguistics},
  pages     = {1638--1649},
  year      = {2018}
}

如果您使用flair嵌入的池版本(pooled flair embeddings),请引用:

@inproceedings{akbik2019naacl,
  title={Pooled Contextualized Embeddings for Named Entity Recognition},
  author={Akbik, Alan and Bergmann, Tanja and Vollgraf, Roland},
  booktitle = {{NAACL} 2019, 2019 Annual Conference of the North American Chapter of the Association for Computational Linguistics},
  pages     = {724–728},
  year      = {2019}
}

联系人

请将您的问题或意见通过电子邮件发送到alan akbik

贡献

感谢您对贡献的兴趣!参与的方式有很多; 从我们的贡献者指南开始,然后 查看这些打开的问题以了解特定任务。

对于希望深入了解api的贡献者,我们建议克隆存储库并签出单元 测试如何调用方法的示例。几乎所有的类和方法都有文档记录,所以要找到解决方法 希望代码应该很简单。

在本地运行单元测试

您需要pipenv来完成此操作:

pipenv install --dev && pipenv shell
pytest tests/

要运行集成测试,请执行:

pytest --runintegration tests/

集成测试将训练小型模型。 之后,将加载经过训练的模型进行预测。

要运行慢速测试,例如加载和使用flair提供的嵌入,您应该执行:

pytest --runslow tests/

代码样式

为了确保标准化的代码样式,我们使用格式化程序黑色。 如果您的代码格式不正确,travis将无法生成。

如果要在每次提交时自动格式化代码,可以使用预提交。 只需通过pip install pre commit安装它,并在根文件夹中执行pre commit install。 这将向存储库添加一个钩子,该钩子将在每次提交时重新格式化文件。

如果要手动设置,请安装黑色viapip安装黑色。 要重新格式化文件,请执行黑色。

许可证

麻省理工学院许可证(MIT)

Flair是根据以下麻省理工学院许可证获得许可的:麻省理工学院许可证(麻省理工学院)版权所有©2018 Zalando SE,https://tech.zalando.com

兹免费授予获得本软件及相关文档文件(以下简称"软件")副本的任何人使用本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再授权的权利。,和/或出售软件的副本,并允许向其提供软件的人员这样做,但须遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

本软件按"原样"提供,不作任何形式的明示或默示保证,包括但不限于适销性保证、特定用途适用性保证和非侵权性保证。在任何情况下,无论是在合同、侵权或其他诉讼中,作者或版权所有人都不对任何索赔、损害赔偿或其他责任负责,这些索赔、损害赔偿或其他责任是由软件或软件的使用或其他交易引起的、由软件引起的或与之相关的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用运行时从JAVA运行openssl命令?   不使用线程安全类(如AtomicInteger和SynchronizedList)的java ProducerConsumer问题   匹配字符串的java模式   在java中使用泛型接口作为返回类型   java将可能具有序列化JSON值的hashmap作为节点添加到JSON字符串中   Eclipse无法从Java8流推断正确的类型   java无法了解标准JButton的大小   java我能用一个循环优化这个函数吗(在第一种方法中)?   Apache CXF中基于WebSocket的java SOAP?   java想要运行奇偶和求和三步   矩阵上随机元素的java集值   java布尔相等:0==a,操作数顺序重要吗?   java Eclipse不会退出我的插件   java如何在spring的SOAP拦截器中获取HttpServletRequest和HttpServletResponse