更多实时更新的个人学习笔记分享,请关注:
知乎:https://www.zhihu.com/people/yuquanle/columns
微信订阅号:AI小白入门
ID: StudyForAI

<center> </center>

Flair简介

  • Flair是最近开源的一个基于Pytorch的NLP框架,据官方github介绍,它具有以下特点:

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

  • 文本嵌入库。 Flair具有简单的界面,允许您使用和组合不同的单词和文档嵌入,包括作者提出的上下文字符串嵌入(文章:COLING2018-Contextual String Embeddings for Sequence Labeling)。

Pytorch NLP框架。 我们的框架直接在Pytorch上构建,使您可以轻松地训练自己的模型,并使用Flair嵌入和类来尝试新方法。

Github地址:https://github.com/zalandoresearch/flair

作者测试的结果:

作者也提供了不错的教程:

接下来我们一起来看看Flair的使用方法

我们可以通过load()方法来选择加载的预训练模型。 目前,提供以下预先训练的模型:

Tutorial 1: 基本类型

安装环境:

  • 官网说目前对linux支持较好,以下为我在winodw上测试环境

  • windows 10

  • PyTorch 0.4+

  • Python 3.6+

  • pip install flair

这个库包含两种类型:Sentence和Token, Sentence类型包含我们想要处理的一个句,是Token类型的集合

from flair.data import Sentence
sentence = Sentence('The grass is green .')

输出显示这个句子由5个Token组成

print(sentence)

Sentence: "The grass is green ." - 5 Tokens

我们可以通过Token ID或其索引访问句子的Token:

# 使用 token id
print(sentence.get_token(4))
# 使用索引
print(sentence[3])


Token: 4 green
Token: 4 green

# 迭代输出token
for token in sentence:
    print(token)


Token: 1 The
Token: 2 grass
Token: 3 is
Token: 4 green
Token: 5 .

Tokenization:一些情况下,文本未Tokenization

from flair.data import Sentence
# 设置use_tokenizer参数 
sentence = Sentence('The grass is green.', use_tokenizer=True)
print(sentence)

Sentence: "The grass is green ." - 5 Tokens

Adding Tags to Tokens(为token打标签)

token具有用于语言注释的字段,如lemmas、词性标记或命名实体标记。可以通过指定标签类型和标签值来添加标签。

# 给句子中某个词加标签
sentence[3].add_tag('ner', 'color')
# 我们可以看到,输出green后面带有命名实体标签'color'
print(sentence.to_tagged_string())

The grass is green <color> .

Adding Labels to Sentences(给句子打标签)

句子可以具有一个或多个标签,例如,这些标签可用于文本分类任务。

sentence = Sentence('France is the current world cup winner.')
# 给句子增加一个sports标签
sentence.add_label('sports')
print(sentence.labels)

[sports (1.0)]

# 给句子增加多个标签
sentence = Sentence('France is the current world cup winner.')
sentence.add_labels(['sports', 'world cup'])
print(sentence.labels)

[sports (1.0), world cup (1.0)]


另外,代码我已经上传github:https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/FlairDemo1.ipynb