6月21日の記事の続きだが、Qiitaイベント「国内AIモデル推論プラットフォーム『ai& Inference』を使ってみよう」の各モデルに対して、国語研短単位でFew-Shot係り受け解析に挑戦してみた。Google Colaboratoryだと、こんな感じ。
!pip install openai
msg=[{"role":"system","content":"与えられた文をUPOSとDEPRELで係り受け解析して下さい。"},
{"role":"user","content":"一直線に伸びる電撃を放ち、電撃ダメージを与える。"},
{"role":"assistant","content":"一_NUM_nummod_直線|直線_NOUN_obl_伸びる|に_ADP_case_直線|伸びる_VERB_acl_電撃|電撃_NOUN_obj_放ち|を_ADP_case_電撃|放ち_VERB_advcl_与える|、_PUNCT_punct_放ち|電撃_NOUN_compound_ダメージ|ダメージ_NOUN_obj_与える|を_ADP_case_ダメージ|与える_VERB_root_与える|。_PUNCT_punct_与える"},
{"role":"user","content":"色々と面白いメニューのある店。"},
{"role":"assistant","content":"色々_ADV_advmod_ある|と_ADP_case_色々|面白い_ADJ_amod_メニュー|メニュー_NOUN_nsubj_ある|の_ADP_case_メニュー|ある_VERB_acl_店|店_NOUN_root_店|。_PUNCT_punct_店"},
{"role":"user","content":"しかも、ここはコースがリーズナブルなのです。"},
{"role":"assistant","content":"しかも_CCONJ_advmod_リーズナブル|、_PUNCT_punct_しかも|ここ_PRON_nsubj_リーズナブル|は_ADP_case_ここ|コース_NOUN_nsubj_リーズナブル|が_ADP_case_コース|リーズナブル_ADJ_root_リーズナブル|な_AUX_aux_リーズナブル|の_SCONJ_mark_リーズナブル|です_AUX_aux_リーズナブル|。_PUNCT_punct_リーズナブル"},
{"role":"user","content":"彼はコンピュータを個人の持ち物にしました。"},
{"role":"assistant","content":"彼_PRON_nsubj_し|は_ADP_case_彼|コンピュータ_NOUN_obj_し|を_ADP_case_コンピュータ|個人_NOUN_nmod_持ち物|の_ADP_case_個人|持ち物_NOUN_obl_し|に_ADP_case_持ち物|し_VERB_root_し|まし_AUX_aux_し|た_AUX_aux_し|。_PUNCT_punct_し"},
{"role":"user","content":"2007年9月現在、以下のメーカーから対応製品が発売されている。"},
{"role":"assistant","content":"2007_NUM_nummod_年|年_NOUN_compound_現在|9_NUM_nummod_月|月_NOUN_compound_現在|現在_ADV_advmod_発売|、_PUNCT_punct_現在|以下_NOUN_nmod_メーカー|の_ADP_case_以下|メーカー_NOUN_obl_発売|から_ADP_case_メーカー|対応_NOUN_compound_製品|製品_NOUN_nsubj_発売|が_ADP_case_製品|発売_VERB_root_発売|さ_AUX_aux_発売|れ_AUX_aux_発売|て_SCONJ_mark_発売|いる_VERB_fixed_て|。_PUNCT_punct_発売"}
]
from openai import OpenAI
client=OpenAI(base_url="https://api.aiand.com/v1",api_key="sk-your-api-key")
nlp=lambda mdl,txt:client.chat.completions.create(model=mdl,temperature=0,messages=msg+[{"role":"user","content":txt}]).choices[0].message.content.strip()
for mdl in ["zai-org/glm-5.2","moonshotai/kimi-k2.7-code","deepseek-ai/deepseek-v4-pro","deepseek-ai/deepseek-v4-flash","qwen/qwen3.6-27b","google/gemma-4-31b-it","zai-org/glm-5.1","openai/gpt-oss-120b","moonshotai/kimi-k2.6"]:
print("###",mdl)
print(nlp(mdl,"国境の長いトンネルを抜けると雪国であった。"))
私(安岡孝一)の手元では、以下の結果が得られた。
zai-org/glm-5.2
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_であっ|と_SCONJ_mark_抜ける|雪国_NOUN_nsubj_であっ|で_AUX_cop_であっ|あっ_AUX_aux_であっ|た_AUX_aux_であっ|。_PUNCT_punct_であっ
moonshotai/kimi-k2.7-code
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_あっ|と_SCONJ_mark_抜ける|雪国_NOUN_nsubj_あっ|で_AUX_cop_あっ|あっ_VERB_root_あっ|た_AUX_aux_あっ|。_PUNCT_punct_あっ
deepseek-ai/deepseek-v4-pro
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_あっ|と_SCONJ_mark_抜ける|雪国_NOUN_nsubj_あっ|で_AUX_aux_あっ|あっ_VERB_root_あっ|た_AUX_aux_あっ|。_PUNCT_punct_あっ
deepseek-ai/deepseek-v4-flash
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obl_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_あった|と_ADP_case_抜ける|雪国_NOUN_obl_あった|で_AUX_cop_雪国|あった_VERB_root_あった|。_PUNCT_punct_あった
qwen/qwen3.6-27b
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_あった|と_SCONJ_mark_抜ける|雪国_NOUN_nsubj_あった|で_AUX_cop_あった|あった_VERB_root_あった|。_PUNCT_punct_あった
google/gemma-4-31b-it
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_であった|と_SCONJ_mark_抜ける|雪国_NOUN_root_であった|で_AUX_aux_であった|あった_VERB_root_であった|。_PUNCT_punct_あった
zai-org/glm-5.1
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_あっ|と_SCONJ_mark_抜ける|雪国_NOUN_nsubj_あっ|で_AUX_cop_あっ|あっ_VERB_root_あっ|た_AUX_aux_あっ|。_PUNCT_punct_あっ
openai/gpt-oss-120b
国境_NOUN_nmod|の_ADP_case|長い_ADJ_amod|トンネル_NOUN_obj|を_ADP_case|抜ける_VERB_advcl|と_SCONJ_mark|雪国_NOUN_obl|で_ADP_case|あった_VERB_root|。_PUNCT_punct
moonshotai/kimi-k2.6
国境_NOUN_nmod_トンネル|の_ADP_case_国境|長い_ADJ_amod_トンネル|トンネル_NOUN_obj_抜ける|を_ADP_case_トンネル|抜ける_VERB_advcl_雪国|と_SCONJ_mark_抜ける|雪国_NOUN_root_雪国|で_AUX_cop_雪国|あっ_AUX_aux_で|た_AUX_aux_あっ|。_PUNCT_punct_雪国
kimi-k2.6がイイセン行ってるものの、正解まであと一歩である。係り受け関係を図示してみよう。
例文に出てこないcopが出力されており、なかなかにヤバい。ただし、AUXからAUXにリンクする場合は、リンクのラベルはauxではなくfixedである。どうしてもauxでリンクしたいなら、この場合のリンク元は「雪国」である。あと一歩で惜しい。
