数理解析研究所講究録
第 1780 巻 2012 年 130-140130MathML 記述の数式を対象とした
木構造に基づく検索システムの提案・開発

静岡大学情報学部

宮崎

静岡大学大学院情報学研究科

佳典 (Yoshinori Miyazaki)
Faculty of Informatics,
Shizuoka University
林 佳樹 (Yoshiki Hayashi)

Graduate School of Informatics,
Shizuoka University

1

はじめに

Web 上で数式を表現する際に，ユーザは多くの妥協を強いられてきた．数式の持つ特徴を維持する，標準的な記法がなかったためである．これに対して近年，Web 上で数式を扱う技術として MathML が浸透しつつある．その MathML 表記の数式に対し，検索システムがいくっか提案されてきている．ただ，それらの先行研究には，あいまい検索機能を持たない，扱える数式に大きな制約がある，ヒット率が低く実用レベルに達していない，等の点でいずれも部分的な実装にとどまっているようである．これに対し，本稿は MathML で記述された数式を対象としたあいまい数式検索システムを提唱するものであり，MathML の持つ木構造表現を用いたアルゴリズムを実装し，部分一致やあい
まい検索が可能で，かつ高精度な数式検索システム開発を研究の目的とする．

1.1$a\ovalbox{\tt\small REJECT}_{R}\equiv$

近年の Web の発達と共に，必然的に検索機能の重要性は高まっている．ことさらに，

数式は数学はもちろん物理学や経済学などの多くの分野で用いられ，教育という側面か
らも初等教育から利用されている．数式を検索する一例として，Google や Yahoo!等の検索エンジンを用いたキーワード検索が考えられるが，数式を検索する際に考えられる. 定義や定理名からの検索 ii. プレーンテキストからの検索はいずれも限定的である．
というのも，についてはすべての数式において定義や定理名があるわけではなく，それらが無い数式を検索することはできない．ii については，プレーンテキストでは数式
$i$

$i$

が複雑になればなるほど，同一の数式に対する表現法が多岐に渡る$\int[1,2]$

f(x)dx とも $\int[1arrow 2]$ f(x)dx,$\int_{-1^{\ovalbox{\tt\small REJECT}}2}f$(例 : $\int_{1}^{2}f(x)dx$ は(x)dx とも書かれることがある) 等

が検索への障害となる．また，構造の複雑な数式をプレーンテキストで入力するのは至難の業である．そもそも数式は Web 上では画像に変換されているケースも多く，そうなると特定の手立て 1 を講じない限り検索は困難である．
1 例えば，IMG タグに ALT オプションを付け，そこに数式情報を埋め込むことができるが，上述の問題に結局は帰着する．画像認識技術を用いることも考えられるが，精度面の問題も挙げられる．

131
1.2

検索システムに対する二一ズ研究に先立ち，学習者の数式検索経験や理想とする数式検索システムの機能を把握する為，大学で担当する計 4 講義の受講者 125 名 2 を対象にアンケートを実施した．
アンケートにおいて，オンライン・オフラインにかかわらず数式検索経験の有無について質問したところ，「ある」を選択した人数は 102 人であった．また，検索の頻度について質問した際に多かった回答を下に記述する．括弧内の数字は，各々の回答数である．

1 コマの講義中に数回 (65 名)
強の際に頻繁に調べる (4 名)$\bullet$$\bullet$

数式を扱う問題 2,3 問につき 1 回 (8 名)$\bullet$

テスト勉

よって学習者は学習中にある一定数，数式検索を行っている事が分かる．また，数式検索の手段について質問したところ，次の回答結果が得られた (複数回答可).
$\bullet$

教科書やノートから手当たり次第に探した (79 名) 数式の定理の名前を基に索引で数式に関する用語を使ってインターネットで探した (8 名)$\bullet$

探した (33 名)$\bullet$

また，数式を検索する際に，その数式をどの程度覚えていたかについては数式を完全に覚えていた (7 名)

数式をあいまいながら覚えていた (83 名) ・定理
や定義名は分かっていたが，数式自体は思いだせなかった (35 名) ・その他 (2 名)のような結果となった (複数回答可). この結果から，検索の際，当該の定理名などを$\bullet$$\bullet$

索引で検索するケースは少数派である点や，探そうとしている数式に対しての記憶は非常にあいまいであることが分かる．

今回アンケートを実施し，数式に接する機会の多い理系の学生のみならず，文系の学生からの意見も吸収する中で，学習者が求める数式検索システムは「数式に対して一部のあいまいな記憶からの検索が可能なシステム」であると考える事ができる．
1.3

研究の目的

本稿では，学習者が e-Learning などの Web 上の教育システム内で数式検索システムを利用することを想定し，部分一致検索を基本の検索方法としたあいまい検索に対応す
る数式検索システムの構築を行うことを目的とする．それに加え，検索クエリを生成するのに手間取らないよう，我々が実際入力するような 2 次元表記の数式入力で検索ができるシステムにするねらいもある．検索対象とする数式は MathML のプレゼンテーショ
ンマークアップ (詳細は後述する) で記述されたものとする．MathML の性質上，検索精度を上げるために木構造表現法を用いた検索アルゴリズムを提唱する．本検索システ
ムが実現されることにより，学習者が e-Learning などの教育システム内において，精緻
なかつ融通の利く数式検索が可能となり，学習活動が継続される，関連する数式がヒットすることで周辺領域の学習意欲を誘うなど，より一層の学習効果を生むという副次的な効果も期待される．

2 学部生 (理系) 向けの「微分積分学 II」 (40 名), 大学院生 (理系) 向け「計算過程論」 (12 名), 学
部生 (文理融合系) 向け「基礎数学 II」 (42 名)[以上静岡大学], 学部生 (文系) 向け「情報機器の操作と応用 II」 (31 名)[以上常葉学園大学].

132

2

MathML 記述データ用検索システムにかかわる先行研究

2.1

MathML とは

MathML[l] は WWW 上の数式表現の標準技術として $W3C[2]$ から勧告されている
XML ベースの数式記述用マークアップ言語である．MathML は現在 3.0 が 2010 年 10 月に勧告され，今後もより様々なシステムに取り入れられていくと考えられる．数式の表
記をメタデータとして持つプレゼンテーションマークアップ (Presentation Markup)と，数式の意味をメタデータとして持つコンテンツマークアップ (Content Markup) の2 つのカテゴリが存在し，同時にこの両者を合わせて記述するミックスドマークアップ (Mixed Markup) も併せ持つ．表 1 にプレゼンテーション．マークアップの代表的なタグの数例を示す．

MathML は FireFox をはじめとする Mozilla ベースの Web ブラウザ，他にも Amaya な
どの Web ブラウザが標準でサポートしている．Internet Explorer では現在標準でサポートされていないが，MathPlayer[3] (フリーソフト) をインストールすることで，MathMLで記述された数式が Web ブラウザ上で自然な数式として閲覧可能となる．MathML の
ソースコードを生成するソフトとして，BIffi コードを MathML コードに変換するコン
バータソフトや MathML コードを出力する数式作成支援ソフトなどがある．
MathML は，Web 上の数式メタデータの標準技術として $W3C$ が勧告する点，さらに，$I4Tffi$ と比較して他の XML ボキャブラリと柔軟に連携できる点，(コンテンツマーク
アップの場合は) 数式の意味情報を付加できる点などから Web 上において数式を表現する技術として優位性が高いと言える．LMS (Learning Management System, 学習管理システム) や多くのソフトウェアで保存や読み込み形式として採用されている事実はその裏付けとなろう．上述のように，コンテンツマークァップは数式の意味をより確実に端的に表せるため，検索という観点ではプレゼンテーションマークアップよりも適している．しかし， 炸入から MathML へのコンバータソフトと数式作成支援ソフトで$\mathbb{F}$

出力される MathML の多くはプレゼンテーションマークアップである．実際，WWW上で流通している MathML データのほとんどはプレゼンテーションマークアップのデータである．プレゼンテーションマークアップからコンテンツマークアップへの変換技術も開発されているが，大武らの研究 [4] にもあるように，MathML のプレゼン
テーション．マークアップの記述の自由度を完全に吸収することは難しい．
以上より，現時点では MathML ならびにその関連技術の現状を考慮し，MathML のプレゼンテーション．マークアップを対象とした数式検索が最適であると考える．
表 1: プレゼンテーション．マークアップのタグの例

133
2.2

先行研究・関連研究

数式検索システムにおける先行研究・関連研究には次のようなものがある．まず，橋本ら [5] による数式検索のためのインデックスに関する調査がある．MathML を考慮したインデックスを利用した検索のため，高速に検索が可能という利点がある．一方で，インデックスを厳密に定義しすぎているため，あいまい検索は行えないと推察される．

また，小田切ら [6] による MathML を用いた数式検索がある．他の研究がクエリとして数式を入力するのに対して，これは検索したい数式の形や関数をテキストベースのクエリとして検索を行う．テキストベースの検索クエリのため，数式入力用シーケンスを利用者に覚えさせるという負担が発生することが課題として挙げられる．
村方ら [7] の数式検索システムはクエリが 2 次元表記の数式として生成可能で，ユーザの負担が少ないと考える．しかし，検索方法に制約があり，あいまい検索は行えない．
宮崎ら [8] による数式検索システムは，MathML で記述された数式を対象に正規表現を用いた数式検索システムを実現したものである． ”( 文字以上の任意の文字列) な
$”*$

$0$

どの正規表現を使えるため，精度面では不十分ながら 3, あいまい検索も可能となっている．しかし，数式には 2 次元の構造があり，また MathML は XML ベースのマークアップ言語ゆえ，文章上で論理構造や意味を持たせることができる事から，検索アルゴリズ
ムとしては正規表現に比べ木構造を考慮した手法が好ましいと考えられる．

3

MathML データの前処理
本研究では 2.1 節で理由を述べたように MathML のプレゼンテーション．マークアップで記述された数式を検索の対象としている．プレゼンテーション．マークアップは，数式の見た目に関する情報を記述することを目的とした表記方法のため，同一の数式を表す際でも様々な表記が可能である．そこで，本稿では，前処理をすることで一定のルールに基づいて MathML を整形することとする．また，より効率的な検索に向け，プレゼ

ンテーションマークアップの元来有する木構造表現の強固な構造化を図ることとする．

3.1

MathML データの整形

mrow タグの整形
mrow は数式の水平方向の位置的な構造を明示するタグである．例えば，下の表記 (a),表記 (b) に示す MathML コードは，どちらも “ $x^{y+1}$ ” を表し，ここに自由度が存在する．

mrow タグはいくっかのタグをグルーピングするなどの目的に使用されるため，1 っのタグを mrow で囲むことに副作用は発生しない．逆に mrow タグを取り除いた場合，正常な表記とならないケースは多々考えられる．そこで mrow の記述の自由度を吸収する
為に，グループ化不要な 1 つのタグであっても mrow タグを付ける処理を施した．つまり，表記 (a) のような MathML コードを表記 (b) の形に整形した．
3 構造を加味した検索が行えないため，ユーザが意図しない数式がしばしば出力されてしまうことが確認されている．

134
く$math>$$<math>$く msupく msup$>$$>$く $mo>x$ く/mo $>$く mrow $>$く $mr\circ w>$$<mo>x$ く $/mo>$

く $mo>y$ く/mo $>$く/mrow

mi $>+$ く $/mi>$く mrow$<$

く $mo>y$ く/mo $>$く $mn>1$ く/m $>$く $mi>+$ く $/mi>$

く $/mrow>$

く/msupく/math$>$$>$く $m>1$ く $/mn>$$>$

く/mrow$>$

く/msup$>$$>$く $/math>$

表記 (b)

表記 (a)

予約語を含む (含まない) 数式記述の整形“$\sin(\cdot)$”, abc ’ という数式 (文字列) を見たときに，人間は前者を正弦関数，後の積と通常認識するであろう．しかしいくつかのコンバータ (MathML“

者を変数 $a,$”に変換する) は，前者を “ く$mi>s$ く/mi く$mi>i$ く/mi く$mi>n$ く/miと出力してみたり，逆”に後者を く $mi>abc</mi>$ としたりする 4. これらを吸収するため，よく知られる関数$b,$ $c$

$>$

$>$

$>$

名は予約語として定義し，予約語と一致する文字列はまとめて mi タグで囲み，そうでない場合は文字単位で mi タグ囲みとした 5.
スペースタブ改行コード属性値の削除

MathML データ中にスペースやタブ，改行コードが存在した場合，検索の阻害要因となりうる．そこでデータ登録時に事前にこれらのコードを除去する．同様に本稿ではタグの属性値も除去している (例 : $”<mn$ fontcolor blue
実体参照 10 進数文字参照 16 進数文字参照の整形$=\prime\prime$

$||>$

”

は “ $<mn>$

”

に変換).

MathML では数学記号やギリシャ文字は複数の表記法で記述できるようになっている．
$”\pm$
これらの複数の表記法を考慮した場合，例えば，の場合 3 種類存在し，正規表現パターンは &(plusmn 1 (0 1771 $x0*B1$ )) ;” となり，検索処理の負担が増大する．そこで
今回は，これを 16 進数文字参照に統一して登録した (上の例では &#xBl; で固定).
$”$

$\#$

$*$

$”$

3.2

”

MathML データの更なる構造化

Mathematica の開発・販売元でもある Wolfram 社が Web 上で公開している数学公式集サイト [9] や，MathML へのコンバータソフトの出力から得られる MathML データ形
式の多くは，下図 1 に示すような構造をしている．以下，模式図においては，木構造の紹介を重視するため，mi や mrow などのタグ名は表記しない．
4 当然
が変数 s,i, の積，abc が 1 変数だったりすることも考えられるが，コンバータソフトはこういったことを考慮して変換しているわけではないため，今回は一律にこのルールを適用する．
5 予約語が別の予約語を文字列として含む場合は，与えられた文字列の中で最大文字数となる文字列の““, “cosec ” が予約語として挙げ
予約語をまとめて mi タグで囲んだ．例として，cosec にはられるが，これを0 $\sec$ でも $cos\cdot e\cdot c$ でもなく，cosec とみなした．
$\sin$

$n$

$c$

.

$\cos^{n},$$\alpha_{S\infty}$

135

図 1: MathML の構造

図 1 に示した木構造は，数式 $y=x+(-i+1)\cross 3^{n}$ を MathML 表記したときのそれである．見ても分かる通り，ほとんどが並列に並んでいるだけで，構造を加味した検索を想定した際，理想的な形とは到底言えない．そこで本稿では MathML のさらなる構造化を行っている．詳細は以下に示すようになっており，演算子の優先順位が高いもの
から段階的に構造化を行っている (優先順位が高い順に列挙している). なお，括弧と四則演算以外の演算子は，MathML のフォーマットとして既に構造化されている :1 括弧の構造化，2) 単項演算子の構造化，3) 二項演算子
”,
の構造化，
,,
,
$”=,$
4 二項演算子 $+”,$の構造化，5)
の構造化
“

$)$

$)$

$\cross$$”\div$”$-$以上の構造化によって元の (図 1 の) 構造から図 2 に示すような木構造にし，数式の情報を保持した上で検索を行う．このように木構造にすることで，例えば図 3 のようなあいまい検索時の効率よい処理が見込まれる (左側のクエリ (例) にがあるため，
対応する対象データ (右側) の大半をスキップすることができる様を表している).
$*$”

図 2: 構造化処理後の木構造
図 3: あいまい検索の構造化の利点

4

木構造に基づく検索アルゴリズム

木構造検索アルゴリズムを以下に示す 基本的な動作は (a) クエリと対象数式の先頭ノードから順に照合していく，(b) (合致すれば) ノ $-$ ドを各々移動し，更なる照合処理

136を行う という処理の繰り返しを，両者が不一致となるか，いずれかの次のノ $-$ ドが枯$(0$文字
渇するまで行うことである．また，照合を行う際にはクエリ側のノードが以上の任意の文字列を表すワイルドカード) であった場合，あいまい検索処理に移行す$*$

る．下記アルゴリズムの実装は，DOM に提供されているサービスを用いて比較操作等を行うため，大規模なコーディング作業を要しない．なおここに，Node(s) とはポイン
タ が指すノード (の値) を出力する関数，Move(s) とはポインタ を次のノード 6 に移
$s$

$s$

動する関数とする:

Т靄楔〆 アルゴリズム$\gg$

1. クエリ，対象数式となる木の (Math タグを除く) 先頭ノ $-$ ドへのポインタを各々 ,
$q$

$t,$

$tO$

に割り当てる．

2. 以下を繰り返す (終了条件は Node(q) が Null 値を取る，または探索失敗の場合) :2.1. Node(q) が “

$*$

”

の場合 :

Node(q) の子ノ $-$ ドがない場合，q,t を各々兄弟ノード (なければ親ノ $-$ ドをたどって次のノード) に移動．子ノードがの場合，2.1 に戻って再帰処理を行う．子ノードが以外の場合， の子ノードと Node(t) が異なればMove(t) を実行，等しければ Move(q) を実行する．
$*$

$*$

”

”

$q$

22. Node(q) が “$*$以外の場合 :

Node $(q)=$ Node(t) の場合，Move(q), Move(t) を各々実行．そうでなければ探索失敗．

3. 2. で探索成功の場合 (Node $(q)=$ Null の時) は終了，そうでなければ を初期値に戻し，Move $(tO)$ を実行かつ $tarrow tO$ とし， が Null 値となるまで 2. を繰り返す．
$q$

$tO$

4. 3. が終了した時点における探索成功/失敗の値が最終的な探索結果となる．

4.1

部分一致検索アルゴリズム

本稿では，あいまいな記憶からの数式検索を可能にする為，部分一致検索を基本としをマッチする数式と見ている．例えばクエリ $x+1$ に対して，“ $y+x+1$ や “なす．本来クエリ及び検索対象の数式は，同じ仕様で整形構造化されており，木構造のがとしては一致するはずである．しかしながら，図 4 のように，クエリは
”
が“
の第 2
第 1 子ノードであるのに対し，検索対象の数式 $(” y+x+1” )$ は “
子ノ $-$ ドである．そこで，今回構造化した MathML データから，所望の数式を取得する) の直左に変数または定数が現れる場
ための法則性を抽出した．演算子 (例えば “合，図 5 左の木構造中にある O 印のノードのみを調べればよいことがわかるだろう．逆に演算子の直右に変数または定数が現れる場合は図 5 右の O 印のノードを見ればよい．
“””$y^{x+1}$

”

”

”

$+$

$x$

$x$

$+$

6 優先順位は次の通りとする :1. 子，2. 兄弟，3. 親ノ $-$ ドをたどって次のノード

$+$

137
4.2

あいまい検索アルゴリズム”

原理としては，クエリ側の $”*$ の次のノードを参照し，そのノ $-$ ドと一致するもの
を，対象の数式中から探す処理となる．また，検索を行う中で，上記の処理 ( Т靄楔索アルゴリズム ) に加え数式の階層を判別する処理も行っている．数式中には上付き文字や分数といった多数の異なる水平位置のレベルが存在し，本稿ではこれを「階層」と呼ぶことにする．MathML において，この階層を変化させるタグは限られている (例えば，上付き文字であれば msup, 分数であれば mfrac といった具合) ことを利用して不要な検索対象データの誤ヒットを防ぐのが目的である．階層判別をしないと，例えばクエリ $x^{*}+y$ に対して数式 “ $x^{1+y}$ ” がヒットしてしまう．
クヱリ

対象の数式

図 4: 部分一致検索における問題図 5: 検索時の演算子周辺の探索方法

5

実験

5.1

データセットの準備

本研究では当面の設定として，Web 上の特定の教育コンテンツ内での利用を想定している．そこで，数式を最も多く扱うであろう (静岡大学情報学部の) 数学系科目で教科書または参考書として指定されている計 5 冊のテキスト内に出現する数式の個数を調べた．その際，数式としてカウントする基準として /(不) 等号・集合の包含関係を表す

関係演算子が使用されているもの/段落が独立しているもの/数式番号が付加されているもの/ のいずれかとした．その結果は，(教科書 1, 教科書 2, 教科書 3,
教科書 4, 参考書 $1)=(2853,1370$ , 2528, 2042, 1642 であった．以上の結果からいずれの個数も上回る$)$

3,000 個の数式を選ぶことで実用に耐えうるものとし，今回 [9] から試行的にデータセッ
トとして用意した．

5.2

精度比較実験 ([8] をターゲットにした場合)

木構造表現を用いた検索アルゴリズムの正当性を検証するため，比較対象として正規表現法を用いた検索アルゴリズム [8] を選択した．理由は直接の先行研究に比して改良の程度を精査したかったからということと，他の先行研究で公開されているものが見当た

138らなかったからである．以下に示す 10 つの検索クエリ IRl $\sim IRlO$ を数式作成支援ツー
ル [10] を用いて発行し，正しく数式をヒットさせることができるか調査した．なお，理論値は 3,000 の数式に対し，目視で行った．
, IR3: $1-*y$ , IR4: $gcd(*, *)$ , IR5:

IRl: $\sin(z)$ , IR2:$\underline{\log(*)}*$

IR6: sin, IR7: $\sin^{2}(*)=-**$ , IR8:$(*$ $)$$=\underline{\sqrt{*}}*$$\int e^{*}$, IR9:$-*_{*}^{*}*$$\frac{\tan^{2}(*)}{\tan^{2}(*)+1}$,, IR10: $m+n*-1$ .

各クエリの意味は本研究では以下のように定義している:$\bullet$$\bullet$

クエリに等号 $(=)$ がない場合は，部分一致した場合 (っまり，クエリの数式表現を内部に含むような数式だった場合),クエリに等号がある場合は左辺は完全一致，かつ，右辺が前方一致する場合．
“,,

これは等号がある場合，右辺は例えば無限級数などでを使用したり，大量の項が現れることがあるため，自然な設定と言える．なお，あいまい検索 (部分一致検索) のが IRl を除く各クエリに少なくとも 1
精度を確かめたかったため，ワイルドカード “$*$”

つは入っている (IRl は完全一致を確認するために用意したクエリである). 実装が完了していないため，今回はクエリに行列は含めていない．
検索結果を表 2 に示す．
「正規表現」，「木構造表現」とあるのは，正規表現法，木構造表現法を各々実装したシステムで検索した抽出結果である．数値の中で X(Y) の形式を取る場合は，X 個ヒットしたが，実際はヒットすべきではない数式が Y 個あった (つまり正しいヒット数は X-Y 個) ことを意味する．
表 2: 各クエリの 2 検索アルゴリズムによる検索結果ならびにその理論値

表 2 より，両アルゴリズムの精度比較について言及してみると，まずは IRl (完全一致検索) については，両者共に正しく数式をすべて取得することに成功しているため，正常通りに動作していると考えて良いだろう．残りの 9 個の $IR2\sim IR10$ についてはワイ
ルドカード “を含むあいまい検索となっている．先に，正規表現法の結果についてわかったことは，いずれも再現率の意味では 1 となっており，取りこぼしなく数式を取得することに成功していることがわかる．これは正規表現法の極めて特徴的な性質である．一方で，適合率は IR4,IR5 を除いては 1 とはならず，多くの検索結果で本来ヒット$*$”すべきではない数式を抽出してしまっていることがわかる．適合率の幅も過半数が 80)90%台であるが，50 % を割り込む結果も 2 つ存在している
ように，ワイルドカード “

$*,$

,

$(IR3,IR9)$. 理由は上述したがシーケンシャルな文字列に対して任意の文字列に対応

139
することになるため，その中に構造を含む記述があった場合に対応できていないことによる (つまり構造的に不適合な数式を峻別できていない).
一方で，木構造表現法の結果については，$IR2\sim IR8$ と，残りの IR9,IRIO に分けて考察を加える．まず前者については，適合率，再現率ともに 1, そしてもちろん F 値も 1となる．逆に，IR9,IRlO については，本手法では 1 件も取得できておらず，F 値も O となってしまう．

いま，木構造表現法を用いた検索で正常に動作しなかった理由を，IRIO を例にとって考えてみる．なお，クエリは $m+n*-1$ であり，検索対象とする数式を $m+n+0-1$と設定する．当然，これはヒットしてよい数式である．それに対して，取得に失敗した
理由として，両者の木構造の違いが挙げられる (図 6 参照).
””

クエリの木構造

対象数式の木構造$m+n*-1$$m+n\div 0-1$

図 6: 木構造検索でヒットさせられなかった数式の例

図 6 のように，クエリの木構造と対象の数式の木構造の構造が異なる為，ヒットできなかったのは自明である．今回 MathML コードに対して行った前処理 (整形) の仕様
は，演算子の階層化を密に行い，構造を厳密に生成した為，構造を問わない検索 (例えば，$m+n*-1$ というクエリでは木構造の異なる $m+nz-1$ や “ $m+n+y-1$
”

“

”

”

をヒットさせる) には十分に対応しきれていないと判断される．

それ以外にも，まだアルゴリズムの不具合については精査をする必要があろう．MathMLの自由度を吸収し，一定のルールの下で MathML の整形を行った上で木構造表現を用いた検索を行ったことで，多くの数式を正しく取得することに成功したことは朗報と言えよう．しかし一方で，構造化されたクエリ対象数式をマッチさせることができないのは，本来ならば構造に焦点を当てた検索がお家芸であるはずの木構造検索法の確立がまだ道半ばであることを示している．

6

結論

本稿では Web 上の e-Learning 用コンテンツ内において，MathML (プレゼンテーショ
ンマークアップ) で記述された数式を対象とした検索システムの構築を行った．MathML
が XML ベースのマークアップ言語であるという性質に着目し，木構造表現を用いた検140
索アルゴリズムを考案実装 7 した．パイロット実験結果より，完成はしていないものの，
先行研究 ([8]) に比べユーザが意図する数式を正しく返すことが大方確認された．ユー
ザの負担軽減策として，不完全ながら 2 次元表記の数式入力が可能なツールを用意した
ことも本研究の特長として挙げておきたい．一方で，正確な検索結果を得られない例も含まれていたため，木構造の整形の仕様を改良し，検索アルゴリズムを根本から見直す
必要もあろう．両検索アルゴリズムで甲乙つけがたい結果となった検索例があったことも事実である．1 つの方向性として木構造表現法と正規表現法のハイブリッド化が考えられ，相補的な検索ができるか検討に値しよう．また，短期的な課題としては，現時点で実装が済んでいない行列表現等への対応，より多様なアドバンスト検索の実装 (例えば Not 検索や複合検索など), XQuery を基幹アルゴリズムに据えた検索システムの提案などが挙げられる．将来の展望としては，検索速度を飛躍的に向上させ，教育システ
ムでの使用のみならず，検索エンジンとして対象範囲を広げたいと考えている．

参考文献[1] MathML, http: $//www.w3$ .org/TR/MathML3/.
[2] $W3C$ , http: $//w3$ .org/.

[3] MathPlayer, http://www.dessci.com/en/products/mathplayer/.
[4] 大武信之，金堀利洋: 「XML 数式意味記述のための半自動変換」 , FIT(情報科学技術フオーラム), 2003.
[5] 橋本英樹，土方嘉徳，西田正吾: 「MathML を対象とした数式検索のためのインデックスに関する調査」，情報処理学会研究報告データベース・システム研究会報告，
Vol.2007, No.54, pp.55-59, 2007.
[6] 小田切健一，村田剛志: 「 $MathML$ を用いた数式検索」，The $22nd$ Annual Conferenceof the Japanese Society for Artificial Intelligence, 2008.

[7] 村方衛，岸本貞弥，大塚透，中西崇文，櫻井鉄也，北川高嗣: 「複合数式検索を対象とした入力支援 GUI “ MathGUIde” の実現」 , 第 17 回データ工学ワークショップ(DEWS2006), 2006.
[8] Y. Miyazaki, Y. Iguchi, Development of Information-Retrieval Tool for MathMLbased Math Expressions, Proceedings of the 16th International Conference on Computers in Education (ICCE2008), pp.419-426, 2008.
[9] Wolfram Functions Site, http://functions.wolfra.com/.

[10] 小笠原正彦，宮崎佳典: 「 $Java$ アプレットを用いたプログシステム上での数式作成支
援ツールの開発」 , 情報処理学会第 71 回全国大会，pp. (1) $-711-712$ ,2009.

7 実装はまだ部分的であり，未実装のもの [行列など] もいくつか存在する