Talking Algorithm: インテリジェント Web クローラーの探索

Mar 25 2023
はじめに「人々に何が欲しいか尋ねたら、もっと速い馬が欲しいと答えたでしょう」 — ヘンリー・フォード 今日は人工知能の時代です。それが ChatGPT であろうと、それに続くさまざまなインテリジェント アプリケーションであろうと、多くの人々は、数年前にはほとんど想像もできなかった未来の SF の世界を見ています。

序章

「もし私が人々に何が欲しいかと尋ねたら、彼らはより速い馬と答えただろう」 — ヘンリー・フォード

今日は人工知能の時代です。それが ChatGPT であろうと、それに続くさまざまなインテリジェント アプリケーションであろうと、多くの人々は、数年前にはほとんど想像もできなかった未来の SF の世界を見ています。しかし、爬虫類の分野では、人工知能はあまり関与していないようです。クローラーが「古代」の技術として、過去 20 年間に検索エンジン、ニュース集約、データ分析などの多くの技術産業を生み出したことは事実ですが、明らかな技術的ブレークスルーはまだ見られていません。 XPathやリバースエンジニアリングなど、Webデータを自動取得する技術。しかし、人工知能や機械学習の発達により、理論上はクローラー技術で「自動運転」を実現できるようになりました。インテリジェント クローラー(インテリジェントで自動化されたデータ抽出クローラー テクノロジ) を複数の観点から説明します。

現在の Web クローリング技術

Web クローラーは、インターネットやその他のコンピューター ネットワークからデータを取得するために使用される自動化されたプログラムです。彼らは通常、自動スクレイピング技術を使用して Web サイトに自動的にアクセスし、Web サイト上の情報を収集、解析、保存します。この情報は、構造化データまたは非構造化データの場合があります。

従来の意味でのクローラー技術には、主に次のモジュールまたはシステムが含まれます。

  1. ネットワーク要求: Web サイトまたは Web ページに対して HTTP 要求を開始して、HTML などのデータを取得します。
  2. Web ページの解析: HTML を解析して構造化されたツリー構造を形成し、XPath または CSS セレクターを介してターゲット データを取得します。
  3. データストレージ: 解析された構造化データを保存します。これは、データベースまたはファイルの形式にすることができます。
  4. URL 管理: URL 解決やページングまたはリスト ページの要求など、クロールする URL リストとクロールされた URL リストを管理します。

しかし、現在、クローラープログラムの開発は主に Web ページの解析に重点が置かれており、多くの人手を消費しています。HTML は Web ページ データに解析する必要がありますが、Web サイトごとにレイアウト、形式、スタイル、およびコンテンツが異なるため、各 Web サイトおよび Web ページには個別の解析ロジックが必要であり、手動コーディングのコストが大幅に増加します。検索エンジンのクローラーなどの一部の汎用クローラーは、あまり多くの解析ロジックを記述する必要はありませんが、そのようなクローラーは通常、特定のトピックのデータ抽出に集中できません。したがって、手作業による記述のコストを削減するには、インテリジェント クローラーの主な目標である、少量の解析ロジックを記述または記述せずに、Web ページ データを自動的に抽出することが最善です。

既知の実装

インテリジェントな Web ページ抽出を実装することは容易ではありませんが、インテリジェントなクローラーを開発するいくつかの試みが既に行われています。その中で、 Kingname が開発したGNE (GeneralNewsExtractor) は、テキストと句読点の密度抽出アルゴリズムに基づく、ウェブページのテキスト抽出のオープン ソース実装です。Cui Qingcai によって開発されたGerapyAutoExtractor は、リスト クラスターと SVM アルゴリズムに基づく Web ページ リスト ページ認識を実装しました。商用クライアント ソフトウェアのOctoparseは、自動リスト認識モジュールを開発しました。ディフボットは、API ベースのインテリジェントな Web ページ認識プラットフォームであり、99% と主張する非常に高い認識精度を備えています。既知のスマート クローラーの実装は現在、主に GNE や GerapyAutoExtractor などの Web ページの HTML 構造とコンテンツに基づいています。Octopus や Diffbot などの商用ソフトウェアについては、具体的な実装方法を知ることはできません。

Explore リスト ページの認識

現在、テキスト認識の精度は非常に高く、多くの技術的な実装とアプリケーションがあります。ここでは主に、多くのクローラーの Web ページ解析作業であるリスト ページの識別に焦点を当てます。

経験から、目的のコンテンツを自動的に識別する方法を推測できます。人間は視覚動物です。記事のリストを含む Web ページを見ると、下の図に示すように、何の驚きもなくすぐに記事のリストを認識します。しかし、私たちはそれをどのように正確に認識していますか?実際、同じカテゴリの記事リスト項目は、自然に 1 つのカテゴリにグループ化されます。したがって、これが実際にはリスト ページであることがすぐにわかります。もちろん、なぜこれらのリスト項目は似ているのでしょうか? これらのリストの子要素も似ていることがわかるので、それらを結び付けるのは自然なことです。個々のサブ要素が合計されて 1 つのリスト項目になり、私たちの脳が自動的にそれらをグループ化します。これがリスティングページ認識のプロセスです。

このような分析に基づいて、機械学習におけるクラスタリング アルゴリズムを考えるのは実際には非常に簡単です。Web ページ上の各ノードの特徴を抽出し、クラスタリング アルゴリズムを使用して同じカテゴリのノードを除外するだけです。もちろん、ここでの機能の選択を考慮する必要があります。HTML の 1 つのノードを単純に見るのではなく、それを他のノードと関連付けて特徴を抽出する必要があります。これにより、さまざまなカテゴリのいくつかのノードを取得できます。次に、ノード クラスターの全体的な情報に従って、目的のリスト ページをフィルター処理できます。

もちろん、このようなアルゴリズムを実際にコードで実装するのは簡単なことではありません。HTML の各ノードをモデル化してベクトル化し、それらに基づいてツリー状のグラフを構築する必要があります。これは非常に面倒なことです。幸いなことに、作成者は sklearn 、 networkx 、およびその他のライブラリを使用して、リストページ上のリスト要素を自動的に認識し、認識結果を視覚的に表示できる基本的なリストページ認識システムWebspotを実装しました (下図を参照)。

ほとんどのリストでは、Webspot の識別能力は良好です。Diffbot ほど正確ではありませんが、それほど複雑でないページについては正確に識別できます。

では、Diffbot のようなリスト ページ識別ソリューションが既にあるのに、なぜ新しい車輪を発明するのでしょうか? 最も重要な理由の 1 つは、Diffbot などの商用の高精度ソフトウェアが、XPath や CSS Selector などの再利用可能な抽出ルールを直接提供できないことです。必要なのは、自動識別のための抽出ルールだけです。次に、Scrapy や Colly などのオープン ソース クローラーに統合することで、データ キャプチャのコストを大幅に削減できます。これは、Webspot が現在ユーザーに提供できる機能でもあります。次の図に示すように、リスト ページの要素と対応するフィールドを識別するだけでなく、抽出ルールも提供します。

このような抽出ルールにより、一度の自動識別だけで、類似するWebページから自動的にデータを抽出することができます。

現在、Webspot はまだ開発の初期段階にあり、将来的にはさらに多くの新機能とアルゴリズムの開発と最適化が行われるはずです。

将来の開発

インテリジェント クローラーは Web ページの自動操縦に相当し、クローラーは必要なデータや情報を必要に応じて取得できるため、手動操作をあまり必要としません。これは、多くのデータ要求者やクローラー エンジニアにとって理想的なテクノロジです。ただし、インテリジェント クローラーは現時点ではまだ成熟しておらず、既存の実装とテクノロジは比較的単純です。将来的には、ディープラーニングや強化学習などの技術を用いて、インテリジェントクローラーの認識能力を向上させる可能性があります。さらに、グラフ理論と人工知能をビジュアル テクノロジーと組み合わせることで、インテリジェント クローラーの精度が飛躍的に向上する可能性があります。著者は、データ抽出のコストの問題を解決するために、Webspot プロジェクトを通じてインテリジェント クローラーについて調査を続けます。