&size(35){モチベーション低下要因の発見支援};
*研究概要 [#g2d86c36]
**背景と目的 [#x2f74797]
近年,日本ではモチベーション低下が問題となっている.モチベーションとは,何かをしようという動機のことである.モチベーション低下による問題の顕著な例は「ニートやフリーターの増加」だろう.
そこで本研究では,内発的動機付け,ロイ適応看護理論,そして素朴心理学から導き出される認知的均衡理論に基づいて,人のモチベーション低下要因を発見するシステムの構築を目指す.
**背景理論 [#re84b801]
内発的動機付けは「何かをしたいという思い」のことであり,人が誰しも持っているものとされる.
看護理論は人のメンタルケアのための理論である.その1つであるロイ適応看護理論では,人間は生理的様式,自己概念様式,役割機能様式,相互依存様式の4つのシステムにより環境に適応していく生物と規定している.本研究では,人間の概念ネットワークを構成するための考えとしてこの理論を用いた.
認知的均衡理論は,人の認識のサイクル構造が均衡状態か不均衡状態かをサークル上の符号の積が+か−によって決めることができるものである.&color(red,white){本研究では,認知的均衡理論でいう不均衡状態をモチベーション低下状態と捉える.};
**システム概要 [#pc32a952]
ロイ適応看護理論を用いて構成された概念ネットワークを認知的均衡理論に当てはめることによって,概念ネットワーク中の不均衡サークルを発見し,それに対する改善案を出力するシステムを構築した.
システム実現のためのプログラミング言語として[[Prolog]]を用いた。
本システムのユーザは,本稿中に書かれた使用法に則ってケア対象者の概念ネットワークをプログラムファイルに記述し実行することによって,不均衡サークルのリストとその解消法の選択肢を得ることができる.
構築したシステムのプログラムソースについて説明する.ユーザはプログラム内にケア対象者の概念ネットワークを書き足し,保存,実行する.
実行されたプログラムは,認知的均衡理論に基づいて,その概念ネットワーク内の不均衡サークルと,それに対する均衡化のための解消法を出力する.
**プログラム [#e7ca462f]
以下に不均衡発見システムのプログラムソースを示す.
1 : /* 隣接した概念を結ぶ述語arc */
2 : arc( self, self_concept, 2 ).
3 : arc( self, interdependence, 2).
4 : arc( self, role, 2).
5 : /* 隣接した概念を結ぶ規則next,単方向であるarcを双方向にする*/
6 : next( X, Y, A) :- arc( X, Y, A).
7 : next( X, Y, A) :- arc( Y, X, A).
8 : /* 第一引数Xが第二引数のリスト内にあるかどうか調べる規則member */
9 : member(X,[X|_]).
10 : member(X,[_|Y]) :- member(X,Y).
11 : /* XからYまでを探索し,XからYまでのルートを変数Rootに入れる規則go */
12 : go(X,X,T,Root) :- not(T = [_,_]), reverse(T,Root).
13 : go(X,Y,T,Root) :- next(X,Z,_), not(member(Z,T)), go(Z,Y,[Z|T],Root).
14 : /* Xから始まるサークルがあるかを探索する規則circle_search */
15 : /* あればRootにそのサークルのルートが代入される */
16 : circle_search(X,Root) :- next(X,Y,_),go(Y,X,[Y],Root).
17 : /* Xから与えられたリストの最後までを結ぶアークの積を計算する規則keisan */
18 : keisan(_,[],P) :- P is 1.
19 : keisan(X,[A|B],P) :- next(X,A,Value1), keisan(A,B,P2), P is Value1 * P2.
20 : /* 均衡化のために改善する必要のあるアークを出す規則improve */
21 : /* 値が1か-1のものだけを改善する必要のあるアークとして表示 */
22 : improve(_,[]) :- nl.
23 : improve(X,[Y|A]) :- next(X,Y,-1), write(improve : arc(X,Y,-1)->arc(X,Y,1)), nl,
24 : write(improve : [X]->0), nl, write(improve : [Y]->0), nl,
25 : write(improve : [X]->[new_idea]), nl, write(improve : [Y]->[new_idea]),nl,
26 : improve(Y,A).
27 : improve(X,[Y|A]) :- next(X,Y,2), improve(Y,A).
28 : improve(X,[Y|A]) :- next(X,Y,1), write(improve : arc(X,Y,1)->arc(X,Y,-1)), nl, improve(Y,A).
29 : /* Xから始まるサークルのアークの値を全部かける計算をする規則calc */
30 : /* ユーザはこの規則を使うことによって,不均衡サークルと,改善ポイントを知る */
31 : calc(X) :- circle_search(X,Root), keisan(X,Root,P), P<0, write(Root), nl, improve(X,Root), nl.
32 : calc(X) :- circle_search(X,Root), keisan(X,Root,P), P<0, write(Root), nl, improve(X,Root), nl.
***プログラム中の述語と規則の説明 [#ace491e4]
|arc | 概念同士を結ぶ述語.ここでは,骨格部分のみが記述されている.ユーザはここに他の概念を書き加える.|
|next| 単方向であるarcを双方向に変換する.arc(A,B).とarc(B,A)というように同 じ概念を結ぶアークを2つ書く手間を軽減させる.|
|member| 第一引数が第二引数のリストに含まれるかどうかを判定する.|
|go| 第一引数から第二引数までのルートを探索する規則.ルートがあればそのルートを返す.|
|circle_search| サークルを探す規則.渡された引数から,再びその引数にかえってくるルートがある場合に真となる.|
|keisan| 与えられたリストの概念間をつなぐアークの値をすべてかけて,積を求める規則.|
|improve| 与えられたリストに対する不均衡解消法を表示する規則.|
|calc| 引数としてselfを与えるとそこから始まる不均衡サークルを探索し,そのサークルのリストとそのサークルに対する不均衡の解消法を表示する.ユーザが使うのはこの規則calcのみである.ユーザはcalc(self)と入力することで,最上位概念selfから始まるサークルの不均衡を発見することができる.|
***実行環境 [#pdb85e87]
本システムの実行環境は以下の通りである.
OS:WindowsXP
Prolog:SWI-Prolog5.6.x
**動作実験 [#qd5a3aa4]
以下に動作実験に用いた概念ネットワークを示す.
#ref(sample1(2).jpg)
以下は実行結果の一部である.
1 : 1 ?- calc(self).
2 : [self_concept, self_ideal, want_to_play_game, should_study, student, [20, m
ale], son, father,interdependence, self]
3 : improve:arc(self_concept, self_ideal, 1)->arc(self_concept, self_ideal, -1)
4 : improve:arc(self_ideal, want_to_play_game, 1)->arc(self_ideal, want_to_play
_game, -1)
5 : improve:arc(want_to_play_game, should_study, -1)->arc(want_to_play_game, sh
ould_study, 1)
6 : improve:[want_to_play_game]->0
7 : improve:[should_study]->0
8 : improve:[want_to_play_game]->[new_idea]
9 : improve:[should_study]->[new_idea]
10 : improve:arc(should_study, student, 1)->arc(should_study, student, -1)
11 : improve:arc(student, [20, male], 1)->arc(student, [20, male], -1)
12 : improve:arc([20, male], son, 1)->arc([20, male], son, -1)
13 : improve:arc(son, father, 1)->arc(son, father, -1)
2行目で表示されているのが不均衡状態のサークルであり,3〜13行目で表示されているのがそのサークルを均衡にするための改善法である.
5行目に表示されている“improve:arc(want_to_play_game, should_study, -1)->arc(want_to_play_game, should_study, 1)”
の意味は,「want_to_play_game(ゲームをしたい)」と「should_study(勉強をしなければ)」の概念間のアークをマイナスからプラスに変更するということである.
6行目に表示されている“improve:[want_to_play_game]->0”の意味は,「want_to_play_game(ゲームをしたい)」という概念を消滅させるということである.
9行目で表示されている“improve:[should_study]->[new_idea]”の意味は,「should_study(勉強をしなければ)」という概念を何か他の新しい概念に置き換え
るということである.
**考察 [#k90c79bd]
動作実験の結果,不均衡サークルのリストとその解消法の選択肢を得るという目標は達成できた.しかし,ユーザの手間が大きいことや,
出力された結果が直感的にはわかりにくいなどの問題もある.
今後の展開として,入力の手間を軽減することによってユーザに使いやすいシステムにすること,概念ネットワークを図として表示し,どこの
概念が問題であるかをわかりやすくすることが求められる.本システムの応用事例としては,臨床心理学のカウンセラーによる患者のカウンセリングや,アルバイトの統括者による,アルバイトの管理などが考えられる.
**研究発表での質問・コメント [#i0d16ba2]
&color(blue){(Q)なんで認知的均衡理論の不均衡状態をモチベーション低下状態と考えたのか?例を見ると、モチベーション低下というよりストレスだと思うが。};
&color(red){(A)僕の主観です。こういう見方もできるという一手法として考えたのですべての場合が正しいとは言い切れません。};
&color(blue){(Q)入力する概念ネットワークを作るのはその人自身?};
&color(red){(A)概念ネットワークを作るのは本研究の対象外だが、先行研究ではその人自身ではなく対象者と対話者の対話によって作られる。};
&color(blue){(Q)入力する手間とか考えたらコンピュータに計算させなくても、手計算の方が早いんじゃ?一番の問題は、プラスかマイナスの関係かというのを決めるところだと思う。};
&color(red){(A)実際に試してみたわけではないが、確かに同じくらい時間がかかってしまうかもしれない。しかし、手計算でやると見落としなども考えられる。ケア対象者が複数になれば、手計算の方が面倒だと考えられる。};
&color(blue){(Q)中間発表のときに上位から2つか3つの概念は変更されないと言っていたのに、このシステムの実行結果だと変更できるようになっているが?};
&color(red){(A)便宜上、そうしたが表示しないように変更可能です。};
&color(blue){(Q)これも中間発表のときに言ったが、1つのサークルを改善することで、他のもっと大きなサークルが不均衡になる場合もあると思うが、それはどうするのか?};
&color(red){(A)どの不均衡サークルを改善するとかいうのはユーザに任せることにして、不均衡状態のサークルをすべて出力させるようにしました。};
&color(blue){(Q)selfから始まるサークルしか検出しないの?};
&color(red){(A)今回使用法としてcalc(self).と入力するようにさせたが、calc(root).とすればrootからのサークルも検出できるので、この部分を換えればすべてに対応します.};