Flair 0.6 Tutorial 4: 総ての単語埋め込みのリスト (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/27/2020 (0.6.1)
* 本ページは、Flair ドキュメントの以下のページを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
- Windows PC のブラウザからご参加が可能です。スマートデバイスもご利用可能です。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション |
E-Mail:sales-info@classcat.com ; WebSite: https://www.classcat.com/ |
Facebook: https://www.facebook.com/ClassCatJP/ |
Tutorial 4: 総ての単語埋め込みのリスト
これはチュートリアルというよりも、むしろ現在 Flair でサポートする総ての埋め込みのリストです。このライブラリの基底型に加えて標準的な単語埋め込みに精通していることを仮定しています、特に StackedEmbeddings クラスです。
概要
総ての単語埋め込みクラスは TokenEmbeddings クラスから継承して embed() メソッドを呼び出します、これは貴方のテキストを埋め込むために呼び出す必要があります。これは Flair の殆どのユーザのためには、様々な埋め込みの複雑さはこのインターフェイスの後ろに隠れたままであることを意味します。必要な埋め込みクラスを単純にインスタンス化してテキストを埋め込むために embed() メソッドを呼び出します。
以下の単語埋め込みが現在サポートされています :
クラス | タイプ | ペーパー |
BytePairEmbeddings | 部分単語レベル 単語埋め込み | Heinzerling and Strube (2018) |
CharacterEmbeddings | Task-trained 単語の文字レベル埋め込み | Lample et al. (2016) |
ELMoEmbeddings | Contextualized 単語レベル埋め込み | Peters et al. (2018) |
FastTextEmbeddings | 単語埋め込み with 部分単語特徴 | Bojanowski et al. (2017) |
FlairEmbeddings | Contextualized 文字レベル埋め込み | Akbik et al. (2018) |
OneHotEmbeddings | テキスト or タグの標準的な one-hot 埋め込み | – |
PooledFlairEmbeddings | Pooled variant of FlairEmbeddings | Akbik et al. (2019) |
TransformerWordEmbeddings | 事前訓練トランスフォーマーからの埋め込み (BERT, XLM, GPT, RoBERTa, XLNet, DistilBERT etc.) | Devlin et al. (2018), Radford et al. (2018), Liu et al. (2019), Dai et al. (2019), Yang et al. (2019), Lample and Conneau (2019) |
WordEmbeddings | 古典的単語埋め込み |
BERT と Flair を結合する
Flair, ELMo, BERT と古典的単語埋め込みを非常に容易に混合して適合させることができます。貴方が行なう必要がある総ては結合したい各埋め込みをインスタンス化してそれらを StackedEmbedding で利用することです。
例えば、hyper-パワフルな他言語ダウンストリーム・タスク・モデルを訓練するために他言語 Flair と BERT 埋め込みを結合することを望むとします。最初に、結合したい埋め込みをインスタンス化します :
from flair.embeddings import FlairEmbeddings, TransformerWordEmbeddings # init Flair embeddings flair_forward_embedding = FlairEmbeddings('multi-forward') flair_backward_embedding = FlairEmbeddings('multi-backward') # init multilingual BERT bert_embedding = TransformerWordEmbeddings('bert-base-multilingual-cased')
今は StackedEmbeddings クラスをインスタンス化してそれにこれら 3 つの埋め込みを含むリストを渡します。
from flair.embeddings import StackedEmbeddings # now create the StackedEmbedding object that combines all embeddings stacked_embeddings = StackedEmbeddings( embeddings=[flair_forward_embedding, flair_backward_embedding, bert_embedding])
That’s it! 今はこの埋め込みを他の総ての埋め込みのように利用します、i.e. 貴方のセンテンス(s) に渡り embed() メソッドを呼び出します。
sentence = Sentence('The grass is green .') # just embed a sentence using the StackedEmbedding as you would with any single embedding. stacked_embeddings.embed(sentence) # now check out the embedded tokens. for token in sentence: print(token) print(token.embedding)
単語は今では 3 つの異なる埋め込みの結合を使用して埋め込まれます。これは結果としての埋め込みベクトルは依然として単一 PyTorch ベクトルであることを意味します。
以上