...

古文解析システム等 K関するレポート

by user

on
Category: Documents
23

views

Report

Comments

Transcript

古文解析システム等 K関するレポート
古 文 解 析 シ ス テ ム 等 K関するレポート
[認知科学とコンビューター石崎研究会]
環境情報学部、 3年
7 9 0 506 9 7
今井豊
古文解析システム等に関するレポート
[認知科学とコンビュータ:石崎研究会]
環境情報学部、 3年
79050697
今井豊
概要
とのレポートでは、 Lispを用いて作成した人工知能に関連するシステムを
いくつか紹介する o 特に古文解析システムは、意味処理を必要とする点で、
自然言語処理における難点を体験的に理解するのに役立つた。実際にプログ
ラムを作成するときには、古典文法が参考になる。古典文法は、助動調や助
詞の用法が多傑であるために現代人泣かせのととろもあるが、とれは別の見
方をすれば、形から意味を確定できるというととであり、プログラミングに
際しては都合が良いといえる o そうは言っても、初心者には難しいので、他
の簡単な問題から段階的にやってみた。それと併せて、認知科学および人エ
知能についての理論的な知識を得るととも目標とした。
1
はじめに
認知科学は、心理学、生理学、言語学、計算機科学、人工知能、哲学などの分野が
相互に関連している新しい学問である。人間の脳と計算機を理解するうえで、記憶に
ついて考察することは重要であるが、そのアプローチの仕方は心理学と生理学とで異
なる o 心理学は脳をブラックボックスとみなして実験、分析を行うが、生理学は脳の
中身を解明しようとする。また、人聞は進化とともに、 3つの記憶情報システムを持
つようになったと考えられる。すなわち、 D N Aの遺伝情報、脳の記憶情報、文字に
よる脳外部の記憶情報、の 3つである o 1番目の、 D N Aの遺伝情報は読み出し専用
であり、計算機では R 0M (ReadOnlyMemory)に相当する。 2番目の、脳の記憶情
報は書き込みも可能であるから、計算機では R AM (RandomA
c
c
e
s
sMemory)に相当
する。 3番目の、脳外部の記憶情報も扱うのが人間の特長であるので、言語学も関係
してくる。さらに、人間の脳と計算機を結びつけるキーワードとして「並列処理 J が
あげられるが、との研究のベースには計算機のアーキテクチャがあるので、人工知能
も含めて計算機科学も今後の応用問題を解決する土台として大切である。究極的には、
計算機に心があるか、などの問題も興味深いものであれそこには哲学が登場してく
るであろう。
次に、脳と計算機の情報処理における相違点について考える。脳は並列処理にすぐ
れており、例えば図形認識において大局的なすばやい把握が可能である。(逐次処理を
する計算機はこれが苦手である。)しかし超 LS 1技術の発展によって少なくとも、計
算機は素子の数ではノイマンの時代に比べて脳と大差がなくなってきた。例えば、大
型計算機の外部メモリ 1
012ピットと、脳のシナプス数 1
015とは、将来さらにその差が
縮まると考えられる。しかし、記憶の方式は脳と計算機とで基本的に異なると思われ
る。計算機の回路は固定されているが、脳の神経団路は固定されておらず、刺激に対
し柔軟に反応して機能を整えていく性質、つまり「可塑性」をもっている。脳には、計
算機のような特定の記憶装置が見つかっていないが、神経団路網の可塑性、あるいは
もっと細かくシナプスの可塑性について研究することは、記憶のメカニズムを解明す
るための手がかりになるのではなかろうか。また、可塑性を考えるととは、記憶とと
もに人間の高次機能である学習について研究する上でも役立つ。条件反射を学習した
ネコの赤核のシナプスに発芽が起とっていたととを示し、学習に伴う神経細胞の形態
的変化を実証した塚原
[
1,
2
]の実験など、興味深いものがある。
記憶を分子レベルで説明できれば大変素晴らしいと思うが、それは決して容易では
ない。あまりにミクロの世界に閉じ込もるのではなく、マクロの視点も常備しておく
ととが重要である。そのためには、様々な知識を得ることが必要であるので、今学期
はいろいろなととを休験的に勉強することに主眼を置いた。簡単なシステムをつくっ
てみる方が、理解が深まるからである。
2 問題解決
問題解決の一般的な手法では、まず状態空間を定め、初期状態と目標状態を設定し、
オペレータを表現する。ととまでは人間の頭で考えなければならない。しかし、との
定義ができれば、あとは状態空間の探索問題に帰着される。探索には、横型探索、縦
型探索、発見的探索などがある。メモリの消費量や最適解かどうかはそれぞれ異なっ
ている。横型探索や縦型探索は、状態の良さを評価しないで探索するので、問題によっ
て探索時間に差が出る。発見的探索は、探索の状態に依存した発見的な知識を用いる
ことによって探索の効率を高めるのが特徴である。
2
.
1 猿とバナナ問題
例題として、「猿とパナナ問題 Jを取りあげる。(ただし、探索のプログラムは「人工
知能論 I
Jの授業で冨田先生から配布されたものを修正した。)図 1のような状態から、
8ヲCヲMヲB
)
猿がバナナを手にした状態までを追っていくものである。まず、状態空間 (
を定める。 SヲCヲM はそれぞれ {
0,
1
ム3ぅ4}のどれかの値をとる o 1,
2,
3ヲ4は図 1に示され
ている位置にある状態を示し、 0は
、 SヲCに対しては棒または椅子が猿の手の中にある
Oム2
}のどれ
状態を示し、 M に対しては猿が椅子に上がっている状態を示す。 B は {
かの値をとる。 0はパナナが猿の手の中にある状態を、 1はパナナが地面に落ちた状態
を
、 2はパナナが宙吊りになっている状態をそれぞれ示す。
4ふ2,
2
)である。また、目標状態は B=0である状態なら何で
初期状態は図 1より (
もよいが、常識的に考えるという 1
ム0
)になるととが多いはずである。
オペレータは、猿が同時に 2つ以上のものを持てないことに注意しながら条件を考
えていけば、プログラムの n
e
x
t
s
ta
.t
e
sという関数の中にある i
f文のように書ける。例
えば、猿が 1へ移動するオベレータは次のようになる。
ー(S,C,1,B)
(SC,
M,
B)1Mヂ1八 M ヂ0
ヲ
発見的探索では、 nea
.
rという関数をつくってみた。目標状態 (
1,
1
,
1
,
0
)にできるだけ
近づくように、各状態を得点で表し、その合計が最小であるものを選ぶ。例えば、椅
2ふりにある状態は目標状態とかけ離れている(椅子がバナナの下以外の場所に
子が (
あっては、いつまでたっても目標状態に到達しない)ので、高得点 (
1
0点)を割り当
てる。そうすると、とれだけで、その状態は次の候補となりにくくなる。また、猿は
しょっちゅう移動しなければならないので、 M については (
2,
3,
4)のどれかの状態であっ
ても、低得点 (
2点)を害Jjり当てる o
表1
<得点の割り当て方>
状態。
状態 1 状態 (
2ム4
)
棒(
S
)
。
椅子 (
C
)
猿(
M)
。
バナナ (
B
)
図1
5
1
0
2
4
。
。
r
猿とパナナ問題 J の概略図
C
1B (バ ナ ナ )
M (猿
c (椅子)
s (棒)
カ
│ 一 │ ¥
'
)
3
4
2
.
2 実行結果
第 1例
:横型探索による
>(main '(4 3 2 2))
1
2
3
121
122
123
((1 1 1 0
) (
1 111
) (0 1 1 1
) (0 1 0 1
) (
0 10 2
) (0 1 1 2) (0 1 4 2
)
(4 1 4 2) (4 1 1 2) (
4 0 1 2) (4 0 3 2) (
4332
) (4 3 2 2))
第 2例
:縦型探索による
>(main '
(
4322
)
)
1
2
3
4AqL
a
、
‘
,
,
、
‘,
4i4i
,
q
h n吐
q L A吐
4in4
,
,
‘
、
,e
、
‘
、
‘
,
,
、
‘
,
,
4444
4 A A吐
qLnu
,h
4A4An
,
,
‘
、
,
,
‘
、
、EJ
z
,
、
、
,
,
、
‘
,
,
、
、4i 円,h n L
E
nu'Aqd
204
,
4An
hn4
、
,
,
‘
、
,
,
‘
、
,
,
、
‘
,
,
、
‘
,
,
、
.
,
,
J
内
q4Auqd
AU4A
qLnun-&
,
,
‘
、
,
,
‘
、
,
,
‘
、
4444qL
qLnuqu
、
‘
,
,
、
,
,
,
、
‘
,
,
qL 唱A A U
204
444An4
,
,
‘
、
,
,
、
、
,
,
‘
、
、
‘
,
,
、
‘
,
,
、
、
,
,
44444i
E
n44AAv
E
n 4 n u A官
444
円
AU4Aq4
44
、
,
,、
,
,
‘
、
,
,
、
,
,
,
、
‘
,
,
、
,
,
,
n4444A
円
,h r k
,h n u 凋UE
n
QdnU44't'trk
taqL
第 3例
:発見的探索による
>(main '(4 3 2 2))
1
2
3
20
21
22
((1 1 1 0
) (
1 111
) (
0 111
) (
0 10 1
) (
0 10 2
) (0 1 1 2) (0 1 4 2
)
(4 1 4 2) (
4 1 12
) (
40 12
) (4 0 3 2) (4 3 3 2
) (4 3 2 2))
第 1例を例にとって実行結果の見方を説明する。左側の 1
ム
…
, 122ヲ123という数字は
探索した状態の{回数を表している o ζ の数が少ないほど、探索効率が良いといえる。一
方、括弧にくくられた状態のリストは初期状態から目標状態に達するまでの道筋(解)
J
慎々に左へ返っていくように見
を表している。初期状態が一番最後に書いてあって、 I
3個の状態が書い
る。したがって先頭に書いてあるのが目標状態である。第 1例では 1
であるが、これは最短解である。とのように見ると第 1例の横型探索は、解が見つか
るまでに時間がかかるが、得られた解は最短解であるととがわかる。
同様に他の実行結果も見ると、やはり発見的探索(第 3例)によるものが、効率良く
最短解を見つけているととがわかる。発見的探索の方法は、他にもっと効率的なもの
があるとは思うが、 3種類の探索方法の比較になったと思う。
3 L
ispによる有機化合物の分類
L
i
s
p(
L
I
S
tP
r
o
c
e
s
s
i
n
gl
a
n
g
u
a
g
e
) は、記号の処理に威力を発揮する。 P
r
o
l
o
gなどと
ともに人工知能の分野でよく使われる。そとで有機化合物を題材にして、 L
i
s
pによる
化合物の分類システムを作成した。一つは、分子式 C
Oの化合物の異性体を質問形
3H
s
式で答えるもので、 cond,
s
e
t
q,
r
e
a
d,
p
r
i
n
tなどのどく基本的な関数だけを使っている。
まず分子式 C
Oを次の実行例のように入力する。との分子式で表される化合物は複
3H
s
数個あるので、一意には定まらない。そこでシステムが「それは第 2アルコールであ
るか」を聞いてくる。ユーザーは、答えを y
e
sか noで答える。すると、システムが構
造式を示してくれる。その後の質問は、ユーザーの関連知識を問うものである。との
問題では、「第 lアルコール→アルデヒド→カルポン酸」、「第 2アルコール→ケトン」
の酸化反応について学習できる o 最後の例のように、アルコールでない場合はエーテ
ルと決定される o
〈実行例〉
>(bunshishild '
C
3H80)
〉第 2ア ル コ ー ん で す か ?
yes
〈一一システム
〈ーユーザー
(CH3-CH-OH-CH3)
です。とれを政化すると何になりますか?
アセトン
OK
〈ーーシステム
←ーユーザー
〈一一システム
>(bunshishiki '
C
3H80)
〉第 2ア ル コ ー ん で す か ー シ ス テ ム
no
ーユーザー
〉第 1ア ル コ ー ル て ・ す か ー シ ス テ ム
yes
ーユーサ
CH3-CH2-CH2-0H
です。とれを酷化するとどうなりますかーシステム
CH3-CH2-CHO
ーユーザー
O Kで す 。 さ ら に 般 化 す る と ど う な り ま す か ー シ ス テ ム
わ か ら な い 。 < ー ユ ー ザ ー
〈答えは CH3-CH2-COOH)
←ーシステム
>(bunshishiki '
C
3H80)
〉第 2ア ル コ ー ル で す か ?
no
〉第 1ア ル コ ー ん で す か ?
no
(CH3-CH2-0-CH3 です。〉
〈ーーシステム
〈ーユーザー
〈ーーシステム
〈ーユーザー
〈ーーシステム
もう一つは、いくつかの芳香族化合物が混ざったエーテル溶液から個々の化合物を
分離する操作の手順を示すプログラムである。とれは、リストの結合や再帰性を使う
練習である。次の例では、トルエン、フェノール、アニリン、安息香酸の 4種類の化
合物を分離する方法が示されている。実行結果が見にくいが、内容はその次の図解の
通りである。図解のように出力されれば理想的であるが、 ζ の問題はメインテーマで
はないので、とれ以上深く立ち入らないととにした。
〈実行結果〉
>(bunri '(トルエンフェノールアニリシ安息香酸))
(((+HCL ー
>) ((C6H5-NH3CL) IN-水層) (+NAOH ー>)
((C6H5-NH2) INーエーテル層〉とれがアニリン〉
(エーテル層 -WHEN (+HCL) に)
((+NAHC03 ー
>) ((C6H5-COONA) IN-水層) (+HCL ー>)
((C6H5-COOH) IN
ーエーテル層)とれが安息香酸〉
〈エーテル層-¥l
HEN (+NAHC03) に)
((+NAOH ー
>) ((C6H5-0NA) IN四水層) (+HCL ー>) ((C6H5-0H) INーエーテル層〉
とれがフェノール)
(エーテル層-¥lHEN (+NAOH) には) (トルエン)が残る)
図2
有機化合物の分離例の図解
(1)トルエン、 (2)フェノール、(3)アニリン、 (4)安 息 香 酸 の エ ー テ ル 溶 液
(1)C6H5CH3, (2)C6H50H, (3)C6H5NH2, (4)C6H5COOH
I(+HC1)
エーテル層
水層
仁6H5NH3
仁1
C6HS仁H3,仁 6HSOH, C6H5仁OOH
I(+NaOH)
エーテル層
I
(+NaHC03)
C6H5CH3,C6H50H
エーテル層 I
(+NaOH) 水 層
C6H5CH3 <
ー
ー (1)
C6H50H <一一 (2)
エーテノレ層
エーテル層
I
(+HC1) 水 層
C6H5COOH <
ー
ー (4)
I
(+HC1) 水 層
NaCl
│
C6H5NH2 <一一 (3)
C6H5COONa
C6H50Na
エーテル層
水層
NaCl
水層
NaCl
人工知能の化学分野における応用として、複雑な有機化合物の構造決定に役立つエ
キスパートシステムの研究がなされている。例えば、スタンフォード大学で開発され
た DENDRALでは、サンプルに高エネルギーの電子を当て、いくつかの特定の質
量をもっ塊に分解し、質量別の塊の数を記録した質量分析スベクトルを基に、化学構
造式を推論し、決定している。 (
[
6
],
[
8
]
)
4
日本語の parserの試用
石崎研究会で提供された日本語構文解析システムに基づいて、「・・か」、「何を(誰
を)・・か Jのような簡単な疑問文の解析機能を付け加えた。ただし、係り方が一通りで
なく、解析木が複数出てくるので、意味解析などによる改良の余地がある。
4
.
1 解析例の説明
「大使は解放されたか。」という文を入力すると、システムは単語辞書を参照しなが
ら「大使 J、「は」、「解放J のような形態素に分解する。次に、「連用修飾匂は、名詞匂
と連用助詞から成る」のような文法規則に従って構文解析をする。適用可能な文法規
則が複数ある場合には、それらのすべてに対する構文解析木を出力する。
〈単語辞書の例〉
t
a
i
l setugou)) '
((
c
o
n
c
e
p
t release)))
〈解放名詞'((
(大使名詞 nil '
((concept ambassador)))
(犯人名詞 nil '
((concept criminal)))
〈誰代名詞 niln
il)
(を連用助詞 '
((setuzokutaigen)) '
(
w
o
)
)
(は連用助詞 '
((setuzokutaigen)) '
(
w
a
)
)
(さ用言 '
(
(
b
o
d
ys
u
r
u
)(
t
a
i
l ~1) (katuyous油 e
n
)
)n
i
l
)
〈れ助動詞 '
((bodyreru) (katuyou l
d
a
n
)(
t
a
i
l0
1G
2
)
)n
i
l
)
〈た助動詞 '
((bodyt
a
) (katuyoutokusyu) (
t
a
i
l0
3 ~4)) n
i
l
)
〈か疑問助詞 n
il '
(
g
i
m
o
n
)
)
4
.
2 解析結果
enter sentence ==>大使は解放されたか。
I-*TOP*
ー文
卜連用修飾句
l ト名詞句
1 1 1
-名詞ーー大使
I I
! ト連用助詞ーーは
卜文
ー文
卜用言句
卜用言句
│ ト用言勾
I I 卜用言
1 1
ト名詞ーー解放
1 1
ト用言ーーさ
1 1
l 卜助動詞ーーれ
卜助動詞ーーた
ー疑問助詞ーーか
I-END--。
ー
enter sentence ==>犯人は誰を解放したか。
I-*TOP寧
卜文
ト連用修飾句
│ 卜名詞句
I 1 ト名調ーー犯人
1 1
│ ト連用助詞ーーは
ト文
ト適用修飾句
l 卜名詞句
I1 1
-代名詞ーー誰
1 I
│ ト適用助詞ーーを
卜文
1
-文
│ ト用言句
│
ト用言句
1 1
-用言
卜名詞ーー解放
1
-用言ーーし
1
卜助動詞ーーた
卜疑問助詞ーーか
I-END---。
5 古文の解析と口語訳
古文を解析して現代語に翻訳(口語訳)するプログラムを、 L
i
s
pを用いて作成した。
i
s
pの基本的な関数を徹底的に使ってみ
まずシステムが稼動することを目標として、 L
た。古文の出典として、「伊勢物語 J(
第 8 2段、"渚の院の桜"の巻)を選んだ。その
、「の J
、「ば Jの識別が必要である箇所が盛り込まれており、文法的な
理由は、「なむ J
処理にー工夫を要するので手応えがありそうだ、と思ったからである。
むかし、これたかの親王と申す親王おはしましけり。山崎のあなたに、水無瀬といふ所
に寓ありけり。制叶叶剖州制州制劇引叫叫 4寸州割吋引制対同リ剖U川 引 4
ーその時右の馬の
頭なりける人を、常に率ておはしましけり。時世ヘて久しくなりにければ、その人の名忘
れにけり。狩はねむごろにもせで、酒をのみ飲みつつ、やまと歌にかかれりけり。いま狩
する交野の渚の家、その院の桜ことにおもしろし。その木のもとにおりゐて、伎を折りて
かざしにさして、上中ドみな歌よみけり。馬の頭なりける人のよめる。
間川叫叫刈刈廿倒州制州引制削剥州叫叫川副川州叫剖リ
となむよみたりける。また人の歌、
散ればこそいとど桜はめでたけれうき世になにか久しかるべき
とて、その木のもとは立ちてかへるに、日ぐれになりぬ。御供なる人、酒をもたせて野よ
り出て来たり。この酒を飲みてむとて、よき所を求めゆくに、天の河といふ所にいたりぬ。
親王に馬の頭、大御酒まいる。親王ののたまひける。﹁交野を狩りて、天の河のほとりに
至るを題にて、歌よみて杯はさせ﹂とのたまうければ、かの馬の頭よみて奉りける。
狩り暮らしたなばたつめに宿からむ天の河原に我は来にけり
親王、歌を返々ずじたまうて、返しえし給はず。紀の有常御ともにつかうまつれり。
それが返し、
一年にひとたび来ます君まてば宿かす人もあらじとぞ思ふ
帰りて宮に入らせ給ひぬ。夜ふくるまで酒飲み物語して、あるじの親王、酔ひて入り給
ひなむとす。十一日の則剖閥刈引制剖引判削ォ刈州矧叫劇州判制刻 41
あかなくにまだきも月の隠るるか山の端にげて入れずもあらなむ
親王にかはり奉りて、紀の有常、
おしなべて峰もたひらになりななむ山の端なくは月も入らじを
(﹃伊勢物語﹄八十二段﹁渚の院の桜﹂﹀
r
5
.
1 品詞分解: なむ」の識別
形態素解析では最長一致法がよく使われているが、それだけではうまくいかない ζ
ともある。その一例として、「なむ j の識別があげられる。「なむ」には 3種類の用法
がある。
1.係助詞の「なむJで、後ろの連体形の活用語と呼応して係り結びとなる。強め
の意味であり、特に訳す必要はない。
なJ +r
むJ"に分解され、完了と推量の
2
. 直前の活用語が「連用形」のとき、"r
助動詞が結びついて、意味は「・・(して)しまおう J となる。
3
. 直前の活用語が「未然形」のとき、他に対する願望を表す終助詞の「なむ」であ
り、意味は「・・(して)ほしいJ となる。
o
n
d文を使って別処理をしている。 h
i
n
s
h
i
lという関数を実行する
プログラムでは、 c
な」と
と、上の 2のケースの入力文に対し、誤った品詞分解結果を出してしまう(r
「む」に分解されない)が、 h
i
n
s
h
i・3という関数を実行すれば、きちんと識別し、正し
い品詞分解結果を得る o さらに、文法的な説明も明記されているので、よりわかりや
すいだろう。
(
図 3) ケ ー ス 2の入力文に対する品詞分解例
誤例
>(hinshi-l ' ( 月 も 隠 れ な む と す れ ば 、 か の 馬 の 頭 の よ め る 。 ) )
〈月も隠れなむとすれば、かの馬の頭のよめる o )
正例
>(hinshi-3 ' ( 月 も 隠 れ な む と す れ ば 、 か の 馬 の 頭 の よ め る 。 ) )
((月(名詞)) (も(係助詞)) (隠(ラ行下二段活用の動詞隠る語幹))
〈れ〈語尾ラ行連用形)) (な〈完了の助動詞ぬ未然形))
〈む〈推量の助動詞む終止形)) (と(格助詞))
〈すれ〈サ変動詞すいぜん形)) (ば(接続助詞)) 、
( (読点))
〈か(指示代名詞)) (の(格助詞)) (馬の頭(名詞)) (の(格助詞))
〈よ〈マ行四段活用の動詞よむ語幹)) (め(語尾マ行いぜん形))
0 (句点)))
〈る(完了の助動詞り連体形)) (
h
i
n
s
h
i
lという関数では、どのような場合でも最長一致法に従った結果が出てしま
う。最長一致法は、文字数の多いものを優先的に辞書から取り出してくる方法である o
したがって、辞書に「なむ」が登録されているとき、「な」と「む Jは無視されてしまう
のである。仮に、「なむ Jが辞書に登録されていなかったら、今度は常に「な」と「む」
に分解されてしまい、前述の 1と 3のケースの入力文に対し、誤った品詞分解結果を
出してしまう。そとで、入力文の中に「なむ」がある場合には、その直前の語の活用
形に着目して場合分けをする必要が出てくるのである o 入カ文の中に「なむ j がない
場合には、最長一致法に従うだけで正しい品詞分解ができる。
5
.
2 口語訳
次のような手順で口語訳をした。まず、 h
i
n
s
h
i・3と同様に、 h
i
n
s
h
i
5という関数で辞
書部を引いてくる。とのとき、複数の意味があるものは初めに辞書に載っている順序
で書かれていて、しかも語尾の意味が n
i
lになっているので、とのまま、 mapcarで最
初の要素だけを取り出して並べると、正しい意味の文が成立しない。そとで、複数の
意味がある「ば」と「の」、それと語尾を別処理する必要がある。 (rなむ」について
i
n
s
h
i
3で識別したときに意味を一つに確定しているので、とこで別処理の必要は
は
、 h
ない。)
、「の」である。
「の」には主格と連休修飾格があり、現代語の意味はそれぞれ、「が J
辞書は(が、の)の順序になっているので、連体修飾格の「の」の場合、(の、が)の
I
J
原序に書き直さなければならない。「の」の直後に名詞がついていたら、 ζ の処理を行
うととにする。プログラムでは、 n
o
n
o・s
h
o
r
iという関数で処理している。
接続助詞の「ば」には仮定条件と確定条件があって、意味はそれぞれ、 r
..ならば」、
「・・ので」である o 前者の場合は「ば」の直前が「未然形 Jであり、後者の場合は「ば」
の直前が「己然形 Jである o 辞書は(ならば、ので)の順序になっているので、後者
(確定条件)の場合には、「の Jのときと同様に、順序を入れ換えて(ので、ならば)と
a
n
o
s
h
o
r
iという関数で処理し
書き直し、"ので"を最優先とする O プログラムでは、 b
ている。
活用語尾自体には意味をもたせていないが、後ろにくる単語との関係でうまく接続
できるように各々の場合をいちいち書き下した。例えば、「よめる Jの場合、「よ Jは語
幹で、「む」は語尾で、「る」は完了の助動詞であるが、このまま訳語をつなげると「よ
だJ となる。そこで、「詠む J とか「進む J などのマ行に活用する動詞で後ろに「だ」
がつくとき、語幹と「だ J の聞に「ん」をはさんで「詠んだ」とか「進んだ J とすれ
o
b
i
n
o
s
h
o
r
iという関数で処理しているが、
ば、自然な訳文となる o プログラムでは、 g
少し不満が残った。一般性がないので、 ζ れ以上拡張するのには限界を感じてしまっ
たのである。しかし、どうしても口語訳文生成まで達したいので、と ζ は目をつぶっ
て、先へ進む ζ とにする。
i
n
s
h
i
5のような表示法で示したものが、 kougoyaku-lとい
以上の別処理を施して、 h
う関数である。意味部は既に文法を考慮したものになっており、最初の要素がその場合
での正しい意味になっている。あとは、 mapcarで各意味部の最初の要素を取り出して
ougoyaku-2である。
きて、それらを並べれば生成文が完成する o このメイン関数が、 k
とれを実行すると、口語訳された文が出力される。
5
.
3 実行例について
(
図 4) r
年どとの桜の花盛りには、その宮へなむおはしましける。」
の現代語訳までの処理過程
>(hinshi-3 ' ( 年 ど と の 桜 の 花 盛 り に は 、 そ の 宮 へ な む お は し ま し け る ロ ) )
((年どと(名詞)) (の〈格助詞)) (桜(名詞)) (の〈格助詞))
(花盛り(名詞)) (に(格助詞)) (は(係助詞)) 、
( (読点))
(そ〈指示代名詞)) (の(格助詞)) (宮(名詞)) (へ(格助詞))
(なむ(強意の係助詞)) (おはしま〈サ行四段活用の動詞おはします語幹))
(し〈語尾サ行連用形)) (ける〈過去の助動詞けり連体形)) (
0 (句点)))
>(hinshi-5 , ( 年 ど と の 桜 の 花 盛 り に は 、 そ の 宮 へ な む お は し ま し け る
((年どと〈毎年)) (の〈がの)) (桜(桜)) (の(がの)) (花盛り(花盛り))
(に(に)) (は(は)) 、
( (、)) (そ(そ)) (の(がの)) (宮〈離宮))
(へ(へ)) (なむ (NIL)) (おはしま〈おいでにな)) (
し (NIL)) (ける〈た))
(
0 (0)))
o ))
>(kougoyalru-l ' ( 年 ご と の 桜 の 花 盛 り に は 、 そ の 宮 へ な む お は し ま し け る 。 ) )
((年どと〈毎年)) (の(のが)) (桜(桜)) (の(のが)) (花盛り(花盛り))
(に(に)) (は(は)) 、
( (、)) (そ(そ)) (の(のが)) (宮(離宮))
〈へ(へ)) (なむ (NIL)) (おはしま(おいでにな)) (し(られ NIL))
(ける〈た)) (
0 (0)))
>(kougoyalru-2 ' ( 年 ご と の 桜 の 花 盛 り に は 、 そ の 宮 へ な む お は し ま し け る 。 ) )
毎年の桜の花擁りには、その離宮へおいでになられた。
(
図 5) r
世の中にたえて桜のなかりせば春の心はのどけからまし」
の現代語訳までの処理過程
>(hinshi-3 ' ( 世 の 中 に た え て 桜 の な か り せ ば 春 の 心 は の ど け か ら ま し ) )
((世の中〈名調)) (に(格助詞)) (たえて(副詞)) (桜(名調))
(の(格助詞)) (なかり(形容詞左し連用形))
〈せ(過去の助動詞き未然形)) (ば(接続助詞)) (春〈名詞))
〈の(格助詞)) (心(名詞)) (は(係助調))
(のどけ(形容詞のどけし語幹)) (から(形容詞語尾))
(まし(反実仮想の助動詞まし終止形)))
>(hinshi-5 ' ( 世 の 中 に た え て 桜 の な か り せ ば 春 の 心 は の ど け か ら ま し ) )
((世の中〈世の中)) (に(に)) (たえて(全然)) (桜(桜)) (の(がの))
(なかり〈なかっ)) (せ(た)) (ば(ならばので)) (春(春)) (の(がの))
〈心〈心)) (は(は)) (のどけ〈おだやか)) (から (NIL)) (まし〈だろう)))
>(kougoyaku-l , ( 世 の 中 に た え て 桜 の な か り せ ば 春 の 心 は の ど け か ら ま し ) )
((世の中(世の中)) (に(に)) (たえて(全然)) (桜(桜)) (の(がの))
(なかり(なかっ)) (せ(た)) (ば(ならばので)) (春(春)) (の(のが))
やむやむ)) (は(は)) (のどけ(おだやか)) (から (N工L)) (まし〈だろう)))
>(kougoyalru-2 ' ( 世 の 中 に た え て 桜 の な か り せ ば 春 の 心 は の ど け か ら ま し ) )
世の中に全然桜がなかったならば春の心はおだやかだろう
図 4の例では、「なむ」が出てきているが、その直前の語が動詞の未然形あるいは連用
形でないので、ケース 1の係り結びの「なむ」である、とわかる。したがって、「なむ」
に対する訳語は書かれていない。つまり、 "NIL"になっている o また、「の J の意味部
i
n
s
h
i
5と kougoyaku-lの場合で、「の」と「が」の順序が逆になっている
を見ると、 h
ことにも注意する。いずれも、連休修飾格の「の」である。
との文の主語は親王であるが、訳文には明記されていない。古文では主語が省略さ
れることが多いが、コンピュータにこれを補って訳出させることはまだ難しい。
図 5の例では、和歌を入力してみた。文法的には、"未然形+ r
ばJ"の仮定条件が出
ているととと、「の」を識別しているととが重要である o ば」については、この場合、
「ならばJの意味でよいので、辞書の意味部の順序を入れ換える必要はない。また、「桜
の」の「の」は主格であるから、順序を入れ換える必要はないが、「春の Jの「の」は
連体修飾格であるから、順序を入れ換える必要がある。それから、訳文を見ると、直
訳でわかりにくい感じがする。和歌なのであるから、「との世の中に全然桜というもの
r
がなかったならば、花が咲くのを待ち遠しがったり、雨や風に散るのを惜しんだりし
て気をもむとともないので、春を愛する人の心はさぞおだやかなととであろう」とい
うように訳してほしいが、とれは大変難しい。まず、「せば・・・まし」という反実仮想、
の慣用語法によって、逆説的に桜の花への愛着心を表現しているととを理解しなけれ
ばならないし、さらに「なぜ、桜がなければ春を思う心が穏やかになるのか」という
疑問に答える知識をもっていなければならない。 ζ れはコンビュータにとって、相当
な難題である。
(
図 6) r
月も隠れなむとすれば、かの馬の頭のよめる o
J
の現代語訳までの処理過程
(
h
i
n
s
h
i5 1( 月 も 隠 れ な む と す れ ば 、 か の 馬 の 頭 の よ め る 。 ) )
(
(
月 (月)) (
も (も)) (隠(隠)) (
れ (NIL)) (な(しま)) (む(う))
〈と〈と)) (すれ(する)) (ば(ならばので)) 、
( (、)) (か〈あ))
(の(がの)) (馬の頭(馬の頭)) (の(がの)) (よ(詠)) (
め (NIL))
(る(だ)) (
0 (0)))
>(kougoyaku-l ' ( 月 も 隠 れ な む と す れ ば 、 か の 馬 の 頭 の よ め る 。 ) )
((月〈月)) (
も (も)) (隠〈隠)) (れ(れて NIL)) (な(しまお)) (む(う))
(と(と)) (すれ〈する)) (ば(のでならば)) 、
( (、)) (か(あ))
(の(のが)) (馬の頭(馬の頭)) (の(がの)) (よ(諒)) (め(ん NIL))
(る(だ)) (
0 (0)))
>(kougoyaku-2 ' ( 月 も 隠 れ な む と す れ ば 、 か の 馬 の 頭 の よ め る 。 ) )
月も隠れてしまおうとするので、あの馬の頭が諒んだ。
図 6の例では、前に述べたように、ケース 2の「なむ」が出ている。それは、直前の語
は:
J"の確定条件が出て
の活用形が連用形であることからわかる o また、"己然形+ r
いるので、意味部の順序を入れ換えて、「ので Jを先頭にしている ζ とが重要である。
6
おわりに
自分でシステムを作ってみてわかったととは、ただやみくもに長時間コンピュータ
を使っていればできるというわけではなく、まず考えるととに専念して、紙に下書き
してから、まとめてタイプする方が(私にとっては)ょいということである。紙に書
くととによって、どのような関数が必要なのか、との時点、で何が出力されるのか、な
ど細かい点が明確になる。特にリストの操作では括弧がたくさんあって、頭の中が混
乱するととがしばしばあるから、この方法は有効である。
機械翻訳システムはとんでもない誤訳をするととがあるが、つくる側のととを想像
すると、非難できなくなる。分野を限って、単語数も限っても、本格的なシステムを
目指すのは正しい傾向であると思う o N E Cで見せてもらった、音声認識、機械翻訳、
音声合成をつなげたシステムはなかなか興味深かった。
今学期はいろいろなことをやってみたが、来学期は何かに絞って深くやってみょう
かとも思う。とは言っても、幅広い知識は必要であると思うので、まだわからない。
参考文献
[
1
] r
脳の可塑性と記憶」、塚原仲晃著、(紀伊国屋書庖)
[
2
] r
脳の情報処理 J
、塚原仲晃編、(朝倉書庄)
[
3
] r
認知科学と人工知能 J
、安西祐一郎著、(共立出版)
[
4
]
r
CommonL
i
s
p ドリノレ J、湯浅太一著、(岩波書庖)
[
5
] rLISPで 学 ぶ 認 知 心 理 学 (1、 2)J、安西祐一郎、他著、(東京大学出版会)
[
6
] r
人工知能とはなにか」、白井良明著、(岩波書庖)
[
7
] r
人工知能のはなし」、大村平著、(日科技連)
[
8
] r
図解エキスパートシステム入門 J
、戸内順一著、(啓学出版)
Appendix A
「猿とバナナ問題」のプログラム
(defun goa1p (state)
(if (= (fourth state) 0) t ni1))
(defun next-states (state)
(setq states ni1)
(setq s (first state))
(setq c (second state))
(setq m (third state))
(setq b (fourth state))
;
; Moveィn
(if (and (not (= m 1)) (not (= m 0)))
(push (list s c 1 b
) states))
(if (and (not (= m 2)) (not (= m 0)))
(push (list s c 2 b) states))
(if (and (not (= m 3)) (not (= m 0)))
(push (list s c 3 b) states))
(if (and (not (= m 4)) (not (= m 0)))
(push (list s c 4 b
) states))
jj G
rab
) (not (= s 0)) (not (= c 0)))
(if (and (= m c
(push (list 5 0 m b) states))
) (not (= s 0)) (not (= c 0)))
(if (and (= m s
(push (list 0 c m b) states))
) (= b 1
) (not (= s 0)) (not (= c 0)))
(if (and (= m 1
(push (list s c m 0) states))
jj S
tepup-c
(if (and (= m c
) (not (= m 0)) (not (= c 0)))
) states))
(push (list 5 c 0 b
jj S
tepdown-c
(if (and (= m 0) (not (= c 0)))
(push (list s c c b) states))
j;
Hit-b
(if (and (= s 0) (= c 1
) (= m 0) (= b 2))
) states))
(push (list 5 c m 1
jj R
e1ease
) states))
(if (= c O)(push (list 5 m m b
) states))
(if (= s O)(push (list m c m b
states
(defun pick-node (nodes)
(setq 骨 open骨 (sort 骨 open骨 #'node<))
(setq best-node (first 肯open肯))
(setq 骨 open骨 (rest 骨 open骨 ) )
best-node)
(defun node< (node1 node2)
(< (near (first node1))(near (second node2))))
(defun near (state)
(+ (case (first state)(l 0)(0 1)((2 3 4
)5
)
)
(case (second state)(l 0)(0 1)((2 3 4
) 10))
(case (third state)(l 0)(0 1)((2 3 4) 2))
(case (fourth state)(O 0)(1 1)(2 4))))
Appendix B
分 子 式 C3H80の化合物についてのプログラム
(defun bunshishiki (x)
(cond ((equa1 x 'C3H80)
(print '
>
第 2アノレコーノレですか 7) (setq y (read))
(cond ((equa1 y 'yes) (print '(CH3-CH-OH-CH3))
(print 'です。とれを酸化すると何になりますか 7)
(setq z (read))
OK)
(cond ((or (equal z 'アセトン) (equal z 'CH3-CO-CH3)) ・
(
t (list '答えは, (アセトン) 'CH3-CO-CH3))))
(
t (print '
>
第 1アルコールですか 7)
(setq w (read))
(cond ((equal w 'yes) (print 'CH3-CH2-CH2-0H)
)
(print 'です。とれを酸化するとどうなりますか 7
(setq u (read))
(cond ((equa1 u 'CH3-CH2-CHO)
)
(print '0Kです。さらに酸化するとどうなりますか 7
(setq v (read))
(cond ((equa1 v 'CH3-CH2-COOH)
'よくできました。)
(
t (list '答えは 'CH3-CH2-COOH))))
(
t (l;st '答えは 'CH3-CH2-CHO 'です。
'さらに酸化すると 'CH3-CH2-COOH))))
(
t (list 'CH3-CH2-0-CH3 ・です。))))))
(t '他の分子式を入力してください。)))
く有機化合物の分離操作〉プログラム
(defun member (a b)
(cond ((null b) nil)
(
t (cond ((equa1 a (first b)) t
)
(
t (member a (rest b)))))))
(defun remove (a b)
(tond ((equal a (first b)) (rest b))
(
t (cons (first b
) (remove a (rest b))))))
(defun bunri (x)
(cond ((nu11 x) ni1)
((member 'アニリン x)
(setq xl (list ・
(+HC1 ー>) '((C6HS-NH3C1)in水層〉
'(+NaOH ー>)・((仁 6HS-NH2)inーエーテル層〉
'とれがアニリン))
(setq yl (remove 'アニリン x))
(cons xl (cons ,(エーテル層 -when(+ぼりに) (bunri yl))))
((member '安息香酸 x)
(setq x2 (list '(+NaHC03 ー
ー>) '((C6HS-COONa)in-水層)
(+HC1 ー>) '((C6HS-COOH)inーエーテノレ層〉
・
・とれが安息香酸))
(setq y2 (remove '安息香酸 x))
(cons x2 (cons ,(エーテル層 -when(+NaHC03)に) (bunri y2))))
((member ・フェノール x)
(setq x3 (list '(+NaOH ー>) '((C6HS-ONa)inー水層)
'(+HCl ー>) '((C6HS-OH)inーエーテル層〉
'乙れがフェノール))
(setq y3 (remove 'フェノール x))
(cons x3 (cons ,(エーテル層 -when(+NaOH)には) (bunri y3))))
(
t (cond ((nul1 (rest x)) (list x 'が残る))
(t (cons x (list 'が残る'とれらは沸点の違いなどを利用して分離する)))))))
Appendix C
;
;
;
;; く 古 文 の 解 析 と 口 語 訳 〉 プ ロ グ ラ ム
(defun member (a b)
(cond ((nu11 b
) ni1)
(t (cond ((equa1 a (first b)) t)
(
t (member a (rest b)))))))
(defun imp10de (x)
(va1ues
(intern
(app1y #'concatenate
'string
# symbo1-namex)))))
(mapcar ・
(defun remove (a b)
(cond ((nu11 b
) ni1)
((equa1 a (first b)) (remove a (rest b)))
(
t (cons (first b
) (remove a (rest b))))))
(defun hantei-1 (lst1 lst2)
(setq ul (list (imp1ode lst1)))
(cond ((nu11 lst1) ni1)
((member u1 (mapcar #'car lst2)) u1)
(
t (append (hantei-1 (reverse (cdr (reverse 1st1))) lst2) (last 1st1))
)))
(defun toridashi (z1z2)
(setq b1 (car z2))
(cond ((nu11 z2) ni1)
((equa1 z1 (car b1)) b1)
(
t (toridashi z1 (cdr z2)))))
(defun hantei-2 (lst1 lst2)
(setq w1 (list (imp1ode lst1)))
(cond ((nu11 lst1) ni1)
((memberw1 (mapcar #'car lst2)) (toridashi w1 lst2))
(
t (append (hantei-2 (reverse (cdr (reverse lst1))) lst2)
(last lst1)))))
(defun hinshi-l (bun)
(setq x1 (hantei-1 bun (dict)))
(setq x2 (cdr x1))
(cond ((nu11 x2) x1)
(
t (cons (car x1) (hinshi-1 x2)))))
(defun hinshi-2 (bun)
(setq ml (hantei-2 bun (dict)))
(setq m2 (list (caar m1) (cadr m1)))
(setq m3 (last (cadr m1)))
(setq m4 (cddddr m1))
(setq m5 (list (imp1ode (list (car m4) (cadr m4)))))
(cond ((equa1 m5 ,(なむ))
(cond ((equa1 m3 ・〈連用形))
(setq m6 (toridashi ,(な) (dict)))
(setq m7 (toridashi ,(む) (dict)))
(setq m8 (list (caar m6) (cadr m6)))
(setq m9 (list (caar m7) (cadr m7)))
(setq ml0 (cons m2 (list m8 m9)))
(setq m11 (cddr m4))
; r
なむ」の識別
(cond ((null mll) ml0)
(
t (append ml0 (hinshi-2 mll)))))
((equal m3 ,(未然形))
(setq m12 (toridashi ,(なむ) (dict)))
(setq m13 (caar m12))
(setq m14 (mapcar #'car (cdr m12)))
(setq m15 (last (reverse m14)))
(setq m16 (cons m2 (list m13 m15)))
(setq m17 (cddr m4))
(cond ((null m17) m16)
(t (append m16 (hinshi-2 m17)))))
(t (setq m18 (toridashi ・〈なむ) (dict)))
(setq m19 (caar m18))
(setq m20 (mapcar #'cdr (cdr m18)))
(setq m21 (list m19 (car m20)))
(setq m22 (list m2 m21))
(setq m23 (cddr m4))
(cond ((null m23) m22)
(
t (append m22 (hinshi-2 m23)))))))
(
t (cond ((null m4) m2)
(
t (cons m2 (hinshi-2 m4)))))))
(defun hinshi-3 (bun)
(setq kl (hinshi-2 bun))
(setq k2 (car (last kl)))
(setq k3 (reverse (cdr (reverse kl))))
(setq k4 (car (last k3)))
(setq k5 (reverse (cdr (reverse k3))))
(setq k6 (list (list k4 k2)))
(append k5 k6))
(defun hinshi-4 (bun)
;
;
(setq ml (hantei-2 bun (dict)))
(setq m2 (list (caarml) (cadddrml)))
(setq m3 (last (cadr ml)))
(setq m4 (cddddr r
n
l
)
)
(setq mS (list (implode (list (car m4) (cadr m4)))))
(cond ((equal m5 ,(なむ))
(cond ((equal m3 ,(連用形))
(setq m6 (toridashi ,(な) (dict)))
(setq m7 (toridashi ,(む) (dict)))
(setq m8 (list (caar m6) (cadddr m6)))
(setq m9 (list (caar m7) (cadddr m7)))
(setq ml0 (cons m2 (list m8 m9)))
(setq ml1 (cddr m4))
(cond ((null mll) ml0)
(
t (append ml0 (hinshi-4 ml1)))))
((equal m3 ,(未然形))
(setq m12 (toridashi ,(なむ) (dict)))
(setq m13 (caar m12))
(setq m14 (mapcar #'car (cdr m12)))
(setq m15 (last m14))
(setq m16 (cons m2 (list m13 mlS)))
(setq m17 (cddr m4))
(cond ((null m17) m16)
(
t (append m16 (hinshi-4 m17)))))
(
t (setq m18 (toridashi ,(なむ) (dict)))
(setq m19 (caar m18))
(setq m20 (mapcar #'cdr (cdr m18)))
(setq m21 (list m19 (caddr m20)))
(setq m22 (list m2 m21))
(setq m23 (cddr m4))
(cond ((null m23) m22)
r
なむ」の意味処理
(
t (append m22 (hinshi-4 m23)))))))
(t (cond ((nu11 m4) m2)
(
t (cons m2 (hinshi-4 m4)))))))
(defun hinshi-5 (bun)
(setq k1 (hinshi-4 bun))
(setq k2 (car (last k1)))
(setq k3 (reverse (cdr (reverse k1))))
(setq k4 (car (last k3)))
(setq k5 (reverse (cdr (reverse k3))))
(setq k6 (list (list k4 k2)))
(append k5 k6))
(defun no-no-shori (lst1 lst2)
;
;
(setq a1 (car lst1))
(setq c1 (car lst2))
(setq a2 (cadadr lst1))
(setq a3 (cdr lst1))
(setq c2 (cdr lst2))
(cond ((and (equa1 a1 ,(の〈格助調))) (equa1 a2 ,(名調)))
(setq c3 (reverse (car (reverse c1))))
(setq c4 (reverse (cons c3 (cdr (reverse c1)))))
(cond ((nu11 c2) c4)
(
t (cons c4 (no-no-shori a3 c2)))))
(
t (cond ((nu11 c2) c1)
(
t (cons c1 (no-no-shori a3 c2)))))))
r
の」の意味処理
(defun ba-no-shori (lis1 1is2)
;
; r
ば」の意味処理
(setq d1 (car 1is1))
(setq e1 (car 1is2))
(setq d2 (cddr 1is1))
(setq e2 (cddr 1is2))
(setq d3 (cadr 1is1))
(cond ((and (equa1 d3 ・(ば〈接続助詞))) (equa1 (last (cadr d1)) ,(いぜん形)))
(setq e3 (cadr 1is2))
(setq e4 (cdr (reverse e3)))
(setq e5 (reverse (car (reverse e3))))
(setq e6 (reverse (cons e5 e4)))
(setq e7 (cons e6 e2))
(cond ((nu11 e2) (list e1 e6))
(
t (cons e1 (ba-no-shori (cdr 1is1) e7)))))
(
t (cond ((nu11 (cdr 1i51)) 1is2)
(
t (con5 e1 (ba-no-shori (cdr 1is1) (cdr 1is2))))))))
;;語尾の処理
(defun gobi-no-shori (p1 p2)
(setq u1 (car p1))
(setq v1 (car p2))
(setq u2 (cdr p1))
(setq v2 (cdr p2))
(setq u3 (cadr u1))
(setq u4 (cadar u2))
(setq u5 (list (car u4)))
(cond ((and (equal u3 ,(語尾ラ行連用形)) (equa1 uS ,(完了の助動調)))
(setq v3 (cons 'れて (cadr v1)))
(setq v4 (reverse (cons v3 (cdr (reverse v1)))))
(cond ((nu11 (cdr u2)) (cons v4 (car v2)))
(t (cons v4 (gobi-no-shori u2 v2)))))
((and (equa1 u3 ,(完了の助動詞ぬ未然形)) (equa1 u5 ,(推量の助動詞)))
(setq v5 (list (imp1ode (reverse (cons 'お (cadr v1))))))
(setq v6 (reverse (cons vS (cdr (reverse v1)))))
(cond ((nu11 (cdr u2)) (cons v6 (car v2)))
(
t (cons v6 (gobi-no-shori u2 v2)))))
((and (equal u3 ・(語尾マ行いぜん形)) (equal uS ・〈完了の助動調)))
(setq v7 (cons '
ん (cadr vl)))
(setq v8 (reverse (cons v7 (cdr (reverse vl)))))
(cond ((null (cdr u2)) (cons v8 (car v2)))
(t (cons v8 (gobi-no-shori u2 v2)))))
((and (equa1 u3 ,(語尾サ行連用形)) (equa1 uS ,(過去の助動調)))
(setq v9 (cons 'られ (cadr vl)))
(setq vlO (reverse (cons v9 (cdr (reverse vl)))))
(cond ((nu11 (cdr u2)) (cons vlO (car v2)))
(t (cons vlO (gobi-no-shori u2 v2)))))
(
t (cond ((nu11 u2) vl)
(t (cons vl (gobi-no-shori u2 v2)))))))
(defun kougoyaku-l (bun)
(setq xxl (no-no-shori (hinshi-3 bun) (hinshi-S bun)))
(setq xx2 (ba-no-shori (hinshi-3 bun) xxl))
(setq xx3 (car (last xx2)))
(setq xx4 (reverse (cdr (reverse xx2))))
(setq xxS (car (last xx4)))
(setq xx6 (reverse (cdr (reverse xx4))))
(setq xx7 (list (list xxS xx3)))
(setq xx8 (append xx6 xx7))
(setq xx9 (gobi-no-shori (hinshi-3 bun) xx8))
(setq xxlO (car (last xx9)))
(setq xxll (reverse (cdr (reverse xx9))))
(setq xx12 (car (last xxll)))
(setq xx13 (reverse (cdr (reverse xxll))))
(setq xx14 (list (list xx12 xxlO)))
(append xx13 xx14))
(defun kougoyaku-2 (bun)
(setq yyl (kougoyaku-l bun))
(setq yy2 (mapcar #'cdr yyl))
(setq yy3 (mapcar #'caar yy2))
(setq yy4 (remove '
n
i
1 yy3))
(implode yy4))
トップレベル関数
(defun dict n
i
l
;;辞書(単語,品詞,接続,意味〉
(list ・((世の中) (名詞) n
i
l (世の中))
,((に) (格助調) (体言) (に))
i1 (全然))
,((たえて) (副詞) n
i1 (桜))
,((桜) (名詞) n
,((の) (格助詞) (体言) (がの))
,((なかり) ( 形 容 詞 な し 連 用 形 ) nil (なかっ))
,((せ) ( 過 去 の 助 動 調 き 未 然 形 ) (連用形) (た))
,((ぽ) (接続助詞) (未然形いぜん形) (ならばので))
,((春) (名詞) n
i1 (春))
,((心) (名詞) n
i1 (心))
,((は) (係助詞) ni1 (は))
,((のどけ) ( 形 容 詞 の ど け し 語 幹 ) n
i1 (おだやか))
,((から) (形容詞語尾) nil (nil))
,
((まし) (反実仮想、の助動調まし終止形) (未然形) (だろう))
,((年どと) (名詞) n
il (毎年))
,((花盛り) (名詞) n
i1 (花盛り))
,((、) (読点) n
i1 (、))
,((そ) (指示代名調) n
il (そ))
,((宮) (名詞) n
i1 (離宮))
,((へ) (格助詞) (体言) (へ))
,((なむ) (他に対する願望の終助詞強意の係助調) (未然形 ni1) (ほしい n
i1))
,((おはしま) ( サ 行 四 段 活 用 の 動 調 お は し ま す 語 幹 ) ni1 (おいでにな))
,((し) ( 語 尾 サ 行 連 用 形 ) nil (
ni1))
,((ける) ( 過 去 の 助 動 詞 け り 連 体 形 ) (連用形) (た))
i1 (0 ))
'((0 ) (勾点) n
,((あるじ) (名詞) n
i1(主人))
,((親王) (名調) n
i
l (親王))
,((酔) (ノ、行四段活用の動詞酔ふ語幹) n
i
l (酔))
,
((ひ) (語尾連用形) n
i
l(
n
i
l
)
)
,((て) (接続助詞) (連用形) (て))
・((入) (ラ行四段活用の動詞入る語幹) n
i1 (入))
,((り) (語尾連用形) n
i
l(
n
i
1
)
)
,((給ひ) (尊敬の補助動調給ふ連用形) n
i1 (なさる))
,((な) (完了の助動調ぬ未然形) (連用形) (しま))
・((む) (推量の助動詞む終止形) (未然形) (う))
,((と) (格助調) (体言) (と))
,((す) (サ変動詞す終止形) n
i1 (する))
,((月) (名調) n
i
1 (月))
i1 (も))
,((も) (係助詞) n
,((隠) (ラ行下二段活用の動詞隠る語幹) n
i1 (隠))
,((れ) ( 語 尾 ラ 行 連 用 形 ) n
i
l(
n
i
l
)
)
,((すれ) (サ変動詞すいぜん形) n
i
1 (する))
・((か) (指示代名詞) n
i1 (あ))
,((馬の頭) (名調) n
i
l (馬の頭))
i
l (詠))
,((よ) (マ行四段活用の動詞よむ語幹) n
,((め) (語尾マ行いぜん形) n
i
l(
n
i
l
)
)
,((る) (完了の助動調り連体形) ((サ変動詞未然形) (四段活用の動調いぜん形)) (だ))
,((おしなべて) (副詞) n
i
l (皆一様に))
,((峯) (名詞) n
i
l (峯))
,((たひらに) (形容動調たひらなり連用形) n
i
l (平らに))
・((なり) (ラ行四段活用の動調なる連用形) n
i1 (なっ))))
慶麿義塾大学湘南藤沢学会
KeioU
n
i
u
e
r
s
i
t
yShonanFujisawaGal
<
:
l
<
:a
i
Fly UP