PHP を使用した実用的なデータ・マイニングと構文解析の手法を探る

PHP を使用して XML や HTML のデータを掘り下げ、有用な情報を検出する

データ・マイニングがカバーしている分野は広範にわたるため、2 人の開発者とデータ・マイニングについての話をすると、2 人が持っているデータ・マイニングの概念は非常に異なることがわかります。この記事では、データ・マイニングとは何か、データ・マイニングの重要性、そしてデータ・マイニングを実現する (つまり Web ベースのデータ・マイニング・ツールを設計する) ためのさまざまな方法を学びます。そして、XML 構造を理解した上で、PHP 技術を使用して XML およびその他のデータを構文解析する方法を学びます。

Eli White, CTO, MojoLive

Photo of Eli WhiteEli White は現在 MojoLive の CTO であり、Web アプリケーションの作成に 16 年を超える経験があります。この 10 年間は PHP プロジェクトのみに従事してきました。彼はこれまで、Zend、TripAdvisor、Digg などの企業やハッブル宇宙望遠鏡プログラムなどで、いくつかの多様な業務に従事してきました。彼は『PHP 5 in Practice』の著者であり、さまざまな会議で頻繁に講演を行っています。



2011年 9月 02日

データ・マイニングとその重要性

よく使われる頭文字語

  • API: Application Programming Interface
  • CDATA: Character DATA
  • DOM: Document Object Mode
  • FTP: File Transfer Protocol
  • HTML: HyperText Markup Language
  • HTTP: HyperText Transfer Protocol
  • REST: REpresentational State Transfer
  • URL: Uniform Resource Locator
  • W3C: World Wide Web Consortium
  • XML: Extensible Markup Language

ウィキペディアの定義によれば、データ・マイニングとは「統計学、パターン認識、人工知能等のデータ解析の技法を大量のデータに網羅的に適用することで知識を取り出す技術」のことです。これは非常に深い定義であり、おそらくほとんどの人にとっての典型的なデータ・マイニングの使い方とは異なるものでしょう。人工知能を扱っている人はごく一部であり、最も一般的には、データ・マイニングは単に大規模なデータ・セットを取り込んで検索を行い、有用な情報を検出することでしかありません。

インターネットが大きく成長し、非常に大量の情報を入手できるようになったことから、大量のデータを集約して、その中から意味のある情報を取り出せることが重要です。1 人の人間が読み取れる量よりもはるかに大規模なデータ・セットを取り込み、それを有用なデータに凝縮することが第一の目標です。この記事では、この種のデータ・マイニングに焦点を絞り、中でもそうしたデータの収集方法と解析方法に焦点を絞ります。


データ・マイニングの実用的な使い方

データ・マイニングの実用的な使い方はさまざまです。ある Web サイトを調べ、その Web サイトで提供されている情報 (映画やコンサートの観客数の記録など) を検索するためにデータ・マイニングを使用することができます。あるいは、もっと重要な情報 (例えば投票者の記録など) からデータを取得し、データを理解するためにデータ・マイニングを使用することもできます。さらにはもっと一般的な使い方として、ソーシャル・ネットワークのデータを調べ、皆さんの会社がどの程度頻繁に話題になっているのか、また肯定的な意味で話題になっているのか、否定的な意味で話題になっているのかなど、調べたデータから傾向を解析しようとすることもできます。


Web サイトをマイニングする前の注意

この記事ではマイニングの対象とするデータを他の Web サイトから抽出する、という前提で話を進めます。自由に処理できるデータが既にある場合には、状況はかなり異なります。Web サイトからデータを抽出する場合には、Web スクレイピング (後ほど説明します) を行うのか、それとも API を使用するのかによらず、必ずサービスの条項に従う必要があります。また、スクレイピングを行う場合には、そのサイトの robots.txt ファイル (Web サイトのスクリプトのうち、どの部分にアクセスできるかを記述したファイル) に従うように注意する必要があります。そして、必ずそのサイトの帯域幅を尊重する必要があります。可能な限り高速にサイトのデータにアクセスするようなスクリプトを作成すべきではありません。ホスティングの問題を引き起こすだけではなく、あまりにも攻撃的であるとして、そのサイトへのアクセスを禁止されたり制限されたりするリスクもあります。


XML データの構造を理解する

どのような手段でデータを取得するかによらず、ほとんどの場合、受信するデータは XML (または HTML) フォーマットのはずです。データを共有するという面で、XML はインターネットの標準言語となっています。XML を取得する方法を検討する前に、XML の構造と PHP での XML の処理方法について簡単に検討しておくことが重要です。

XML 文書の基本的な構造は非常に単純です。これまで HTML を扱った経験のある人にとってはなおのこと単純に思えるかもしれません。XML 文書のすべてのデータは 2 つの方法のいずれかによって格納されます。主な方法は、ネストされたタグの中にデータを格納する方法です。最も単純な形式の例として、文書内に格納可能な以下のような住所があるとします。

<address>1234 Main Street, Baltimore, MD</address>

これらの XML データ・ポイントをネストさせると、複数の住所のリストを作成することができます。これらの住所はすべて、別のタグ (ここでは locations と呼びます) の中に配置することができます (リスト 1)。

リスト 1. XML の中に複数の住所を含める
<locations>
    <address>1234 Main Street, Baltimore, MD</address>
    <address>567 1st Street, San Jose, CA</address>
    <address>901 Washington Ave, Chicago, IL</address>
</locations>

この方法をさらに拡張して住所の各部分を番地 (street)、市町村 (city)、州 (state) に分解することで、データの処理を容易にすることができます。その場合には、先ほどの例よりも一般的な、リスト 2 のような XML ファイルになります。

リスト 2. XML の中で完全に住所を分割する
<locations>
    <address>
        <street>1234 Main Street</street>
        <city>Baltimore</city>
        <state>MD</state>
    </address>
    <address>
        <street>567 1st Street</street>
        <city>San Jose</city>
        <state>CA</state>
    </address>
    <address>
        <street>901 Washington Ave</street>
        <city>Chicago</city>
        <state>IL</state>
    </address>
</locations>

先ほど触れたように、XML データは主に 2 通りの方法で格納することができます。そのうちの 1 つを今説明しました。もう 1 つの方法は属性を使用する方法です。各タグには、属性をいくつも割り当てることができます。この方法は最初に説明した方法ほど一般的ではありませんが、非常に便利な手段となる可能性があります。属性を使用すると、一意の ID やイベントの日付など、追加の情報を提供できる場合があります。非常によくある例として、属性を使用してメタデータを追加することができます。住所の例について言えば、自宅の住所なのか職場の住所なのかを type 属性によって示すことができます (リスト 3)。

リスト 3. XML にタグを追加する
<locations>
    <address type="home">
        <street>1234 Main Street</street>
        <city>Baltimore</city>
        <state>MD</state>
    </address>
    <address type="work">
        <street>567 1st Street</street>
        <city>San Jose</city>
        <state>CA</state>
    </address>
    <address type="work">
        <street>901 Washington Ave</street>
        <city>Chicago</city>
        <state>IL</state>
    </address>
</locations>

XML 文書には必ず、すべてのタグ (ノード) の親となるルート・タグ (ルート・ノード) があることに注意してください。また XML には、それ以外にも宣言や定義が文書の先頭に含まれる場合や、他にも複雑な要素 (CDATA ブロックなど) がいくつか含まれる場合があります。「参考文献」に挙げた XML に関する資料をお読みになることを強くお勧めします。


PHP によって XML データを構文解析する

XML の形式と構造を理解できたので、次は XML データを PHP によって構文解析し、プログラムでアクセスする方法を理解する必要があります。PHP 用に作られた、いくつものライブラリーを利用すると、XML を構文解析することができます。また各ライブラリーにはそれぞれ特有の長所と短所があります。そうしたライブラリーには、DOM、XMLReader/Writer、XML パーサー、SimpleXML などがあります。ここでは、最もよく使われるライブラリーの 1 つであり、私のお気に入りのライブラリーの 1 つでもある SimpleXML に焦点を絞ります。

名前からもわかるように、SimpleXML は非常に単純なインターフェースで XML にアクセスできるように作られています。SimpleXML は XML 文書を取得して内部 PHP オブジェクト・フォーマットに変換します。そのため、データ・ポイントにアクセスするためには単にオブジェクト変数にアクセスすればよいのです。SimpleXML を使用して XML 文書を構文解析するには、単純に simplexml_load_file() 関数を使用します (リスト 4)。

リスト 4. SimpleXML を使用して XML 文書を構文解析する
<?php
$xml = simplexml_load_file('listing4.xml');
?>

必要なことは、これだけです。重要な注意点として、PHP ではファイルストリームを取り込むことができるおかげで、simplexml_load_file() の引数にファイル名または URL を指定すると、そのファイルまたは URL のコンテンツがファイルストリームを取り込む機能によって自動で取得されます。また、既にメモリー内に XML がロードされている場合には simplexml_load_string() を使用することもできます。このコードをリスト 3 の XML に対して実行し、print_r() を使用すると、データの概略構造を表示することができます。リスト 5 はその出力です。

リスト 5. 構文解析された XML の出力
SimpleXMLElement Object 
(
     [address] => Array
         (
             [0] => SimpleXMLElement Object
                 (
                     [@attributes] => Array
                         (
                             [type] => home
                         )
                     [street] => 1234 Main Street
                     [city] => Baltimore
                     [state] => MD
                 )
              [1] => SimpleXMLElement Object
                 (
                     [@attributes] => Array
                         (
                             [type] => work
                         )
                     [street] => 567 1st Street
                     [city] => San Jose
                     [state] => CA
                 )
              [2] => SimpleXMLElement Object
                 (
                     [@attributes] => Array
                         (
                             [type] => work
                         ) 
                     [street] => 901 Washington Ave
                     [city] => Chicago
                     [state] => IL
                 )
          )
)

これで、PHP の標準的なオブジェクト・アクセス方法を使用してデータにアクセスできるようになります。例えば、誰かが住んでいるすべての州をエコー出力するには、単純に住所に対して繰り返し処理を実行し、住所をエコー出力します (リスト 6)。

リスト 6. 住所に対して繰り返し処理を実行する
<?php
$xml = simplexml_load_file('listing4.xml');

foreach ($xml->address as $address) {
    echo $address->state, "<br \>\n";
}
?>

属性にアクセスするための方法は少し異なります。属性の場合には、オブジェクトのプロパティーの場合のように参照するのではなく、配列の値にアクセスするようにして属性にアクセスします。上記の最後のコード・サンプルを変更し、type 属性を表示するためには、リスト 7 のコードを使用します。

リスト 7. 属性を追加する
<?php
$xml = simplexml_load_file('listing4.xml');

foreach ($xml->address as $address) {
    echo $address->state, ': ', $address['type'], "<br \>\n";
}
?>

現在の例はすべて繰り返し処理を含んでいますが、データに直接アクセスすることで、必要な特定の情報を使用することもできます。例えば 2 番目の住所の番地 (street address) を取得するためには、$xml->address[1]->street というコードを使用することができます。

これで XML データを扱うための基本的なツールが用意できました。「参考文献」に挙げた SimpleXML のドキュメントや他のリンクの資料をお読みになることをお勧めします。


PHP によるデータ・マイニング: 考えられる方法

先ほど触れたように、データへのアクセス方法にはさまざまな方法があります。最もよく使われる方法は、Web スクレイピングを使用する方法と API を使用する方法の 2 つです。

Web スクレイピング

Web スクレイピングは、文字どおり Web ページ全体をプログラムによってダウンロードし、その Web ページからデータを抽出する動作を指します。Web スクレイピングに関しては何冊もの本が出版されています (「参考文献」を参照)。ここでは、Web スクレイピングに必要なツールについて簡単に示すことにします。何よりもまず、PHP を使用することにより、Web ページをストリングとしてとても簡単に読み取れるようになります。そのための方法には、file_get_contents() と URL を使用する方法など、数多くの方法がありますが、ここでは有意義な方法で HTML を構文解析できるようにしたいと思います。

HTML は本質的に XML をベースとする言語であることから、HTML を SimpleXML の構造に変換すると便利です。ただし、妥当な HTML であっても XML ではないため、単純に simplexml_load_file() を使用して HTML ページをロードすることはできません。これに対する適切な対策としては、DOM 拡張機能を使用して HTML ページを DOM 文書としてロードし、それを SimpleXML に変換します (リスト 8)。

リスト 8. DOM メソッドを使用して Web ページの SimpleXML 版を取得する
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile('http://example.com/');
$xml = simplexml_import_dom($dom);
?>

こうすると、他の任意の XML 文書の場合とまったく同じように HTML ページをトラバースすることができます。つまり、$xml->head->title を使用してページのタイトルにアクセスすることや、$xml->body->div[0]->div[0]->div[0]->h4[0] などの参照を使用してページの奥深くにアクセスすることもできます。

ただし上記の最後の例から想像できるかもしれませんが、HTML ページ (XML ファイルほど系統立っていない場合がよくあります) の中でデータを見つけようとすると、非常に処理が面倒になる場合があります。上記の行はネストされた 3 つの div の中にある最初の h4 を探しており、各 div としてはそれぞれの親の中にある最初の div を探しています。

幸いなことに、ページ上にある最初の h4 のみを見つけたい場合、あるいは他のそうした「直接データ」のみを見つけたい場合には、XPath を使用した方がはるかに簡単です。XPath は本質的に問い合わせ言語を使用して XML 文書内を検索する手段であり、SimpleXML には XPath が用意されています。XPath は非常に強力なツールであり、連載記事のテーマになり得ます (そうした記事の一部を「参考文献」に挙げてあります)。基本的な表現方法として、「/」を使用して階層関係を表現します。そのため、先ほどの参照を以下の XPath 検索として書き直すことができます (リスト 9)。

リスト 9. XPath を直接使用する
<?php
$h4 = $xml->xpath('/html/body/div/div/div/h4');
?>

あるいは、XPath では単純に「//」オプションを使用することもできます。「//」オプションを使用すると、すべての文書を検索し、求めるタグがないかどうかを調べることができます。つまり、すべての h4 を配列として検出し、次に XPath の '//h4' を使用して最初の h4 にアクセスすることができます。

HTML の階層構造をウォークする

なぜ、こうした変換や XPath に関して説明しているかと言うと、その主な理由は、Web スクレイピングを実行する場合に一般的に要求されるタスクの 1 つとして、Web ページ上にある他のリンクを自動的に検出し、それらのリンクをたどる必要があるからです。そうした動作によって Web サイトを「ウォーク」し、可能な限り多くの情報を検出することができます。

XPath を使用すると、このタスクは非常に簡単になります。リスト 10 のコードを使用すると、href 属性を持つすべての <a> リンクの配列が得られ、それらの <a> リンクを処理することができるようになります。

リスト 10. 複数の手法を組み合わせ、ページ上のすべてのリンクを検出する
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile('http://example.com/');
$xml = simplexml_import_dom($dom);
$links = $xml->xpath('//a[@href]');
foreach ($links as $l) {
    echo $l['href'], "<br />\n";
}
?>

このようにすると、このコードがすべての <a href=""> リンクを検出してくれますが、検出されたリンクをすべてたどると、すぐに Web 全体をクロールする羽目になるかもしれません。そのため、最も適切な方法としては、(FTP や JavaScript ではない) 有効な HTML リンクのみにアクセスするように、そして (フルドメインのリンクまたは相対リンクにより) 同じ Web サイトのみに戻るように、コードを機能強化する必要があります。

もっと簡単な方法として、リンクに対する繰り返し処理のために、大量のサニティー・チェックを行ってくれる PHP の組み込み関数 parse_url() を使用します。するとリスト 11 のようになります。

リスト 11. より堅牢なサイト・ウォーカー
<?php
$dom = new DOMDocument();
$host = 'example.com';
$dom->loadHTMLFile("http://{$host}/");
$xml = simplexml_import_dom($dom);
$links = $xml->xpath('//a[@href]');
foreach ($links as $l) {
    $p = parse_url($l['href']);
    if (empty($p['scheme']) || in_array($p['scheme'], array('http', 'https'))) {
        if (empty($p['host']) || ($host == $p['host'])) {
            echo $l['href'], "<br />\n"; // Handle URL iteration here
        }
    }
}
?>

HTML の構文解析に関する最後の注意として、ここで説明した DOM 拡張機能の使い方は、(XML に似たすべての言語に対する統一的なインターフェースとしての) SimpleXML に逆変換することのみが目的でした。DOM ライブラリー自体は非常に堅牢であるため、DOM ライブラリーを直接使用することもできます。JavaScript をよく理解しており、また getElementsByTagName などのツールを使用して DOM 文書ツリーをトラバースする方法についてもよく理解している人の場合には、DOM ライブラリーのみを使用すれば、SimpleXML を使用しなくても十分かもしれません。

これで、Web ページからデータのスクレイピングを開始するために必要なツールが用意できました。この記事で先ほどまで詳細に説明した手法を理解できると、単にリンクをたどることができるだけではなく、Web ページから任意の情報を読み取れるようになります。皆さんがそうしたタスクを行う必要がないことを祈ります。なぜなら、そうしたタスクの代わりに、API や他のデータ・ソースがあるからです。

XML API と XML データを使用する

この時点で、インターネット上にある XML データ API の大部分にアクセスし、それらを使用するための基本的なスキルを身に付けられたことになります。これらの API は多くの場合 REST ベースであるため、単純に HTTP でアクセスするだけで、先ほど説明した手法を使用してデータを取得し、構文解析することができます。

最終的に、すべての API は異なります。もちろん、それらの API の 1 つ 1 つについて使用方法を説明することはできないので、XML API の基本的な例をいくつか説明することにしましょう。最もよく使われるデータ・ソースの 1 つであり、既に XML フォーマットになっているのは RSS フィードです。RSS は Really Simple Syndication を略したものであり、頻繁に更新されるデータ (ブログ投稿、ニュースのヘッドライン、ポッドキャストなど) を共有するためのフォーマットとしてその大部分が標準化されています。RSS フォーマットについて詳しく学ぶためには「参考文献」を参照してください。RSS が XML ファイルであることに注意してください。この XML ファイルは <channel> という親タグを持ち、<channel> タグの中には任意の数の <item> タグを持つことができ、各 <item> タグには一連のデータ・ポイントが含まれています。

一例として、SimpleXML を使用してニューヨーク・タイムズのヘッドラインの RSS フィードを読み込み (この RSS フィードへのリンクは「参考文献」を参照)、各ニュース記事へのリンクがあるヘッドラインのリストとしてフォーマット設定をしましょう (リスト 12)。

リスト 12. ニューヨーク・タイムズの RSS フィードを読み込む
<ul>
<?php
$xml = simplexml_load_file('http://www.washingtonpost.com/rss/homepage');
foreach ($xml->channel->item as $item) {
    echo "<li><a href=\"{$item->link}\">{$item->title}
</a></li>";
}
?>
</ul>

図 1 はニューヨーク・タイムズのフィードの出力を示しています。

図 1. ニューヨーク・タイムズのフィードの出力
ニューヨーク・タイムズのフィードの出力のスクリーン・キャプチャーとして、13 項目のヘッドラインのリストが表示されています。

今度は、さらにフル機能の REST ベースの API の例を調べてみましょう。出発点として適切な API は Flickr API です。Flickr API は認証を必要とせずに大量のデータを提供しているからです。多くの API には認証が必要であり、OAuth やその他のメカニズムを使用して Web ユーザーの代わりとして動作する必要があります。認証のステップは API 全体に適用される場合もあれば、API の一部のみに適用される場合もあります。認証の方法については各 API のドキュメントを参照してください。

認証なしにリクエストを行う場合の Flickr API の使い方を説明するために、Flickr API の検索 API を使用します。一例として、Flickr の中で石弓 (crossbow) が写っている公開写真をすべて検索しましょう。認証は必要ありませんが、多くの API の場合と同様、データへのアクセスに使用する API キーを生成する必要があります。その方法については Flickr の API のドキュメントを直接調べてください。API キーを用意できると、Flickr の検索機能を使用して検索を行うことができます (リスト 13)。

リスト 13. 「石弓 (crossbow)」 が写っている写真を Flickr API を使用して検索する
<?php
// Store some basic information that you need to reference
$apiurl = 'http://api.flickr.com/services/rest/?';
$key = '9f275087e222ee395c92662437bf84a2'; // Replace with your own key

// Build an array of parameters that you want to request:
$params = array(
    'method' => 'flickr.photos.search',
    'api_key' => $key,
    'text' => 'crossbow', // Our search term
    'media' => 'photos',
    'per_page' => 20 // We only want 20 results
);

// Now make the request to Flickr:
$xml = simplexml_load_file($apiurl . http_build_query($params));

// From this, iterate over the list of photos & request more info:
foreach ($xml->photos->photo as $photo) {
    // Build a new request with this photo's ID
    $params = array(
        'method' => 'flickr.photos.getInfo',
        'api_key' => $key,
        'photo_id' => (string)$photo['id']
    );
    $info = simplexml_load_file($apiurl . http_build_query($params));
    
    // Now $info holds a vast amount of data about the image including
    //  owner, GPS, dates, description, tags, etc ... all to be used.

    // Let's also request "sizes" to get all of the image URLs:
    $params = array(
        'method' => 'flickr.photos.getSizes',
        'api_key' => $key,
        'photo_id' => (string)$photo['id']
    );
    $sizes = simplexml_load_file($apiurl . http_build_query($params));
    $small = $sizes->xpath("//size[@label='Small']");
    
    // For now, just going to create a simple display of the image,
    //  linked back to Flickr, with title, GPS info, and more shown:
    echo <<<EOHTML
<div>
  <a href="{$info->photo->urls->url[0]}">
    <img src="{$small[0]['source']}"
         width="{$small[0]['width']}" 
         height="{$small[0]['height']}" />
  </a>
  <ul>
    <li>Title: {$info->photo->title}</li>
    <li>User: {$info->photo->owner['realname']}</li>
    <li>Date Taken: {$info->photo->dates['taken']}</li>
    <li>Location: {$info->photo->location->locality}, 
        {$info->photo->location->county},
        {$info->photo->location->region}, 
        {$info->photo->location->country}
    </li>
  </ul>
</div>
EOHTML;
}
?>

図 2 は Flickr プログラムの出力を示しています。石弓を検索した結果には、写真と、各写真に関する情報 (タイトル、ユーザー、場所、撮影日) が含まれています。

図 2. リスト 13 の Flickr プログラムに対する出力の例
リスト 13 の Flickr プログラムに対する出力例のスクリーン・キャプチャー

これらを見ると、Flickr API のような API がいかに強力か、また同じ API でさまざまな呼び出しを組み合わせて必要なデータを取得する方法を理解できるはずです。これらの基本的な手法を使用することで、任意の Web サイトまたは情報ソースからデータをマイニングすることができます。

API または Web スクレイピングを使用して、単純にプログラムでデータにアクセスする方法を見つけてください。そしてこの記事で示した方法を使用することで、ターゲットとするデータすべてにアクセスすることができ、それらのデータに対して繰り返し処理をすることができます。


抽出したデータを格納し、レポートを作成する

最後のポイントとして、データの格納とレポートの作成はさまざまな面で最も容易な部分であり、おそらく最も楽しい部分でもあります。皆さん自身の状況に合わせ、どのようにデータを格納し、レポートを作成するかを決定する上で、制限はありません。

通常は、収集した情報をすべてデータベースに格納します。そして、後でデータへアクセスする方法として計画している方法に合わせてデータを構造化します。その際、必要と思われる以上の情報を格納することをためらうことはありません。データが大量になってくると、データの削除はいつでもできますが、追加情報を取得しようとすると非常に苦労するからです。最初に多めに見積もりをしておくのが得策です。結局のところ、どのデータが興味深いものとなるか、最初はわからないものです。

そしてデータがデータベースや同様のデータ・ストアに格納されると、その時点でレポートを作成できるようになります。レポートは、データベースに対していくつか基本的な SQL クエリーを実行し、あるデータがいくつ存在するかを調べるだけの単純な場合もあれば、誰かが掘り下げて独自の相関を見つけられるように設計された、非常に複雑な Web ユーザー・インターフェースを提供する場合もあります。

すべてのデータをカタログ化する困難な作業が終わると、創造的な方法を考え出し、それらのデータを表示することができます。


まとめ

この記事では、XML 文書の基本的な構造と、PHP と SimpleXML を使用して XML 文書を容易に構文解析する方法を説明しました。また、同様の方法で HTML を処理する能力も身に付け、XML フォーマットではないデータをスクレイピングするために Web サイトをウォークするための基本にも触れました。これらのツールを使用することで、またこの記事で取り上げたいくつかの例に従うことで、Web サイトのデータ・マイニングを始めるための適切な基本知識が身に付いたことになります。学ぶべき内容は 1 本の記事でカバーしきれないほど大量にあります。データ・マイニングに関する知識を豊富にするための他の方法については、「参考文献」をチェックしてみてください。


ダウンロード

内容ファイル名サイズ
source codedatamining_source.zip10KB

参考文献

学ぶために

  • ウィキペディアの XMLL の項目: XML 仕様の説明を読んでください。
  • Extensible Markup Language (XML) 1.0 (Fifth Edition) (W3C 勧告、2008年11月): XML に関する情報ソースのサイトを訪れ、XML の機能に関する特定の詳細事項を学んでください。
  • Introduction to XML」(Doug Tidwell 著、developerWorks、2002年8月): XML とは何か、なぜ XML が開発されたのか、XML によって電子商取引がどのように実現されるのかを学んでください。また、各種の重要な XML プログラミング・インターフェースや標準について、また企業が XML を使用してビジネス問題を解決する方法を示す 2 つのケース・スタディーについて調べてください。
  • XML Tutorial (W3Schools): XML について、また XML を使用したデータの転送方法と格納方法についてのレッスンを読んでください。
  • SimpleXML のドキュメント: XML をオブジェクトに変換するツール・セットについて簡単に調べ、使い方を学んでください。SimpleXML により、XML をオブジェクトに変換し、PHP の通常のプロパティー・セレクターや配列イテレータを使用して処理できるようになります。
  • php|architect's Guide to Web Scraping with PHP』(Matthew Turland 著): さまざまな技術やフレームワークを使用して Web スクレイピングを行う方法について学んでください。
  • XML Path Language (XPath) Version 1.0 (W3C 勧告、1999年11月): XSLT と XPointer に共通の機能に関する一般的な構文と意味体系の仕様を理解してください。
  • Get started with XPath」(Bertrand Portier 著、developerWorks、2004年5月): この記事には、XML Path Language、つまり XPathの基本が解説されています。
  • XPath Tutorial (W3Schools): XPath について、また XML 文書内の要素や属性をナビゲートする方法についてのレッスンを読んでください。
  • RSS の仕様: Web コンテンツの配信フォーマット、RSS の詳細を調べてみてください。
  • Flickr サービス: オンラインで写真を管理、共有するためのアプリケーション、Flickr API について調べてください。
  • How to use regular expressions in PHP」(Nathan A. Good 著、developerWorks、2006年1月): ユーザー入力の検証、ユーザー入力やファイル内容の構文解析、ストリングの再フォーマット方法を学んでください。
  • PHP.net: このサイトを訪れ、PHP 開発者のためのリソースを活用してください。
  • Recommended PHP reading list」(Daniel Krook と Carlos Hoyos の共著、developerWorks、2006年3月): この読み物リストで PHP (Hypertext Preprocessor) について学んでください。このリストはプログラマーや管理者のために、IBM の Web アプリケーション開発者によってまとめられたものです。
  • PHP に関する他の記事: developerWorks の PHP に関するすべての記事に目を通してください。
  • Zend Core for IBM: PHP でデータベースを使うのであれば、Zend Core for IBM を調べてみてください。これはシームレスでそのまま使用でき、インストールも容易な PHP の開発環境であり本番環境でもあります。この環境は IBM DB2 V9 をサポートしています。
  • ニューヨーク・タイムズのヘッドラインの RSS フィード: ニューヨーク・タイムズのヘッドラインの RSS フィードを試してみてください。
  • New to XML には、XML を学ぶために必要なリソースが豊富に用意されています。
  • developerWorks の XML ゾーン: XML の領域でのスキルを磨くためのリソースが豊富に用意されています。XML の技術文書一覧には、広範な話題を網羅した技術記事やヒント、チュートリアル、技術標準、IBM Redbooks が豊富に用意されています。
  • IBM developerWorks の PHP project resources を利用して PHP のスキルを磨いてください。
  • IBM XML certification: XML および関連技術において IBM 認定技術者になる方法を参照してください。
  • developerWorks の Technical events and webcasts: 最新情報を入手してください。
  • developerWorks on Twitter: 今すぐ Twitter に参加して developerWorks のツイートをフォローしてください。
  • developerWorks podcasts: ソフトウェア開発者のための興味深いインタビューや議論を聞いてください。
  • developerWorks on-demand demos: 初心者のための製品インストール方法やセットアップのデモから、上級開発者のための高度な機能に至るまで、多様な話題が解説されています。

製品や技術を入手するために

  • PHP: Web 開発のための汎用のスクリプト言語、PHP を入手してください。
  • IBM 製品の評価版: IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox のオンライン試用版で、DB2、Lotus、Rational、Tivoli、および WebSphere が提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。

議論するために

  • PHP Forum: Developing PHP applications with IBM Information Management products (DB2, IDS): この developerWorks のフォーラムを活用し、PHP、IBM の情報管理製品 (DB2 や Informix など)、IBM データ・サーバーの XML 機能 (XML、XSLT、SQL/XML、XQuery) を使用して、より優れた Web アプリケーションを作成するための質問を投稿し、洞察を共有してください。
  • XML ゾーンのディスカッション・フォーラム: これらのフォーラムでは XML に関連する議論が行われています。
  • developerWorks コミュニティー: 開発者向けのブログ、フォーラム、グループ、ウィキなどを利用しながら、他の developerWorks ユーザーとやり取りしてください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Open source
ArticleID=754267
ArticleTitle=PHP を使用した実用的なデータ・マイニングと構文解析の手法を探る
publish-date=09022011