ホームページ  >  記事  >  バックエンド開発  >  Scrapy クローラーを使用してディープラーニング分野の論文データをキャプチャする

Scrapy クローラーを使用してディープラーニング分野の論文データをキャプチャする

WBOY
WBOYオリジナル
2023-06-23 09:33:221805ブラウズ

ディープラーニングは、人工知能の分野で最も人気のある最先端の研究方向の 1 つです。関連研究に従事する学者や実務者にとって、データセットの入手は詳細な研究を実施するための重要な前提条件です。しかし、質の高い深層学習研究論文のほとんどは一流の国際学会(NeurIPS、ICLR、ICMLなど)を通じて発表されており、これらの論文を入手することは困難です。そこで、この記事では、Scrapy クローラー技術を使用してディープラーニングの分野で紙データをクロールする方法を紹介します。

まず、クロールするターゲット Web サイトを決定する必要があります。現在、深層学習の論文を管理する一般的な Web サイトには、arXiv や OpenReview などがあります。この記事では、arXiv データをクロールすることを選択します。 arXiv は、ディープラーニング分野の論文をはじめ、さまざまな分野の論文を含む科学論文を管理する Web サイトです。同時に、arXiv Web サイトは便利な API インターフェイスも提供しており、クローラー プログラムが紙データを簡単に取得できるようになります。

次に、Scrapy クローラー プログラムの作成を開始できます。まず、ターミナルに次のコマンドを入力して Scrapy プロジェクトを作成します:

scrapy startproject deep_learning_papers

作成後、プロジェクト ディレクトリに入り、スパイダーを作成します:

cd deep_learning_papers
scrapy genspider arXiv_spider arxiv.org

ここではスパイダーに「arXiv_spider」という名前を付けます。そして、クローリング Web サイトを arxiv.org として指定します。作成後、arXiv_spider.py ファイルを開くと、次のコードが表示されます。

import scrapy


class ArxivSpiderSpider(scrapy.Spider):
    name = 'arXiv_spider'
    allowed_domains = ['arxiv.org']
    start_urls = ['http://arxiv.org/']

    def parse(self, response):
        pass

これは最も単純な Spider テンプレートです。紙の情報を取得する関数として parse メソッドを記述する必要があります。論文情報はAPIインターフェース経由で取得するため、GETリクエストを送信する必要があります。 Python の request モジュールを使用してリクエストを送信できます。ここでは、リクエストを送信する関数を作成します。

import requests

def get_papers_data(start, max_results):
    url = 'http://export.arxiv.org/api/query?search_query=all:deep+learning&start=' + str(start) + '&max_results=' + str(max_results)
    headers = {'Content-Type': 'application/json'}
    response = requests.get(url, headers=headers)
    return response.content

get_papers_data 関数は、開始位置と最大数という 2 つのパラメーターを受け取ります。ディープラーニング分野のすべての論文情報を取得できるように、search_queryパラメータに「all:deep learning」を渡します。リクエストを使用して GET リクエストを送信した後、response.content からデータを取得できます。

parse メソッドでは、返されたデータを解析します。 XPath 式を使用すると、コンテンツをすばやく取得できます。具体的なコードは次のとおりです。

  def parse(self, response):
        for i in range(0, 50000, 100):
            papers = get_papers_data(i, 100)
            xml = etree.XML(papers)

            for element in xml.iter():
                if element.tag == 'title':
                    title = element.text
                elif element.tag == 'name':
                    name = element.text
                elif element.tag == 'abstract':
                    abstract = element.text

                yield {'title': title, 'name': name, 'abstract': abstract}

ここでは、すべての深層学習論文の情報を取得するまで、0 から開始して毎回 100 ずつ増加する最大 50,000 回のループ操作を使用します。次に、etree.XML を使用して、取得したデータを XML 形式に解析し、各要素を 1 つずつ読み取ります。要素のタグが「title」、「name」、「abstract」の場合、要素の内容を対応する変数に代入し、最後に yield を使用して解析結果を返します。

最後に、クローラー プログラムを開始する必要があります。

scrapy crawl arXiv_spider -o deep_learning_papers.csv

ここでは、「-o」パラメーターを使用して出力ファイルを指定します。デフォルトは JSON 形式です。ここでは CSV 形式を選択し、出力ファイルの名前は「deep_learning_papers.csv」とします。

Scrapy クローラー技術により、ディープラーニング分野の論文情報を簡単に取得できます。他のデータ処理技術を組み合わせることで、これらのデータをより深く調査・分析することができ、ディープラーニング分野の発展を促進します。

以上がScrapy クローラーを使用してディープラーニング分野の論文データをキャプチャするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。