STUDENT (computer program)

STUDENTWikipediaの記事です。 

例があまりにも手抜きなので PAIP の第7章冒頭の紹介文を追加しました。

 

STUDENT (computer program)

 STUDENT is an early artificial intelligence program that solves algebra word problems. It is written in Lisp by Daniel G. Bobrow as his PhD thesis in 1964 (Bobrow 1964). It was designed to read and solve the kind of word problems found in high school algebra books.[1] The program is often cited as an early accomplishment of AI in natural language processing.

STUDENTは、代数の問題を解決する初期の人工知能プログラムです。これは、1964年に Daniel G. Bobrow によって彼の博士論文として書かれた Lisp プログラムです(Bobrow 1964)。高校の代数書に見られるような用語の問題を読んで、解決するように設計されています。このプログラムは、自然言語処理における人工知能の初期の成果として頻繁に引用されています。

 

Example

("Paradigms of Artificial Intelligence Programming" 第7章冒頭の STUDENT の解説を抜粋します)

STUDENT was another early language understanding program, written by Daniel Bobrow as his Ph.D. research project in 1964. It was designed to read and solve the kind of word problems found in high school algebra books. An example is:

STUDENTは、Daniel BobrowがPh.D.として書いた初期の言語理解プログラムのもうひとつの事例でした。これは高等学校の代数書に見られるような問題を読んで解決するように設計されています。例は次のとおりです。

"If the number of customers Tom gets is twice the square of 20% of the number of advertisements he runs, and the number of advertisements is 45, then what is the number of customers Tom gets?"

STUDENT could correctly reply that the number of customers is 162. To do this, STUDENT must be far more sophisticated than ELIZA; it must process and "understand" a great deal of the input, rather than just concentrate on a few key words. And it must compute a response, rather than just fill in blanks. However, we shall see that the STUDENT program uses little more than the pattern-matching techniques of ELIZA to translate the input into a set of algebraic equations. From there, it must know enough algebra to solve the equations, but that is not very difficult.

STUDENTは、顧客の数が162人であることを正しく答えることができます。これを行うには、STUDENTはELIZAよりはるかに洗練されていなければなりません。いくつかのキーワードに集中するのではなく、多くの入力を処理して「理解する」必要があります。また、空白で埋めるのではなく、応答を計算する必要もあります。しかしながら、STUDENT プログラムでは、入力を代数方程式のセットに変換するために、ELIZAのパターンマッチング技法を全く使用していないことがわかります。そこから、方程式を解くのに十分な代数を知っていなければなりませんが、それほど難しいことではありません。

The version of STUDENT we develop here is nearly a full implementation of the original. However, remember that while the original was state-of-the-art as of 1964, AI has made some progress in a quarter century, as subsequent chapters will attempt to show.

ここで開発するSTUDENTのバージョンは、オリジナルのほぼ完全な実装です。しかし、1964年の最古の最先端技術である一方で、AIは25年後にいくつかの進歩を遂げました。

Translating English into Equations The description of STUDENT is:

英語を方程式に変換するSTUDENTの説明は次のとおりです。

 

  1. Break the input into phrases that will represent equations.
  2. Break each phrase into a pair of phrases on either side of the = sign.
  3. Break these phrases down further into sums and products, and so on, until finally we bottom out with numbers and variables. (By "variable" here, I mean "mathematical variable," which is distinct from the idea of a "pattern-matching variable" as used in pat-match in chapter 6).
  4. Translate each English phrase into a mathematical expression. We use the idea of a rule-based translator as developed for ELIZA.
  5. Solve the resulting mathematical equations, coming up with a value for each unknown variable.
  6. Print the values of all the variables. 
  1. 入力を方程式を表すフレーズに分割します
  2. 各フレーズを=記号の両側のフレーズのペアに分割します
  3. これらのフレーズを和や積などにさらに分割して、最後に数字と変数を使用します。 (ここでの "変数"とは、第6章のpat-matchで使われている "パターンマッチング変数"の考え方とは異なる "数学変数"を意味します)
  4. 各英語のフレーズを数学的表現に変換します。 ELIZA用に開発されたルールベースによる変換のアイデアを使用します
  5. 結果の数学的方程式を解き、それぞれの未知の変数の値を求めます
  6. すべての変数の値を出力します

For example, we might have a pattern of the form (If ?x then ?y), with an associated response that says that ?x and ?y will each be equations or lists of equations. Applying the pattern to the input above, ?y would have the value (what is the number of customers Tom gets). Another pattern of the form (?x if ?y) could have a response corresponding to an equation where ?x and ?y are the two sides of the equation. We could then make up a mathematical variable for (what) and another for (the number of customers Tom gets). We would recognize this later phrase as a variable because there are no patterns to break it down further. In contrast, the phrase (twice the square of 20 per cent of the number of advertisements he runs) could match a pattern of the form (twice ?x) and transform to (* 2 (the square of 20 per cent of the number of advertisements he runs)), and by further applying patterns of the form  (the square of ?x) and (?x per cent of ?y) we could arrive at a final response of (* 2 (expt (* (/ 20 100) n) 2)), where is the variable generated by (the number of advertisements he runs).

例えば、形式 (If ?x then ?y) のパターンがあり、?x と?y がそれぞれ方程式または方程式のリストであることを示す応答があります。上記の入力にパターンを適用すると、?y は値 (what is the number of customers Tom gets) を持つことになります。形式 (?x if ?y) の別のパターンは、?x と ?y が方程式の2つの辺である式に対応する応答を持つことができます。次に、 (what) の数学変数と (the number of customers Tom gets) のための数学変数を作り上げることができます。それをさらに分解するためのパターンがないので、この後の語句を変数として認識します。対照的に、フレーズ (twice the square of 20 per cent of the number of advertisements he runs) は、形式 (twice ?x) のパターンと一致し、 (* 2 (the square of 20 per cent of the number of advertisements he runs)) に変換することができ、さらに形式 (the square of ?x)と形式 (?x per cent of ?y) のパターンを適用することにより、 (the number of advertisements he runs) により生成される変数である(* 2 (expt (* (/ 20 100) n) 2)) の最終応答に到達することができます。