🚀 Flairによる英語の固有表現認識 (Ontonotesデフォルトモデル)
これは、Flairに付属する英語用の18クラスの固有表現認識(NER)モデルです。
F1スコア: 89.27 (Ontonotes)
以下の18種類のタグを予測します。
タグ |
意味 |
CARDINAL |
基数値 |
DATE |
日付値 |
EVENT |
イベント名 |
FAC |
建物名 |
GPE |
地理政治的なエンティティ |
LANGUAGE |
言語名 |
LAW |
法律名 |
LOC |
場所名 |
MONEY |
金額名 |
NORP |
所属関係 |
ORDINAL |
序数値 |
ORG |
組織名 |
PERCENT |
パーセント値 |
PERSON |
人名 |
PRODUCT |
製品名 |
QUANTITY |
数量値 |
TIME |
時間値 |
WORK_OF_ART |
芸術作品名 |
このモデルは、Flair埋め込みとLSTM-CRFに基づいています。
🚀 クイックスタート
✨ 主な機能
- 英語の18クラスの固有表現認識を行うことができます。
- Flairライブラリと連携して使用できます。
📦 インストール
このモデルを使用するには、Flair が必要です。以下のコマンドでインストールできます。
pip install flair
💻 使用例
基本的な使用法
from flair.data import Sentence
from flair.models import SequenceTagger
tagger = SequenceTagger.load("flair/ner-english-ontonotes")
sentence = Sentence("On September 1st George Washington won 1 dollar.")
tagger.predict(sentence)
print(sentence)
print('The following NER tags are found:')
for entity in sentence.get_spans('ner'):
print(entity)
このコードは以下の出力を生成します。
Span [2,3]: "September 1st" [− Labels: DATE (0.8824)]
Span [4,5]: "George Washington" [− Labels: PERSON (0.9604)]
Span [7,8]: "1 dollar" [− Labels: MONEY (0.9837)]
つまり、文 "On September 1st George Washington won 1 dollar." から、"September 1st"(日付としてラベル付け)、"George Washington"(人名としてラベル付け)、"1 dollar"(金額としてラベル付け)のエンティティが検出されます。
🔧 技術詳細
このモデルの学習には以下の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 = 'ner'
tag_dictionary = corpus.make_tag_dictionary(tag_type=tag_type)
embedding_types = [
WordEmbeddings('en-crawl'),
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/ner-english-ontonotes',
train_with_dev=True,
max_epochs=150)
📄 ライセンス
このモデルを使用する際には、以下の論文を引用してください。
@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の問題追跡ツールはこちらで利用できます。問題が発生した場合はこちらをご利用ください。