🚀 Flair英文词性标注(快速模型)
这是随 Flair 一起发布的英文快速词性标注模型。它能有效解决英文文本中词性标注的问题,为自然语言处理任务提供准确的词性信息,提升相关处理的效率和准确性。
✨ 主要特性
- 高准确率:在Ontonotes数据集上的F1分数达到了 98.10。
- 细粒度标签:能够预测细粒度的词性标签。
- 基于先进技术:基于 Flair嵌入 和LSTM - CRF技术。
📦 安装指南
使用该模型需要安装 Flair,可以通过以下命令进行安装:
pip install flair
💻 使用示例
基础用法
from flair.data import Sentence
from flair.models import SequenceTagger
tagger = SequenceTagger.load("flair/pos-english-fast")
sentence = Sentence("I love Berlin.")
tagger.predict(sentence)
print(sentence)
print('The following NER tags are found:')
for entity in sentence.get_spans('pos'):
print(entity)
上述代码的输出结果如下:
Span [1]: "I" [− Labels: PRP (1.0)]
Span [2]: "love" [− Labels: VBP (0.9998)]
Span [3]: "Berlin" [− Labels: NNP (0.9999)]
Span [4]: "." [− Labels: . (0.9998)]
在句子 “I love Berlin” 中,单词 “I” 被标记为 代词 (PRP),“love” 被标记为 动词 (VBP),“Berlin” 被标记为 专有名词 (NNP)。
📚 详细文档
词性标签含义
标签 |
含义 |
ADD |
电子邮件 |
AFX |
词缀 |
CC |
并列连词 |
CD |
基数词 |
DT |
限定词 |
EX |
存在句中的 “there” |
FW |
外来词 |
HYPH |
连字符 |
IN |
介词或从属连词 |
JJ |
形容词 |
JJR |
形容词,比较级 |
JJS |
形容词,最高级 |
LS |
列表项标记 |
MD |
情态动词 |
NFP |
多余的标点符号 |
NN |
名词,单数或不可数 |
NNP |
专有名词,单数 |
NNPS |
专有名词,复数 |
NNS |
名词,复数 |
PDT |
前位限定词 |
POS |
所有格结尾 |
PRP |
人称代词 |
PRP$ |
物主代词 |
RB |
副词 |
RBR |
副词,比较级 |
RBS |
副词,最高级 |
RP |
小品词 |
SYM |
符号 |
TO |
“to” |
UH |
感叹词 |
VB |
动词,原形 |
VBD |
动词,过去式 |
VBG |
动词,动名词或现在分词 |
VBN |
动词,过去分词 |
VBP |
动词,非第三人称单数现在时 |
VBZ |
动词,第三人称单数现在时 |
WDT |
疑问限定词 |
WP |
疑问代词 |
WP$ |
所有格疑问代词 |
WRB |
疑问副词 |
XX |
未知 |
训练脚本
以下是用于训练该模型的Flair脚本:
from flair.data import Corpus
from flair.datasets import ColumnCorpus
from flair.embeddings import WordEmbeddings, StackedEmbeddings, FlairEmbeddings
corpus: Corpus = ColumnCorpus(
"resources/tasks/onto-ner",
column_format={0: "text", 1: "pos", 2: "upos", 3: "ner"},
tag_to_bioes="ner",
)
tag_type = 'pos'
tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)
embedding_types = [
FlairEmbeddings('news-forward'),
FlairEmbeddings('news-backward'),
]
embeddings = StackedEmbeddings(embeddings=embedding_types)
from flair.models import SequenceTagger
tagger = SequenceTagger(hidden_size=256,
embeddings=embeddings,
tag_dictionary=tag_dictionary,
tag_type=tag_type)
from flair.trainers import ModelTrainer
trainer = ModelTrainer(tagger, corpus)
trainer.train('resources/taggers/pos-english-fast',
train_with_dev=True,
max_epochs=150)
📄 许可证
文档中未提及相关许可证信息。
🔧 技术细节
该模型基于 Flair嵌入 和LSTM - CRF技术。Flair嵌入能够捕捉上下文信息,为词性标注提供更丰富的语义表示。LSTM - CRF则是一种常用的序列标注模型,能够有效处理序列数据中的依赖关系,从而提高词性标注的准确性。
📖 引用
使用该模型时,请引用以下论文:
@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}
}
⚠️ 重要提示
- Ontonotes语料库不随Flair一起提供,你需要自己下载并重新格式化为列格式。
💡 使用建议
- 在使用前确保已经正确安装了Flair库。
- 可以根据实际需求调整训练脚本中的参数,如
hidden_size
、max_epochs
等,以获得更好的性能。