MATHEMATICAチュートリアル

Wolfram|Alphaにおけるデータ形式

はじめに

Wolfram|Alphaは結果をグラフィカルに出力するだけでなく,追加情報を含んだり特定のタスクに適したりする別の表現も提供することができる.これらの表現は集合的にデータ形式と呼ばれる.すべての結果にすべてのデータ形式があるわけではない.実はこれらすべての表現を持つ結果を考える方が難しい.したがって,さまざまな形式を判別しリクエストするためのインタラクティブなメカニズムとプログラム的なメカニズムが存在する.

データ形式の一グループに「公開データ形式」というものがある.これはWolfram|Alphaから便利なデータを抽出することを可能にするためのものである.例えば,プロットに使われたデータ点が返され,カスタムの可視化作成が可能になる.書式,コメント,その他の詳細の一部あるいはすべてが省略され,データのみに焦点が当てられる.インタラクティブメニューに現れる現行の公開データ形式の名称と,抽出される要素の説明を表にまとめる.

メニュー名
説明
計算可能なデータ数値要素,テキスト要素,数式要素を含む結果によって表されるデータ.この形式では,結果を機械処理可能にするためにできるだけ余計な書式が取り除かれる.つまり,GridColumn等は除かれ,日付はDateListの形式で返される.
整形されたデータ数値要素,テキスト要素,数式要素を含む結果によって表されるデータ.この形式では,特別な頭部の使用を含め,なるべく結果の外観が損なわれないようにされる.
式データホールドされた形式での結果の数式および Mathematica 式のリスト.
数データ結果の中のシングルトン,およびシングルトン数量の数の部分のリスト.
数値データ結果の中のシングルトンの数量(単位付きの数値)のリスト.
音データ結果に現れるサウンドオブジェクトのリスト.
時系列データ結果に現れる時系列リスト.

公開データ形式

他のデータ形式はより特化されている.2つの形式がメニューの中で入力出力として現れている.これらは Mathematica に入力と,グラフィカルな結果に対応する出力を提供する,また,これらは自由形式入力のメカニズム(行頭に=)で使われる.最後の形式は,結果のグラフィカルでない要素のテキスト表現を提供する.

メニュー名
説明
入力その結果を導き出した計算を実行するための Mathematica
出力結果を表す通常の Mathematica
テキスト結果のテキスト表現

その他のデータ形式

データ形式をインタラクティブに調べる

Wolfram|Alphaクエリと自由形式入力はどちらも,可能な場合さまざまなデータ形式をリクエストするメカニズムを提供する.Wolfram|Alphaクエリはデフォルトですべての結果を表示するため,これらの形式にアクセスするのに便利である.

Wolfram|Alphaクエリ

基本的なワークフロー

Wolfram|Alphaクエリを考える.

integrate sinx from 0 to 2pi

3種類の結果が生成される.丸い角の灰色の枠で囲まれた白い背景色の部分はポッドと呼ばれる,ポッドの右上にあるプラス記号をクリックすると,そのポッドをさまざまな形式で見るためのコンテキストメニューが表示される.「Definite integral」のポッドには,次のようなコンテキストメニューが含まれる.

3.gif

最初の2つの項目書式化されたポッドサブポッドコンテンツは常に利用できる.最初のデリミタの下の項目は,ポッドにテキスト,入力,出力が含まれていることを示している.2つ目のデリミタの下には,利用できる公開データ形式の種類がリストされる.ここでは計算可能なデータ整形されたデータ式データが利用できる.

コンテキストメニューから入力を選ぶと,下の例のようにWolfram|Alphaクエリの結果の真下にセルが生成され,自動的に評価される.このセルは評価されると,ポッドの中の方程式の左辺の積分となる.これこそがポッドで実行される計算なのである.
In[12]:=
Click for copyable input
Out[12]=
出力に対する処理を繰り返すと,方程式の右辺,つまり計算の Mathematica 出力が生成される.
In[13]:=
Click for copyable input
Out[13]=
式データは標準的な Mathematica シンタックスの完全な方程式である式を生成する.
In[14]:=
Click for copyable input
Out[14]=

「Visual representation of the integral」ポッドのプラス記号をクリックするとずっと短いメニューが表示される.このポッドには利用できる公開データ形式がなく,他のデータ形式の入力しか利用できないからである.

4.gif

ポッドの Mathematica 入力はグラフを生成するための通常のPlot式である.Plot式を評価すると,充填が行われていないことが分かる.Mathematica 入力形式はWolfram|Alphaにより返される結果に比べると簡素化されているため,自分のスタイルを適用することができる.
In[33]:=
Click for copyable input
Out[33]=
Out[34]=

公開データはグラフィカルな結果と同じ必要はない

上の例では公開データは基本的に結果と同じに見えるが,常にそうだとは限らない.次のクエリを見てみる.

msft close Jan 1, 2011 to Jan 21 2011

「History」ポッドのプラス記号をクリックして整形されたデータを選ぶと,プロットの代りにプロットを作成するために使われた実際のデータ点がリストされる.もとになっているデータが公開されているのである.

In[16]:=
Click for copyable input
Out[16]=

上の出力のInputFormには特殊なフォーマットラッパーであるが含まれている.この頭部と公開データ形式から予想される出力の種類については,「公開データの例」で詳しく説明する.

In[17]:=
Click for copyable input
Out[17]//InputForm=

第2引数の構造

コンテキストメニューをクリックすることで生成されるセルのWolframAlpha関数の第2引数の構造を説明しておこう.これは常にである.はポッドを見付けるためにWolfram|Alphaが作成した文字列,は抽出する特性の名前である.subpodid はポッド内の特定の結果の位置を示す整数である.上の例題ではすべてのポッドのサブポッドが1つであるため,指標はすべて1であった.次は1つのポッドにつき複数のサブポッドが生成されるクエリの例である.

plot sinx

2つのプロットの間に水平に引かれている薄い灰色の線は,サブポッドが複数個あることを示している.この場合「Plots」ポッドのコンテキストメニューから入力を選ぶと,1つのサブポッドに対して1つの合計2回のWolframAlphaへの呼出しが実行される.

In[19]:=
Click for copyable input
Out[19]=

このシンタックスは,「プログラムでデータ形式を得る」で説明するように,複数のポッドからの複数の形式を抽出するために拡張することができる.

自由形式入力

前のセクションで示した自由形式入力を使った積分の例を考えてみる.

WolframAlphaQueryParseResults
Out[20]=

まず気がつくことは,自由形式の式のすぐ下に生成されるIntegrateの式は,最初の例で見た Mathematica の入力式に他ならない.自由形式入力はまさにこのような仕組みなのである.自由形式入力は,Wolfram|Alphaからの結果の中に Mathematica の入力式と出力式を探し,これらの式をローカルで評価するのである.

自由形式の式の右側にあるプラス記号をクリックするとすべての結果が表示される.それぞれの結果に対して Mathematica 入力式がある場合,それは結果のすぐ上の灰色のボックスの中に表示される.これが正確に行われるのは,Mathematica の入力形式が自由形式入力のメカニズムで中心的な役割を果たしているからである.

WolframAlphaQueryResults

ポッドの隣には Mathematica の入力式しか表示されていなくても,他の形式はすべてコンテキストメニューから利用できる.例えば積分の計算可能データにアクセスするためには,それを右クリックし形式を選択してコピー ► 計算可能なデータを選ぶ.

11.gif

これで好きなところにデータをペーストすることができる.下のセルにペーストしてみる.

Click for copyable input

入力のペースト ► 計算可能なデータを選ぶと,Wolfram|Alphaのクエリに対するコンテキストメニューの動作と類似した入力セルを作成することができる.

12.gif

これで結果の下に次のセルが生成される.しかし,Wolfram|Alphaのクエリの場合とは異なり,このセルは自動的には評価されない.

In[42]:=
Click for copyable input
Out[42]=

プログラムでデータ形式を得る

サブポッドの特性としてのデータ形式

上の例で示したように,データ形式は特定のサブポッドに関連付けられた特性である.したがって,データ形式には,WolframAlpha関数の標準的シンタックスであるおよびを使うことが要求される.さまざまな形式に対するプログラム特性の名前は,それぞれのメニュー名の単語をキャメルケースで組み合せることで得られる文字列である.つまり,計算可能なデータ(Computable data)はに,時系列データ(Time series data)はに,入力(Input)はに,という風になる.

利用可能な形式を判別する

特定のサブポッドで利用できるデータ形式は,それぞれのサブポッドの特性に含まれている.この特性は,他のサブポッドの特性と同じ方法で計算することができる.

2つのPlotのサブポッドでは,それぞれに対して1つのデータ形式しかない.一つは"Input"ポッドのテキスト形式であり,もう一つは Mathematica Input形式である.
In[21]:=
Click for copyable input
Out[21]=
このクエリのそれぞれのポッドでは利用できるデータ形式が複数個ある.2つ目と3つ目のポッドでは複数の公開データ形式が利用できる.
In[22]:=
Click for copyable input
Out[22]=

特性で返される形式のリストは,文字列の代りに実際のデータをリクエストするために使うことができる.

In[23]:=
Click for copyable input
Out[23]=

WolframAlpha関数で標準であるが,1つのサブポッドの1つの特性を選ぶと,その値だけが戻る.

In[24]:=
Click for copyable input
Out[24]=

直接データをリクエストする

どの形式が利用できるかを調べてからそれをリクエストする代りに,直接データ形式をリクエストすることもできる.これは,通常WolframAlpha関数のシンタックスを使って実行することができる.

すべてのポッドに対して特定の特性を求めると,その形式を実際に含むポッドだけが現れる.
In[25]:=
Click for copyable input
Out[25]=
In[26]:=
Click for copyable input
Out[26]=
特定のポッドのすべての特性をリクエストして,希望の結果だけを選ぶこともできる.ここでも実際に利用できる特性だけが表示される.
In[27]:=
Click for copyable input
Out[27]=
特定のサブポッドから特定の形式をリクエストすることができる.この(指定にAllがない)場合,特定の形式が利用できない場合でも規則は与えられるが,その場合は右辺がMissing["NotAvailable"]となる.
In[28]:=
Click for copyable input
Out[28]=
サブポッドのないポッドIDだけを与えると,すべてのサブポッドをリクエストする暗示的なAllとなる.
In[29]:=
Click for copyable input
Out[29]=

公開データに関心がある場合,WolframAlpha引数を使うと,利用できる公開データすべてが通常のの形式で返される.を使うことで,新しい公開データが加えられてもそれが確実にリストされるようになる.

In[30]:=
Click for copyable input
Out[30]=

WolframAlpha引数と引数はWolframAlphaシンタックスを使って簡単に再生できる.

{All, "PodPlaintext"}により返される規則の右辺である.
In[31]:=
Click for copyable input
Out[31]=
In[32]:=
Click for copyable input
Out[32]=
{All, {"Input", "Output"}}によって返される規則の右辺を与える.しかし,前者は結果をポッドでグループ化するのに対して,後者は結果をプロパティでグループ化するという風に,結果の並び方が異なる.
In[14]:=
Click for copyable input
Out[14]=
In[15]:=
Click for copyable input
Out[15]=
In[16]:=
Click for copyable input
Out[16]=

公開データの例

注意事項

Wolfram|Alphaの結果は,常にデータ形式を提供するよう調整されているが,すべてにデータ形式表現があるわけではないし,ましてや公開データがあるわけでもない.また,複数の公開データ形式が利用できる場合,そのうちの2つもしくは3つが同じであるということもあり得る.これはすべてそれぞれのポッドの内容による.一般に,計算可能なデータと整形されたデータが最も一般的である.これらは公開データが存在する場合はほとんどの場合存在する.またこれらには多様なデータが含まれることもある.他の形式はデータを掘り下げ,特定のタイプのデータを提供するため,ずっと予想しやすい.以下の例は,含まれるデータの型に従って構成されている.

数値と数

Wolfram|Alphaの数値は,MathematicaQuantityオブジェクトのように,単位付きの数で構成されている.公開データを使うと,数値全体にも数の部分だけにも直接アクセスすることができる.上述の金融の例題の最初のポッドを見ると,これらがどのように扱われるかがよく分かる.

In[61]:=
Click for copyable input
Out[61]=

整形されたデータと計算可能なデータでは,結果全体の表現が異なる.

整形されたデータは,ほとんど出力と同じように見える.日付の注釈は削除され,グリッドの分離線もなく,フォントは Mathematica ネイティブのものであるが,これ以外にはそれほど異なる部分はない.「はじめに」で説明したように,書式と余計な詳細は非常に入念に削除してある.
In[62]:=
Click for copyable input
Out[62]=
これに対して,計算可能なデータは格段に簡素化されている.Gridの代りに,簡単な行列が返される.
In[65]:=
Click for copyable input
Out[65]=

一方,数値データと数データは,テキストを無視して,結果の数量部分だけを返す.

数データは純粋な数の部分と,数値の数の部分だけを返す.
In[66]:=
Click for copyable input
Out[66]=
数値データは MathematicaQuantityオブジェクトの形式で数値のみを返す.
In[67]:=
Click for copyable input
Out[67]=

時系列

履歴プロットは,時系列のプロトタイプ的な例である.これは一連の日付のそれぞれに 値を与える.次は上にある履歴プロットである.

In[31]:=
Click for copyable input
Out[31]=
整形されたデータには値の表が含まれており, 値に対する単位を示すヘディングを持つ.通常通り,コメントは削除されている.最初の列の日付はラッパーを使っている.
In[68]:=
Click for copyable input
Out[68]=
は,Wolfram|Alphaスタイルの日付を模倣するための軽量ラッパーである.InputFormは,のコンテンツが通常のDateListであるということを示している.
In[69]:=
Click for copyable input
Out[69]//InputForm=
計算可能なデータは Mathematica の標準的な時系列形式で返される.第1要素がDateListで第2要素が計算可能な値であるペアのリストとして返すのである.
In[72]:=
Click for copyable input
Out[72]=
この場合,結果全体がプロットで構成されているため,時系列データは計算可能なデータと同一である.結果に別の要素があるなら,時系列データは厳密な部分集合になる.
In[70]:=
Click for copyable input
Out[70]=
このポッドには数データがない.データにたくさんの数が現れていても,結果として独立している数はない.これは,19.055(パーセント)が変動率であった「数値と数」の「Result」ポッドの表とはかなり異なっている.
In[71]:=
Click for copyable input
Out[71]=

「データ形式をインタラクティブに調べる」の最初の例題では,式データがどのように1つの方程式を返すのかを説明した.しかし次のクエリの「Equation」ポッドにあるように,複数の方程式を返すこともある.

Newton's second law 5 kg 2 gs
この場合の整形されたデータは,Wolfram|Alphaにより返される結果に非常に似ている.しかしいくつかの式が見付かり,Holdでラップされている.
In[53]:=
Click for copyable input
Out[53]=
式データはテキスト要素を無視し,平坦なリストで式のみを返す.
In[54]:=
Click for copyable input
Out[54]=

パルサーLGM-1にはWolfram|Alphaにとって既知のおもしろい特性がたくさんある.そのうちの一つがパルスの回路図である.

In[55]:=
Click for copyable input
Out[55]=

このポッドでは,唯一の公開データは音データである.この形式は,対応する整形されたデータや計算可能なデータデータがないときに最も出やすいものである.

37.gif

音データは通常のSoundオブジェクトを生成する.
In[56]:=
Click for copyable input
Out[56]=
この場合特におもしろいのは,音のInputFormが戻ったことである.Wolfram|Alphaにより生成されたSampledSoundFunctionは可逆圧縮で Mathematica に転送される.
In[57]:=
Click for copyable input
Out[57]//InputForm=

Wolfram|Alphaは音のサンプルだけでなく音楽も生成できる.

In[58]:=
Click for copyable input
Out[58]=
このような音も劣化なしに Mathematica にインポートすることができる.
In[59]:=
Click for copyable input
Out[59]=
In[60]:=
Click for copyable input
Out[60]//InputForm=
New to Mathematica? Find your learning path »
Have a question? Ask support »