パスワードを忘れた? アカウント作成
15404891 journal
人工知能

yasuokaの日記: bert-base-thai-uposによるタイ語の形態素解析

日記 by yasuoka

8月27日の日記に続いて、bert-base-thai-uposも作ってみた。Geotrend/bert-base-th-casedをもとに、Universal DependenciesのUPOSでファインチューニングしたものだ。試しにGoogle Colaboratoryで動かしてみよう。

!pip install transformers
import torch
from transformers import AutoTokenizer,AutoModelForTokenClassification
tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/bert-base-thai-upos")
model=AutoModelForTokenClassification.from_pretrained("KoichiYasuoka/bert-base-thai-upos")
s="หลายหัวดีกว่าหัวเดียว"
t=tokenizer.tokenize(s)
p=[model.config.id2label[q] for q in torch.argmax(model(tokenizer.encode(s,return_tensors="pt"))[0],dim=2)[0].tolist()[1:-1]]
print(list(zip(t,p)))

「"หลายหัวดีกว่าหัวเดียว」を形態素解析してみたところ、私(安岡孝一)の手元では以下の結果になった。

[('ห', 'B-DET'), ('##ลา', 'I-DET'), ('##ย', 'I-DET'), ('##ห', 'B-NOUN'), ('##ัว', 'I-NOUN'), ('##ดี', 'ADJ'), ('##ก', 'B-ADP'), ('##ว่า', 'I-ADP'), ('##ห', 'B-NOUN'), ('##ัว', 'I-NOUN'), ('##เ', 'B-ADJ'), ('##ดี', 'I-ADJ'), ('##ย', 'I-ADJ'), ('##ว', 'I-ADJ')]

「##」でブツ切りになっていて読みにくいが、「หลาย」がDET、「หัว」がNOUN、「ดี」がADJ、「กว่า」がADP、「หัว」がNOUN、「เดียว」がADJになっているのがわかる。まあまあの精度ではあるのだが、実はトークナイザに多少問題があって、単語切りがうまくいかない場合もあるようだ。うーん、トークナイザごと鍛え直すしかないかなぁ。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...