🚀 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
等,以獲得更好的性能。