🚀 多語言通用詞性標註模型(Flair默認模型)
本模型是 Flair 自帶的默認多語言通用詞性標註模型。它能夠對多種語言進行詞性標註,在多語言文本處理方面具有重要價值。
F1 分數:96.87(涵蓋英語、德語、法語、意大利語、荷蘭語、波蘭語、西班牙語、瑞典語、丹麥語、挪威語、芬蘭語和捷克語的 12 個通用依存樹庫)
該模型可預測以下通用詞性標籤:
標籤 |
含義 |
ADJ |
形容詞 |
ADP |
介詞 |
ADV |
副詞 |
AUX |
助動詞 |
CCONJ |
並列連詞 |
DET |
限定詞 |
INTJ |
感嘆詞 |
NOUN |
名詞 |
NUM |
數詞 |
PART |
助詞 |
PRON |
代詞 |
PROPN |
專有名詞 |
PUNCT |
標點符號 |
SCONJ |
從屬連詞 |
SYM |
符號 |
VERB |
動詞 |
X |
其他 |
本模型基於 Flair 嵌入 和 LSTM - CRF 構建。
🚀 快速開始
環境準備
需要安裝 Flair,可以使用以下命令進行安裝:
pip install flair
代碼示例
from flair.data import Sentence
from flair.models import SequenceTagger
tagger = SequenceTagger.load("flair/upos-multi")
sentence = Sentence("Ich liebe Berlin, as they say. ")
tagger.predict(sentence)
print(sentence)
print("The following POS tags are found:")
for token in sentence:
print(token.get_label("upos"))
上述代碼運行後將產生以下輸出:
Token[0]: "Ich" → PRON (0.9999)
Token[1]: "liebe" → VERB (0.9999)
Token[2]: "Berlin" → PROPN (0.9997)
Token[3]: "," → PUNCT (1.0)
Token[4]: "as" → SCONJ (0.9991)
Token[5]: "they" → PRON (0.9998)
Token[6]: "say" → VERB (0.9998)
Token[7]: "." → PUNCT (1.0)
在多語言句子 “Ich liebe Berlin, as they say” 中,“Ich” 和 “they” 被標記為 代詞(PRON),“liebe” 和 “say” 被標記為 動詞(VERB)。
🔧 技術細節
模型訓練腳本
以下是用於訓練此模型的 Flair 腳本:
from flair.data import MultiCorpus
from flair.datasets import UD_ENGLISH, UD_GERMAN, UD_FRENCH, UD_ITALIAN, UD_POLISH, UD_DUTCH, UD_CZECH, \
UD_DANISH, UD_SPANISH, UD_SWEDISH, UD_NORWEGIAN, UD_FINNISH
from flair.embeddings import StackedEmbeddings, FlairEmbeddings
corpus = MultiCorpus([
UD_ENGLISH(in_memory=False),
UD_GERMAN(in_memory=False),
UD_DUTCH(in_memory=False),
UD_FRENCH(in_memory=False),
UD_ITALIAN(in_memory=False),
UD_SPANISH(in_memory=False),
UD_POLISH(in_memory=False),
UD_CZECH(in_memory=False),
UD_DANISH(in_memory=False),
UD_SWEDISH(in_memory=False),
UD_NORWEGIAN(in_memory=False),
UD_FINNISH(in_memory=False),
])
tag_type = 'upos'
tag_dictionary = corpus.make_label_dictionary(label_type=tag_type)
embedding_types = [
FlairEmbeddings('multi-forward'),
FlairEmbeddings('multi-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,
use_crf=False)
from flair.trainers import ModelTrainer
trainer = ModelTrainer(tagger, corpus)
trainer.train('resources/taggers/upos-multi',
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 問題跟蹤器 中提交問題。