yasuokaの日記: BERTモデルを用いた古典中国語(漢文)係り受け解析ツールSuPar-Kanbunリリース
3月5日の『東洋学へのコンピュータ利用』において、古典中国語(漢文)の形態素解析にGuwenBERTを用いたらどうか、という示唆をいただいた。端的には、TransformersのAutoModelForTokenClassificationを使って、文切りと単語切りと品詞付与をやってしまおう、というアイデアである。で、『Shrinking Japanese Morphological Analyzers With Neural Networks and Semi-supervised Learning』と『一种基于循环神经网络的古文断句方法』とSuParを横目に、ああでもないこうでもないと悩みつつ、SuPar-Kanbunという古典中国語(漢文)形態素解析・係り受け解析ツールを作ってみた。pip一発でインストールできるが、何せ言語モデルが巨大なので、Google Colaboratoryで動かしてみよう。
!pip install 'suparkanbun>=0.7.0' 'spacy>=3.0.3'
import suparkanbun
nlp=suparkanbun.load(BERT="guwenbert-large",Danku=True)
doc=nlp("吾有千里馬毛骨何蕭森疾馳如奔風白日無留陰徐駆当大道歩驟中五音馬雖有四足遅速在吾心六轡応吾手調和如瑟琴東西与南北高下山与林惟意所欲適九州可周尋至哉人与馬両楽不相侵伯楽識其外徒知価千金王良得其性此術固已深良馬須善馭吾言可為箴")
print(suparkanbun.to_conllu(doc))
1月16日の共通テスト『国語』第4問【問題文I】を、文切り・形態素解析・係り受け解析してみたところ、私(安岡孝一)の手元では、以下の結果となった。
# text = 吾有千里馬
1 吾 吾 PRON n,代名詞,人称,起格 Person=1|PronType=Prs 2 nsubj _ SpaceAfter=No
2 有 有 VERB v,動詞,存在,存在 _ 0 root _ SpaceAfter=No
3 千 千 NUM n,数詞,数字,* _ 5 nummod _ SpaceAfter=No
4 里 里 NOUN n,名詞,度量衡,* NounType=Clf 3 clf _ SpaceAfter=No
5 馬 馬 NOUN n,名詞,主体,動物 _ 2 obj _ SpaceAfter=No
# text = 毛骨何蕭森
1 毛 毛 NOUN n,名詞,不可譲,身体 _ 2 nmod _ SpaceAfter=No
2 骨 骨 NOUN n,名詞,不可譲,身体 _ 4 nsubj _ SpaceAfter=No
3 何 何 ADV v,副詞,疑問,原因 AdvType=Cau 4 advmod _ SpaceAfter=No
4 蕭 蕭 VERB v,動詞,描写,態度 Degree=Pos 0 root _ SpaceAfter=No
5 森 森 VERB v,動詞,描写,形質 Degree=Pos 4 compound:redup _ SpaceAfter=No
# text = 疾馳如奔風
1 疾 疾 VERB v,動詞,行為,態度 _ 3 advmod _ SpaceAfter=No
2 馳 馳 VERB v,動詞,行為,移動 _ 1 flat:vv _ SpaceAfter=No
3 如 如 VERB v,動詞,行為,分類 Degree=Equ 0 root _ SpaceAfter=No
4 奔 奔 VERB v,動詞,行為,移動 _ 3 ccomp _ SpaceAfter=No
5 風 風 NOUN n,名詞,描写,態度 _ 4 obj _ SpaceAfter=No
# text = 白日無留陰
1 白 白 NOUN n,名詞,描写,形質 _ 2 amod _ SpaceAfter=No
2 日 日 NOUN n,名詞,天象,天文 _ 3 obl:tmod _ SpaceAfter=No
3 無 無 VERB v,動詞,存在,存在 Polarity=Neg 4 advmod _ SpaceAfter=No
4 留 留 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
5 陰 陰 NOUN n,名詞,固定物,関係 Case=Loc 4 obj _ SpaceAfter=No
# text = 徐駆当大道
1 徐 徐 VERB v,動詞,行為,態度 _ 2 advmod _ SpaceAfter=No
2 駆 驅 VERB v,動詞,行為,移動 _ 0 root _ SpaceAfter=No
3 当 當 VERB v,動詞,行為,動作 _ 2 parataxis _ SpaceAfter=No
4 大 大 VERB v,動詞,描写,量 Degree=Pos 5 amod _ SpaceAfter=No
5 道 道 NOUN n,名詞,固定物,建造物 Case=Loc 3 obj _ SpaceAfter=No
# text = 歩驟中五音
1 歩 步 VERB v,動詞,行為,移動 _ 3 nsubj _ SpaceAfter=No
2 驟 驟 VERB v,動詞,行為,移動 _ 1 flat:vv _ SpaceAfter=No
3 中 中 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
4 五 五 NUM n,数詞,数字,* _ 5 nummod _ SpaceAfter=No
5 音 音 NOUN n,名詞,可搬,伝達 _ 3 obj _ SpaceAfter=No
# text = 馬雖有四足
1 馬 馬 NOUN n,名詞,主体,動物 _ 3 nsubj _ SpaceAfter=No
2 雖 雖 ADV v,副詞,判断,逆接 _ 3 advmod _ SpaceAfter=No
3 有 有 VERB v,動詞,存在,存在 _ 0 root _ SpaceAfter=No
4 四 四 NUM n,数詞,数字,* _ 5 nummod _ SpaceAfter=No
5 足 足 NOUN n,名詞,不可譲,身体 _ 3 obj _ SpaceAfter=No
# text = 遅速在吾心
1 遅 遲 VERB v,動詞,行為,態度 _ 3 nsubj _ SpaceAfter=No
2 速 速 VERB v,動詞,描写,量 Degree=Pos 1 flat:vv _ SpaceAfter=No
3 在 在 VERB v,動詞,存在,存在 _ 0 root _ SpaceAfter=No
4 吾 吾 PRON n,代名詞,人称,起格 Person=1|PronType=Prs 5 det _ SpaceAfter=No
5 心 心 NOUN n,名詞,不可譲,身体 _ 3 obj _ SpaceAfter=No
# text = 六轡応吾手
1 六 六 NUM n,数詞,数字,* _ 2 nummod _ SpaceAfter=No
2 轡 轡 NOUN n,名詞,可搬,道具 _ 3 nsubj _ SpaceAfter=No
3 応 應 VERB v,動詞,行為,交流 _ 0 root _ SpaceAfter=No
4 吾 吾 PRON n,代名詞,人称,起格 Person=1|PronType=Prs 5 det _ SpaceAfter=No
5 手 手 NOUN n,名詞,不可譲,身体 _ 3 obj _ SpaceAfter=No
# text = 調和如瑟琴
1 調 調 VERB v,動詞,行為,動作 _ 3 nsubj _ SpaceAfter=No
2 和 和 VERB v,動詞,描写,形質 Degree=Pos 1 flat:vv _ SpaceAfter=No
3 如 如 VERB v,動詞,行為,分類 Degree=Equ 0 root _ SpaceAfter=No
4 瑟 瑟 NOUN n,名詞,可搬,道具 _ 3 obj _ SpaceAfter=No
5 琴 琴 NOUN n,名詞,可搬,道具 _ 3 obj _ SpaceAfter=No
# text = 東西与南北
1 東 東 NOUN n,名詞,固定物,関係 Case=Loc 3 nsubj _ SpaceAfter=No
2 西 西 NOUN n,名詞,固定物,関係 Case=Loc 1 conj _ SpaceAfter=No
3 与 與 ADP v,前置詞,関係,* _ 4 cc _ SpaceAfter=No
4 南 南 NOUN n,名詞,固定物,関係 Case=Loc 0 root _ SpaceAfter=No
5 北 北 NOUN n,名詞,固定物,関係 Case=Loc 4 conj _ SpaceAfter=No
# text = 高下山与林
1 高 高 VERB v,動詞,描写,量 Degree=Pos 2 nsubj _ SpaceAfter=No
2 下 下 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
3 山 山 NOUN n,名詞,固定物,地形 Case=Loc 2 obj _ SpaceAfter=No
4 与 與 ADP v,前置詞,関係,* _ 5 cc _ SpaceAfter=No
5 林 林 NOUN n,名詞,固定物,地形 Case=Loc 3 conj _ SpaceAfter=No
# text = 惟意所欲適
1 惟 惟 ADV v,副詞,範囲,限定 _ 5 advmod _ SpaceAfter=No
2 意 意 VERB v,動詞,行為,動作 _ 5 nsubj _ SpaceAfter=No
3 所 所 PART p,助詞,接続,体言化 _ 5 mark _ SpaceAfter=No
4 欲 欲 AUX v,助動詞,願望,* Mood=Des 5 aux _ SpaceAfter=No
5 適 適 VERB v,動詞,行為,移動 _ 0 root _ SpaceAfter=No
# text = 九州可周尋
1 九 九 NUM n,数詞,数字,* _ 2 nummod _ SpaceAfter=No
2 州 州 NOUN n,名詞,制度,場 Case=Loc 4 nsubj _ SpaceAfter=No
3 可 可 AUX v,助動詞,可能,* Mood=Pot 4 aux _ SpaceAfter=No
4 周 周 VERB v,動詞,行為,動作 _ 5 advmod _ SpaceAfter=No
5 尋 尋 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
# text = 至哉人与馬
1 至 至 VERB v,動詞,行為,移動 _ 0 root _ SpaceAfter=No
2 哉 哉 PART p,助詞,句末,* _ 1 discourse:sp _ SpaceAfter=No
3 人 人 NOUN n,名詞,人,人 _ 1 nsubj _ SpaceAfter=No
4 与 與 ADP v,前置詞,関係,* _ 5 cc _ SpaceAfter=No
5 馬 馬 NOUN n,名詞,主体,動物 _ 3 conj _ SpaceAfter=No
# text = 両楽不相侵
1 両 兩 NOUN n,名詞,数量,* _ 2 nmod _ SpaceAfter=No
2 楽 樂 NOUN n,名詞,描写,態度 _ 5 nsubj _ SpaceAfter=No
3 不 不 ADV v,副詞,否定,無界 Polarity=Neg 5 advmod _ SpaceAfter=No
4 相 相 ADV v,副詞,範囲,共同 _ 5 advmod _ SpaceAfter=No
5 侵 侵 VERB v,動詞,行為,交流 _ 0 root _ SpaceAfter=No
# text = 伯楽識其外
1 伯楽 伯樂 PROPN n,名詞,人,名 NameType=Giv 2 nsubj _ SpaceAfter=No
2 識 識 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
3 其 其 PRON n,代名詞,人称,起格 Person=3|PronType=Prs 4 det _ SpaceAfter=No
4 外 外 NOUN n,名詞,固定物,関係 Case=Loc 2 obj _ SpaceAfter=No
# text = 徒知価千金
1 徒 徒 ADV v,副詞,範囲,限定 _ 2 advmod _ SpaceAfter=No
2 知 知 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
3 価 價 NOUN n,名詞,可搬,成果物 _ 2 iobj _ SpaceAfter=No
4 千 千 NUM n,数詞,数字,* _ 5 nummod _ SpaceAfter=No
5 金 金 NOUN n,名詞,可搬,道具 _ 2 obj _ SpaceAfter=No
# text = 王良得其性
1 王 王 PROPN n,名詞,人,姓氏 NameType=Sur 3 nsubj _ SpaceAfter=No
2 良 良 PROPN n,名詞,人,名 NameType=Giv 1 flat _ SpaceAfter=No
3 得 得 VERB v,動詞,行為,得失 _ 0 root _ SpaceAfter=No
4 其 其 PRON n,代名詞,人称,起格 Person=3|PronType=Prs 5 det _ SpaceAfter=No
5 性 性 NOUN n,名詞,不可譲,属性 _ 3 obj _ SpaceAfter=No
# text = 此術固已深
1 此 此 PRON n,代名詞,指示,* PronType=Dem 2 det _ SpaceAfter=No
2 術 術 NOUN n,名詞,可搬,伝達 _ 5 nsubj _ SpaceAfter=No
3 固 固 ADV v,副詞,判断,確定 _ 5 advmod _ SpaceAfter=No
4 已 已 ADV v,副詞,時相,完了 AdvType=Tim|Aspect=Perf 5 advmod _ SpaceAfter=No
5 深 深 VERB v,動詞,描写,量 Degree=Pos 0 root _ SpaceAfter=No
# text = 良馬須善馭
1 良 良 VERB v,動詞,描写,形質 Degree=Pos 2 amod _ SpaceAfter=No
2 馬 馬 NOUN n,名詞,主体,動物 _ 5 nsubj _ SpaceAfter=No
3 須 須 AUX v,助動詞,必要,* Mood=Nec 5 aux _ SpaceAfter=No
4 善 善 VERB v,動詞,描写,態度 Degree=Pos 5 advmod _ SpaceAfter=No
5 馭 馭 VERB v,動詞,行為,動作 _ 0 root _ SpaceAfter=No
# text = 吾言可為箴
1 吾 吾 PRON n,代名詞,人称,起格 Person=1|PronType=Prs 2 det _ SpaceAfter=No
2 言 言 NOUN n,名詞,可搬,伝達 _ 4 nsubj _ SpaceAfter=No
3 可 可 AUX v,助動詞,可能,* Mood=Pot 4 aux _ SpaceAfter=No
4 為 爲 VERB v,動詞,行為,生産 _ 0 root _ SpaceAfter=No
5 箴 箴 NOUN n,名詞,可搬,道具 _ 4 obj _ SpaceAfter=No
「蕭」=compound:redup⇒「森」のミスが気になるものの、文切りは完璧だし、品詞付与もイイセンいってるようだ。単語切りに関しても、ちゃんと「伯楽」を1語と認識している。問題は、言語モデルの巨大さ(圧縮して4GB程度)だが、さてさて。
BERTモデルを用いた古典中国語(漢文)係り受け解析ツールSuPar-Kanbunリリース More ログイン