【AI_18日目】自然言語処理_3冊目
こんにちは投資ロウトです。
背景
AI開発ができるために自然言語処理について理解を深めていきます。
以下の記事のStep2として、「BERT・GPTモデルについての本を読む」3選が書かれているので、そちらをやっていきたいと思います。
マルチラベル文章分類
・マルチラベル分類・・・選択肢の中から複数のカテゴリーを選ぶ分類
・シングルラベル分類・・・選択肢を一つのみ選ぶ分類
・Multi-hotベクトル・・・コンピュータで処理しやすいように、文章が属すカテゴリー
text_list = [
'今日は仕事はうまくいったが、体調があまり良くない。',
'昨日は楽しかった。'
]
label_list = [
[1, 1],
[0, 1]
]
# データの符号化
encoding = tokenizer(
text_list,
padding='longest',
return_tensors='pt'
)
encoding = { k: v.cuda() for k, v in encoding.items() }
labels = torch.tensor(label_list).cuda()
# BERTへのデータを入力し、分類スコアを得る
with torch.no_grad():
output = bert_scml(**encoding)
scores = output.logits
↓エラー
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-19c3048c7efa> in <cell line: 23>()
21 with torch.no_grad():
22 output = bert_scml(**encoding)
---> 23 scores = output.logits
24
25 # スコアが正ならば、そのカテゴリーを選択する
AttributeError: 'dict' object has no attribute 'logits'
辞書のように以下でアクセスすればOK
scores = output['logits']
固有表現抽出
・固有表現抽出・・・文章から人名・組織名といった固有名詞、日付などの時間表現、金額の数値表現を抽出する自然言語処理の基礎的な技術。
・IREX
↓文字化けしており、何を書いているサイトか不明だった。
・拡張固有表現階層・・・米国のMUCで規定された固有表現 [Grishman1996]、 および、それを基に作成されたIREXの固有表現 [Sekine2000]を源流とし、 関根の150種類の拡張固有表現階層定義 [Sekine2002]を経て、 より幅広い固有表現のニーズに答えるべくして作成されたもの
・文字の正規化・・・コンピュータ上で半角・全角と同じ文字にもかかわらず、異なるものとして認識されるため、どちらかの文字に統一すること。
unicodedata.normalizeの関数で上記を実施する。
IO法・・・トークンが固有表現の一部かどうかで、タグを「I - (TYPE)」とするか、「O」とするか分ける方法
※「日米」が国名で抽出してしまう欠点を持っている
I・・・Inside
O・・・Outside
・固有表現抽出は与えられた文章をトークン化し、それぞれのトークンのラベルを予測する分類問題として扱うことができる。
・固有表現抽出の性能評価の指標
→適合率、再現率、F値
と短いですが、一旦以上で学習を区切りたいと思います。焦らずコツコツ自分のペースで頑張っていきたいと思います。ご精読ありがとうございました。
Discussion