0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIAdvent Calendar 2024

Day 14

タイ語係り受け解析モデルLlama-3.2-1B-thai-ud-causalリリース

Posted at

Llama-3.2-1B」が英語・ドイツ語・フランス語・イタリア語・ポルトガル語・ヒンディー語・スペイン語・タイ語をサポートしているというので、タイ語係り受け解析モデル「Llama-3.2-1B-thai-ud-causal」を試作してみた。Google Colaboratoryで動かしてみよう。

!pip install transformers deplacy
from transformers import pipeline
nlp=pipeline("universal-dependencies","KoichiYasuoka/Llama-3.2-1B-thai-ud-causal",trust_remote_code=True)
doc=nlp("แม่อย่าเก็บไว้คนเดียว")
import deplacy
deplacy.serve(doc,port=None)

แม่อย่าเก็บไว้คนเดียว」を係り受け解析してみたところ、私(安岡孝一)の手元では、以下の結果が出力された。

# text = แม่อย่าเก็บไว้คนเดียว
1	แม่	_	NOUN	_	_	3	nsubj	_	SpaceAfter=No
2	อย่า	_	AUX	_	_	3	aux	_	SpaceAfter=No
3	เก็บ	_	VERB	_	_	0	root	_	SpaceAfter=No
4	ไว้	_	ADV	_	_	3	advmod	_	SpaceAfter=No
5	คน	_	NOUN	_	_	3	obl	_	SpaceAfter=No
6	เดียว	_	NUM	_	_	5	nummod	_	SpaceAfter=No

thai.png

惜しい。「แม่」へのリンクはnsubj(主語)ではなく、vocative(呼称語)が正しい。それ以外は、正しく解析されているようだ。ただし「Llama-3.2-1B」のトークナイザは、タイ文字クラスター(คลัสเตอร์อักษรไทย)すら無視していたので、「Llama-3.2-1B-thai-ud-causal」ではトークナイザの入れ替えをおこなった。トークナイザの入れ替えをおこなった場合とおこなわなかった場合について、9月12日の記事の手法で、係り受け解析の「精度」を較べてみよう。Google Colaboratory (GPU版)だと、こんな感じ。

!pip install transformers
mdl="KoichiYasuoka/Llama-3.2-1B-thai-ud-causal"
import os,sys,subprocess
from transformers import pipeline
url="https://github.com/nlp-chula/TUD"
f=os.path.join(os.path.basename(url),"TUD","test.conllu")
os.system(f"test -f {f} || git clone --depth=1 {url}")
url="https://universaldependencies.org/conll18/conll18_ud_eval.py"
c=os.path.basename(url)
os.system(f"test -f {c} || curl -LO {url}")
with open(f,"r",encoding="utf-8") as r:
  s=r.read()
nlp=pipeline("universal-dependencies",mdl,trust_remote_code=True,device=0)
for tkz in ["refined tokenizer","original tokenizer"]:
  with open("result.conllu","w",encoding="utf-8") as w:
    for t in s.split("\n"):
      if t.startswith("# text = "):
        w.write(nlp(t[9:]))
  p=subprocess.run([sys.executable,c,"-v",f,"result.conllu"],encoding="utf-8",stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
  print(f"\n*** {mdl} ({tkz})",p.stdout,sep="\n",flush=True)
  nlp.tokenizer=nlp.oldtokenizer

私の手元では、以下の結果が出力された。

*** KoichiYasuoka/Llama-3.2-1B-thai-ud-causal (refined tokenizer)
Metric     | Precision |    Recall |  F1 Score | AligndAcc
-----------+-----------+-----------+-----------+-----------
Tokens     |     88.79 |     90.21 |     89.50 |
Sentences  |    100.00 |    100.00 |    100.00 |
Words      |     88.79 |     90.21 |     89.50 |
UPOS       |     77.80 |     79.04 |     78.42 |     87.62
XPOS       |     88.79 |     90.21 |     89.50 |    100.00
UFeats     |     87.60 |     89.00 |     88.29 |     98.66
AllTags    |     76.98 |     78.21 |     77.59 |     86.70
Lemmas     |     88.79 |     90.21 |     89.50 |    100.00
UAS        |     65.72 |     66.77 |     66.24 |     74.02
LAS        |     56.75 |     57.66 |     57.20 |     63.92
CLAS       |     53.96 |     54.14 |     54.05 |     61.35
MLAS       |     46.68 |     46.84 |     46.76 |     53.08
BLEX       |     53.96 |     54.14 |     54.05 |     61.35


*** KoichiYasuoka/Llama-3.2-1B-thai-ud-causal (original tokenizer)
Metric     | Precision |    Recall |  F1 Score | AligndAcc
-----------+-----------+-----------+-----------+-----------
Tokens     |     46.20 |     52.38 |     49.09 |
Sentences  |    100.00 |    100.00 |    100.00 |
Words      |     46.20 |     52.38 |     49.09 |
UPOS       |     39.70 |     45.01 |     42.19 |     85.93
XPOS       |     46.20 |     52.38 |     49.09 |    100.00
UFeats     |     45.45 |     51.53 |     48.30 |     98.38
AllTags    |     39.24 |     44.49 |     41.70 |     84.94
Lemmas     |     46.20 |     52.38 |     49.09 |    100.00
UAS        |     22.61 |     25.63 |     24.02 |     48.93
LAS        |     19.28 |     21.85 |     20.48 |     41.72
CLAS       |     16.87 |     19.80 |     18.22 |     39.72
MLAS       |     13.99 |     16.42 |     15.11 |     32.94
BLEX       |     16.87 |     19.80 |     18.22 |     39.72

トークナイザの入れ替えをおこなった場合のLAS/MLAS/BLEXが57.20/46.76/54.05、おこなわなかった場合が20.48/15.11/18.22で、差は歴然としている。ただ、それならば、最初からちゃんとしたトークナイザでLLaMAモデルを作ってほしいのだけど、やっぱり自分で作るしかないのかなあ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?