![人工知能 人工知能](https://srad.jp/static/topics/ai_64.png)
yasuokaの日記: Unidic2UDと中古和文UniDicによる『源氏物語』の係り受け解析
思うところあって、UniDic2UDと中古和文UniDicで『源氏物語』の係り受け解析を試してみることにした。まずは、最新版のUniDic2UDを、辞書や言語モデルも一緒にインストール。
% pip3 install 'unidic2ud>=1.1.4'
% python3 -m unidic2ud download.unidic wabun
% python3 -m unidic2ud download.udpipe japanese-gsd
インストールできたら、とりあえず「いづれの御時にか、女御、更衣あまたさぶらひたまひけるなかに、いとやむごとなき際にはあらぬが、すぐれて時めきたまふありけり。」を係り受け解析してみよう。
% python3
>>> import unidic2ud
>>> wabun=unidic2ud.load("wabun")
>>> s=wabun("いづれの御時にか、女御、更衣あまたさぶらひたまひけるなかに、いとやむごとなき際にはあらぬが、すぐれて時めきたまふありけり。")
>>> print(s)
# text = いづれの御時にか、女御、更衣あまたさぶらひたまひけるなかに、いとやむごとなき際にはあらぬが、すぐれて時めきたまふありけり。
1 いづれ 何れ PRON 代名詞 _ 4 nmod _ SpaceAfter=No|Translit=イヅレ
2 の の ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|Translit=ノ
3 御 御 NOUN 接頭辞 _ 4 compound _ SpaceAfter=No|Translit=オオン
4 時 時 NOUN 名詞-普通名詞-副詞可能 _ 23 obl _ SpaceAfter=No|Translit=トキ
5 に に ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No|Translit=ニ
6 か か ADP 助詞-係助詞 _ 4 case _ SpaceAfter=No|Translit=カ
7 、 、 PUNCT 補助記号-読点 _ 4 punct _ SpaceAfter=No
8 女御 女御 NOUN 名詞-普通名詞-一般 _ 13 obl _ SpaceAfter=No|Translit=ニョウゴ
9 、 、 PUNCT 補助記号-読点 _ 8 punct _ SpaceAfter=No
10 更衣 更衣 NOUN 名詞-普通名詞-サ変可能 _ 11 compound _ SpaceAfter=No|Translit=コウイ
11 あまた 数多 NOUN 名詞-普通名詞-一般 _ 12 obl _ SpaceAfter=No|Translit=アマタ
12 さぶらひ 侍う VERB 動詞-一般 _ 13 advcl _ SpaceAfter=No|Translit=サブラヒ
13 たまひ 給う VERB 動詞-非自立可能 _ 15 acl _ SpaceAfter=No|Translit=タマヒ
14 ける けり AUX 助動詞 _ 13 aux _ SpaceAfter=No|Translit=ケル
15 なか 中 NOUN 名詞-普通名詞-副詞可能 _ 23 iobj _ SpaceAfter=No|Translit=ナカ
16 に に ADP 助詞-格助詞 _ 15 case _ SpaceAfter=No|Translit=ニ
17 、 、 PUNCT 補助記号-読点 _ 15 punct _ SpaceAfter=No
18 いと いと ADV 副詞 _ 23 advmod _ SpaceAfter=No|Translit=イト
19 やむごとなき やんごとない ADJ 形容詞-一般 _ 20 amod _ SpaceAfter=No|Translit=ヤムゴトナキ
20 際 際 NOUN 名詞-普通名詞-一般 _ 23 iobj _ SpaceAfter=No|Translit=キワ
21 に に ADP 助詞-格助詞 _ 20 case _ SpaceAfter=No|Translit=ニ
22 は は ADP 助詞-係助詞 _ 20 case _ SpaceAfter=No|Translit=ハ
23 あら 有る VERB 動詞-非自立可能 _ 32 advcl _ SpaceAfter=No|Translit=アラ
24 ぬ ず AUX 助動詞 _ 23 aux _ SpaceAfter=No|Translit=ヌ
25 が が ADP 助詞-格助詞 _ 23 case _ SpaceAfter=No|Translit=ガ
26 、 、 PUNCT 補助記号-読点 _ 23 punct _ SpaceAfter=No
27 すぐれ 優れる VERB 動詞-一般 _ 32 advcl _ SpaceAfter=No|Translit=スグレ
28 て て SCONJ 助詞-接続助詞 _ 27 mark _ SpaceAfter=No|Translit=テ
29 時 時 NOUN 名詞-普通名詞-副詞可能 _ 32 obl _ SpaceAfter=No|Translit=トキ
30 めき めく PART 接尾辞-動詞的 _ 29 mark _ SpaceAfter=No|Translit=メキ
31 たまふ 給う VERB 動詞-非自立可能 _ 32 advcl _ SpaceAfter=No|Translit=タマフ
32 あり 有る VERB 動詞-非自立可能 _ 0 root _ SpaceAfter=No|Translit=アリ
33 けり けり AUX 助動詞 _ 32 aux _ SpaceAfter=No|Translit=ケリ
34 。 。 PUNCT 補助記号-句点 _ 32 punct _ SpaceAfter=No
うーん、形態素解析(単語切り・品詞付与・活用形の正規化)は、ちゃんと出来てるのだけど、係り受け解析がイマイチだ。私(安岡孝一)なりにざっと直してみよう。
>>> s[4].head=32
>>> s[8].head,s[8].deprel=12,"nsubj"
>>> s[10].head,s[10].deprel=8,"conj"
>>> s[15].head,s[15].deprel=32,"obl"
>>> s[18].head=19
>>> s[20].deprel="nsubj"
>>> s[23].head=31
>>> s[25].deprel="mark"
>>> s[27].head=31
>>> s[29].head=31
>>> s[31].deprel="csubj"
>>> print(s)
1 いづれ 何れ PRON 代名詞 _ 4 nmod _ SpaceAfter=No|Translit=イヅレ
2 の の ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No|Translit=ノ
3 御 御 NOUN 接頭辞 _ 4 compound _ SpaceAfter=No|Translit=オオン
4 時 時 NOUN 名詞-普通名詞-副詞可能 _ 32 obl _ SpaceAfter=No|Translit=トキ
5 に に ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No|Translit=ニ
6 か か ADP 助詞-係助詞 _ 4 case _ SpaceAfter=No|Translit=カ
7 、 、 PUNCT 補助記号-読点 _ 4 punct _ SpaceAfter=No
8 女御 女御 NOUN 名詞-普通名詞-一般 _ 12 nsubj _ SpaceAfter=No|Translit=ニョウゴ
9 、 、 PUNCT 補助記号-読点 _ 8 punct _ SpaceAfter=No
10 更衣 更衣 NOUN 名詞-普通名詞-サ変可能 _ 8 conj _ SpaceAfter=No|Translit=コウイ
11 あまた 数多 NOUN 名詞-普通名詞-一般 _ 12 obl _ SpaceAfter=No|Translit=アマタ
12 さぶらひ 侍う VERB 動詞-一般 _ 13 advcl _ SpaceAfter=No|Translit=サブラヒ
13 たまひ 給う VERB 動詞-非自立可能 _ 15 acl _ SpaceAfter=No|Translit=タマヒ
14 ける けり AUX 助動詞 _ 13 aux _ SpaceAfter=No|Translit=ケル
15 なか 中 NOUN 名詞-普通名詞-副詞可能 _ 32 obl _ SpaceAfter=No|Translit=ナカ
16 に に ADP 助詞-格助詞 _ 15 case _ SpaceAfter=No|Translit=ニ
17 、 、 PUNCT 補助記号-読点 _ 15 punct _ SpaceAfter=No
18 いと いと ADV 副詞 _ 19 advmod _ SpaceAfter=No|Translit=イト
19 やむごとなき やんごとない ADJ 形容詞-一般 _ 20 amod _ SpaceAfter=No|Translit=ヤムゴトナキ
20 際 際 NOUN 名詞-普通名詞-一般 _ 23 nsubj _ SpaceAfter=No|Translit=キワ
21 に に ADP 助詞-格助詞 _ 20 case _ SpaceAfter=No|Translit=ニ
22 は は ADP 助詞-係助詞 _ 20 case _ SpaceAfter=No|Translit=ハ
23 あら 有る VERB 動詞-非自立可能 _ 31 advcl _ SpaceAfter=No|Translit=アラ
24 ぬ ず AUX 助動詞 _ 23 aux _ SpaceAfter=No|Translit=ヌ
25 が が ADP 助詞-格助詞 _ 23 mark _ SpaceAfter=No|Translit=ガ
26 、 、 PUNCT 補助記号-読点 _ 23 punct _ SpaceAfter=No
27 すぐれ 優れる VERB 動詞-一般 _ 31 advcl _ SpaceAfter=No|Translit=スグレ
28 て て SCONJ 助詞-接続助詞 _ 27 mark _ SpaceAfter=No|Translit=テ
29 時 時 NOUN 名詞-普通名詞-副詞可能 _ 31 obl _ SpaceAfter=No|Translit=トキ
30 めき めく PART 接尾辞-動詞的 _ 29 mark _ SpaceAfter=No|Translit=メキ
31 たまふ 給う VERB 動詞-非自立可能 _ 32 csubj _ SpaceAfter=No|Translit=タマフ
32 あり 有る VERB 動詞-非自立可能 _ 0 root _ SpaceAfter=No|Translit=アリ
33 けり けり AUX 助動詞 _ 32 aux _ SpaceAfter=No|Translit=ケリ
34 。 。 PUNCT 補助記号-句点 _ 32 punct _ SpaceAfter=No
11ヶ所も手で直したのだが、まあ、これなら納得が行く。この結果を見る限り、japanese-gsdを中古和文の係り受け解析に使うのは、やはり多少無理があって、もう少しチューニングなり何なり、研究の余地があるということだ。ちなみに、最新版のUniDic2UDでは
>>> f=open("trial.svg","w")
>>> f.write(s.to_svg())
>>> f.close()
でSVGを出力できるように改良したので、ぜひSVGによる可視化を楽しんでほしい。
Unidic2UDと中古和文UniDicによる『源氏物語』の係り受け解析 More ログイン