The 19th Annual Conference of the Japanese Society for Artificial Intelligence, 2005

1B1-06

言語表現によるプログラミングの実験的考察
An Experimental Study on Computer Programming with Linguistic Expressions∗1

金子 望∗1

鬼沢 武久∗1

Nozomu KANEKO

Takehisa ONISAWA

筑波大学 システム情報工学研究科

Systems and Information Engineering, University of Tsukuba

This paper describes the end-users programming system that generates computer programs through interaction
using linguistic expressions with users who have little knowledge of computer programming. The present system
employs the idea of computer programming by paraphrasing, which is usually used as human’s everyday communication. The system also employs the case-based reasoning method for paraphrasing so that users can add themeanings of linguistic expressions that the system does not have. Two subject experiments are carried out in order
to confirm the usefulness of the present system. The one task is simple text editing and the other task is more
complex one. Ten subjects in all perform the experiments and the experimental results are discussed in this paper.

1.

2.

はじめに言い換えによるプログラミング

言語表現を用いたコンピュータプログラミングは , 言語表現から機械言語への変換とみなせる. ここで , 変換プロセスは図1 のように「 翻訳」と「 言い換え 」の 2 つの部分に分けられる. 言語表現の集合 L は無数に要素が存在するのに対して, 機械言語 M はそれより要素の数がずっと少ない有限の集合である. そこで , M とほぼ 1 対 1 に対応する部分集合 L0 を定めて, L0 と M の間でのみ写像 t を定義する. このとき, 翻訳は特定の言語表現と機械言語の間の写像 t である. また言い換えは L 内の 2 つの言語表現の間の写像 p である. そして, 任意の言語表現に対し , 複数の言い換えを行うことにより翻訳可能な言語表現 L0 へと写像し , 最終的に機械言語へと翻訳する. 言
い換えは言語表現間の写像であるため, プログラミングの知識を持たないエンド ユーザでも理解できるという利点がある.

自然言語 (NL) は , 人間のコミュニケーション手段の中で最も柔軟かつ表現力豊かなものである. そのため機械と人間のインタフェースに自然言語を用いることは人工知能研究の重要なテーマの一つとなっており, 積木の世界において人間と自然な英語で対話を行う SHRDLU システム [1] など , 人工知能研究の初期から盛んに研究されている. 近年では従来の数値に基づく情報処理に代わってあらゆる情報処理を日常言語で行う「日常言語コンピューティング 」という概念が提案されるなど , 言語の持つ重要性が改めて指摘されている [2].
従来のコンピュータプログラミングはプログラミング言語を用いて行われるため, プログラミング言語の知識を持たないエンド ユーザがプログラミングを行うことは困難である. このような問題を解決するために , これまでエンド ユーザプログラミングに関する様々な研究が行われてきた. その一つに , 直接操作による例示によってプログラムを自動生成する Programmingby Demonstration (PBD) 技術がある [3]. しかし , PBD システムは直接操作のみからユーザの意図を推論するため, 常にユーザの意図がシステムに正し く伝わるとは限らず, そのような推論エラーをユーザが訂正することは困難である. また, 言語表現を用いたエンド ユーザプログラミングシステムには例えば , 英語による入力から Java 言語の構文木を生成する
NaturalJava [4] や, オントロジーを用いて概念レベルで問題解決を行う CLEPE [5] などがある. しかしこれらのシステムは , 限定された世界に関する知識のみを扱っていたり, 実世界の膨大な量の知識が必要であったりと, 未解決の問題を持っている.

LMtpL0


図 1: 翻訳と言い換え

本研究では , プログラミングの知識を持たないエンド ユーザ
でも自然にプログラミングを行えるように , 人間同士の日常的な対話で有効な「言い換え」をプログラミングの手段として取り入れた “言い換えによるプログラミング ” [6, 7] の考え方を採用する. システムの行う言い換えには事例ベース推論を用いる. そのためシステムにとって未知の言語表現の意味を, ユーザ自身が追加することが可能である. 本論文では , テキスト編集タスクを実行する 2 種類の被験者実験を行い, システムの有効性を実験的に議論する.

3.

システム構成本システムの構成を図 2 に示す. 本システムは言語表現によってユーザと対話を行いながら , 言い換えと翻訳を通じてプログラムを生成する. 言い換えと翻訳には事例ベース推論を用いており, ユーザは言い換え事例を追加することが可能である. 翻訳事例に関しては , ユーザはその妥当性を判断できない
ためユーザによる追加は行わず , あらかじめ必要な事例を用意しておくものとする. システムは入力された言語表現と類似した事例を検索し , 選択された事例を基に言い換えまたは翻訳を出力する. なお本システムは , テキストエディタ GNU Emacs上に構築されており, Emacs Lisp を用いて実装している.

連絡先: 〒 305-8573 茨城県つくば市天王台 1-1-1
E-mail: nozom@fhuman.esys.tsukuba.ac.jp1

The 19th Annual Conference of the Japanese Society for Artificial Intelligence, 2005   (1) (2)

 ! 

(3)

 

図 3: 言い換え生成の流れ図
図 2: システム構成

3.1

4.

翻訳実行部

翻訳実行部は , 事例ベース推論を用いて入力された言語表現からコンピュータプログラムを生成する. 翻訳実行部は言語表
現とプログラムの対応関係を記述した翻訳事例のデータベースを持っており, 句構造に基づいて入力された言語表現を事例ベースに含まれる言語表現と比較する. 言語表現の句構造は ,形態素解析と係り受け解析を行った結果の構文木として得られる. 形態素解析には茶筌 [8] を用いている.

3.2

実験

本システムの有効性を検証するために実験を行う. 実験は
GNU Emacs 21.3 を使用して行われ , 実験環境の OS は Linuxである.

4.1

実験 1

実験 1 の被験者は 5 名で , 図 4 に示す編集前の文章を, 図 5に示す編集後の文章に変換するための言語表現を入力することで行われる.

言い換え実行部

言い換えも翻訳と同様に事例ベース推論によって実行されるが , 出力がプログラムではなく言語表現であるという点が異なる. 言い換えは以下の手順で行われる. まず , 入力された言語表現に部分的に一致した事例が候補として選択される. 構文木同士の類似度を, Convolution Kernel [9, 10] に基づいて (1)式により定義する.

K(T1 , T2 ) = max max C(n1 , n2 )n1 ∈N1 n2 ∈N2

タイトル：言語理解の構造
著者：テリー・ウィノグラード
出版社：産業図書
出版年：1976
ISBN：4-7828-5236-3

図 4: 編集前のテキスト (実験 1)(1)
テリー・ウィノグラード ：『言語理解の構造』，産業図書 (1976).

ここで T1 ,T2 は構文木であり, N1 ,N2 はそれぞれ T1 ,T2 に含まれる全てのノード の集合である. また, ノード 間の類似度
C(n1 , n2 ) は次のように求められる.

図 5: 編集後のテキスト (実験 1)

Case 1. ノード n1 と n2 の品詞が異なるとき, C(n1 , n2 ) = 0
実験の結果, 5 人の被験者全員が目標とするプログラムを作成している. 表 1 は得られた言い換え事例の内訳を示したものである. 「具体化」はある言語表現の意味を具体的に言い直した場合である. ユーザの意図とシステムが実行可能な操作の間に概念的なギャップが存在する場合, 「具体化」の言い換えによってそのギャップが埋められる. 例えば , 「文献データのフォーマットを変更する」を具体的に言い換えると、「タイトルを編集して、著者と出版社を移動して、出版年を書く」のようになる. 「言い回しの変更」はユーザ自身の言葉をシステムの語彙に追加する言い換えの一種で, 例えば「選択する」と「 選択を開始する」の間の言い換えである. それ以外に , ユー
ザの入力ミスやシステムのバグによって誤って追加された事例がいくつか存在する.

Case 2. ノード n1 と n2 が同一の単語のとき, C(n1 , n2 ) = 1
Case 3. ノード n1 と n2 が同一の単語でなく, かつ n1 と n2の品詞が同じとき,
C(n1 , n2 ) =YY

(1 + C(k, l))(2)k∈ch(n1 ) l∈ch(n2 )ただし (2) 式において ch(n1 ), ch(n2 ) はそれぞれ n1 , n2 の子ノード の集合である. 次に , システムは入力された言語表現との類似度が高い候補から順に , 図 3 の手順で新しい言い換えを生成する. (1) 言い換え事例の言い換え前の言語表現と入力された言語表現を比較し , 句構造同士の差分を検出する. (2) 言
い換え事例の言い換え後の言語表現に (1) で得られた差分を適用する. その結果, (3) 新たな言い換えを生成する. 最後に , 生成された言い換えが入力された言語表現に対して適切かど うかをユーザに尋ね , 適切と判断された場合は新たな言い換えをデータベースに登録する.

3.3

表 1: 言い換え事例の内訳 (実験 1)
被験者
ABCDE 全体

言い換え事例の追加類似事例が見付からなかった場合, ユーザ自身に言い換えを求め, 言い換え事例を追加する. このようにして追加された言語表現はその後の対話で使用することができる.

2具体化
言い回しミス
バグ

10110

6
500

16
10
11181221625066
1993

総数121128232397

The 19th Annual Conference of the Japanese Society for Artificial Intelligence, 2005
実験終了後に「システムの使いやすさ」「得られた言語表現の主観的な分かりやすさ」「言い換えによるプログラミングは直観的かど うか 」について 5 段階評価のアンケートを行っている. その結果は表 2 のようになり, 概ね言語表現を用いたプ
ログラミングは理解しやすいという評価が得られている.

表 5: 実験 1 で得られた言い換え事例 (被験者 B)

表 2: アンケート結果 (実験 1)
被験者
システムの使いやすさ
言語表現の分かりやすさ
直観的かど うか

A
344B
445C
445

言い換え前言い換え後選択する。
削除する。
右へ移動する。
行末へ移動する。
文頭へ移動する。

選択を開始する。
選択範囲を削除する。
右に移動する。
行末に移動する。
文頭に移動する。
選択する。
「：」を検索する。左に移動する。削除する。
右に移動する。
「『 」を挿入する。行末に移動する。
「 』」を挿入する。
「著者」を検索する。右に移動する。選択する。行末に移動する。コピーする。文頭に移動する。貼り付ける。
「出版社」を検索する。右へ移動する。選択する。行末へ移動する。コピーする。文頭へ移動する。行末へ移動する。
「，」を挿入する。貼り付ける。
「出版年」を検索する。右に移動する。選択する。行末に移動する。コピーする。文頭に移動する。行末に移動する。
「（ 」を挿入する。貼り付ける。行末に移動する。
「 ）. 」を挿入する。
行末に移動する。選択する。文末に移動する。削除する。
タイトルを編集する。著者を移動する。出版社を移動する。出版年を書く。しあげする。

タイトルを編集する。

D234E
454

著者を移動する。
出版社を移動する。

出版年を書く。

表 3 は被験者毎の言い換えの傾向を示したものである. この
表から , 被験者 B, C は言い換え後の言語表現の約 30%が再び他の言語表現に言い換えられていることがわかる. 一方, 被験者 D はそのような複数回の言い換えをほとんど 行っておらず,入力した言い換えが再利用されることが少ないため, 言い換え後の言語表現が非常に多い. このように , 言い換えの傾向は被験者によって大きく異なっている.

しあげする。
文献データの書式を変更する。

課題 (1) 1 行目をタイトルにする
課題 (2) “*” で始まる 3 行目を大見出しにする
課題 (3) 行頭が “-” で始まる部分を箇条書きにする

表 3: 言い換えの傾向 (実験 1)
ABCDE
全体
言い換え後の言語表現の総52
49
88 113
96 398数 (= X)(平均) (4.33) (4.45) (3.14) (4.91) (4.17) (4.10)

課題 (4) 図 6 のテキスト全体を編集し , Web ブラウザで図 7のように表示されるようにする.

被験者

複数回の言い換えが行われた言語表現の数 (= Y )

Y /X

10

15348

11

78

19%

31%

39%

7%

12%

20%

この課題は , 課題 (1)∼(3) のすべての内容に加えて,HTML 形式にするための追加の課題を含んでいる.

Wiki とは*概要

この実験で得られた言い換え事例の一部を表 4 および表 5に示す. この結果から , 被験者毎に異なった言い換え事例が獲得されていることがわかる. それぞれの言い換えは単なる表記の違いだけでなく, その構造についても被験者毎に異なっており, これは各被験者の知識構造を反映したものと考えられる.

ウェブブラウザから発行・編集可能なツール、またはそのツールによって作られたウェブサイトのこと。誰でも簡単に記事を発行・編集できる点が Wiki の特徴。

*整形ルール**段落、見出し 、テキストの整形
通常は入力した文字がそのまま出力されますが、以下のルールに従ってテキスト整形を行うことができます。

表 4: 実験 1 で得られた言い換え事例 (被験者 A)
言い換え前HTML のタグは書けません。

言い換え後-1 行目はタイトルになります。
-空行は段落の区切りとなります。
-アスタリスク (*) を行頭に書くと、大見出しになります。
-アスタリスク 2 個 (**) を行頭に書くと、小見出しになります。
-マイナス (-) を行頭に書くと、箇条書きになります。

文頭に移動。
「著者」を検索。行頭に移動。選択を開始す
著者を行頭に移動。
る。行末に移動。切り取る。１文字削除。文頭に移動。
改行。文頭に移動。貼り付ける。
著者を文頭に移動する。
著者を行頭に移動。
著者にコロンをつける。
文頭に移動。
「著者」を検索。行末に移動。
「：」を挿入。
文頭に移動。
「タイトル」を検索。２文字右に移動。
「『 」
タイトルに括弧とコンマをつける。
を挿入。行末に移動。
「 』, 」を挿入。
出版年にカッコとピリオドをつけ 文頭に移動。
「出版年」を検索。２文字右に移動。
「（ 」をる。
挿入。行末に移動。
「 ）. 」を挿入。
改行を消す。
行末に移動。１文字削除する。
「著者：」を削除。
「著者：」を「 」に置換。
文頭に移動。
「著者: 」を「 」に置換。行末に移動。改行タグ消しその１。
を消す。
「タイトル : 」を「 」に置換。行末に移動。改行を消す。
「出版社: 」を「 」に置換。改行を消す。
「出版年: 」をタグ消しその２。
「 」に置換。
１行下に移動。行頭に移動。選択を開始する。行末に移タグ消しその３。
動。選択範囲を削除する。
著者を文頭に移動。著者にコロンをつける。タイトルに括弧とコンマをつける。出版年にカッコとピリオドをつ
文献データの書式を変更する。
ける。タグ消しその１。タグ消しその２。タグ消しその３。

4.2

図 6: 編集前のテキスト (実験 2)

実験の結果, 被験者 5 名中 3 名が 4 つの課題を全て達成できているが , 2 名の被験者 G,I は課題 (4) が達成できていない.
これらの被験者はシステムとの対話においてしばしば言語表現の意味を正確に理解せず , そのため課題を達成できなかったものと考えられる.
実験後に行ったアンケートの結果は表 6 の通りである. 実験
2 は実験 1 と比べて難しい課題であるにも関わらず, 言語表現の分かりやすさ, および直観的かど うかの項目について, 分かりやすい, あるいは直観的と答えた被験者が多い. しかしシステムの使いやすさに関しては実験 1 より実験 2 で有意に低下が見られ , 課題の複雑さに対して不十分であるということがわかる. 一方, 表 7 は , 被験者がそれぞれの課題に対して感じた難易度を「とても易しい」から「とても難しい」までの 5 段階で回答した結果である. どの被験者も課題 (3) と課題 (4) で難実験 2

実験 2 では , 被験者に以下の 4 つの課題を与え , 図 6 に示すテキストを編集して, 図 7 に示すような HTML 形式とするための言語表現を入力する実験を行う. 本実験の被験者は実験 1とは別の 5 名である.

3

The 19th Annual Conference of the Japanese Society for Artificial Intelligence, 2005
した. 実験の結果, 本研究で提案する言い換えを用いたプログ
ラミングは , ユーザにとって直観的な方法であり, 得られる言語表現も分かりやすいものであるという結果が得られた. しかし 複雑な問題に対しては現在のシステムのインタフェースでは不十分であり, 何らかの支援機能が必要であることがわかった. また, 現在のシステムは文法的でない入力を扱うことができないため, ユーザに入力形式をある程度制御してもらっているが , 初心者ユーザを対象にする場合これは問題となる. そのため, 入力が非文法的であっても何らかの知識に基づいた言い換えを行って文法的な誤りを訂正するといった処理が必要になると考えられる.

参考文献[1] テリー・ウィノグラード : 『言語理解の構造』, 産業図書
(1976).

図 7: 編集後の状態 (実験 2)
易度が高くなったと感じており, 特に最後まで課題を達成できなかった被験者 G と I については課題 (3) で既に「とても難しい」と感じている.

[2] 伊藤紀子, 杉本徹, 岩下志乃, 岩爪道昭, 高橋祐介, 小林一郎, 菅野道夫: “セミオティックベースを使った日常言語ア
プ リケーションシステム (第 2 報)”, 第 18 回人工知能学会全国大会, 石川, 2C1-05, June 2004.

表 6: アンケート結果 (実験 2)
被験者
システムの使いやすさ
言語表現の分かりやすさ
直観的かど うかF
244G224H252I245[3] Henry Lieberman: “Your Wish is My Command: Programming by Example”, Morgan Kaufmann Publishers (2001).

J244[4] David Price et al.: “NaturalJava: A Natural Language
Interface for Programming in Java”, Proc. of 5th International Conference on Intelligent User Interfaces,
New Orleans, Louisiana, pp. 207-211 (2000).

表 7: 実験 2 の各課題の難易度
被験者
課題 (1)
課題 (2)
課題 (3)
課題 (4)

F1
134G
335-

H
1244I
335-

[5] Kazuhisa Seta, Mitsuru Ikeda, Osamu Kakusho, andRiichiro Mizoguchi: Capturing a Conceptual Model for
End-User Programming: Task Ontology As a StaticUser Model, Proc. of 6th International Conference on
User Modeling, Chia Laguna, Sardinia, pp. 203-214(1997).

J1135

図 8 は課題 (3) で生成されたプログラムの例である. 図の上部に示す言語表現に対応して, 下部のプログラムが生成される.

[6] 金子望, 鬼沢武久: “対話と言い換えを用いた言語表現によるプログラミングシステム”, 第 18 回人工知能学会全国大会, Vol.18, pp.3E2-05 (2004).

行頭が "-"とマッチしたら、箇条書きのタグを挿入する⇓[7] Nozomu Kaneko, Takehisa Onisawa: “End-User Programming by Linguistic Expression employing Interaction and Paraphrasing”, SCIS & ISIS 2004, Keio Univ,
Japan (2004).

(if (save-excursion (beginning-of-line) (looking-at "-"))(progn(beginning-of-line)(delete-char 1)(insert "<li>")))[8] 松本裕治 他: 形態素解析システム『茶筌』version 2.3.0
使用説明書, 奈良先端科学技術大学院大学 (2003).

図 8: 生成されたコンピュータプログラムの例
実験後に多くの被験者から指摘されたことは , 追加した事例の修正を行いたいというものである. 現在のシステムでは被験者の試行錯誤が考慮されていないが , 被験者は課題を達成するための作業手順を明確に説明できない場合には試行錯誤で課題を行うことが多い. よって, 本実験の課題 (4) のような複雑な問題に対しては何らかの支援機能が必要であると考えられる.

5.

[9] M. Collins, N. Duffy: “Convolution Kernels for Natural Language”, Neural Information Processing Systems, Vol. 14, pp. 625-632 (2002).
[10] Tetsuro Takahashi, Kozo Nawata, Kentaro Inui, Yuji
Matsumoto: “Effects of Structural Matching and Paraphrasing in Question Answering”, IEICE Transactions
on Information and Systems (2003).

おわりに

本稿では , 言語表現を用いたエンド ユーザプログラミングシ
ステムについて記述し , 被験者実験によってその有効性を確認

4