【Python】Wikipedia のデータセットを取得し、文章を抽出する方法。

公開日: : 最終更新日:2018/12/16 Python , , ,

Wikipedia のデータセットを取得し、Python のライブラリを用いて文章を抽出する方法を紹介します。

OS 環境は Linux です。

Contents

Wikipedia のデータセットのダウンロード

Wikipedia にはデータセットが用意されているので、Wikipedia のデータを使いたいときは、できるだけクローリングせずにデータセットをダウンロードした方が良いみたいです。

Wikipedia の日本語データセットは以下のページに公開されています。

https://dumps.wikimedia.org/jawiki/

wget で記事ページをダウンロードします。

データは数GB あるので、ダウンロード完了まで数十分かかりました。

bzcat コマンドと less コマンドを使って、中身を確認できます。

Wikipedia のデータセットから文章を抽出

Python のライブラリ WikiExtractor を使って、先ほどダウンロードしたデータセットからタイトルと文章のみを抽出します。

WikiExtractor.py をダウンロード

スクリプトをダウンロードします。

WikiExtractor.pyを実行

以下のオプションを用いて、文章を抽出します。

–no-templates:ページの冒頭などに貼られるテンプレートを展開しない。

-o:出力先のディレクトリを指定する。

-b:分割するファイルサイズを指定する。

抽出が始まり、以下のように画面がスクロールします。

tree コマンドで確認すると以下のような構成になっていました。

ファイルの中身は、以下のように <doc> タグで囲まれて文章が抽出されていました。

<doc id=”10″ url=”https://ja.wikipedia.org/wiki?curid=10″ title=”言語”>
言語

この記事では言語(げんご)、特に自然言語について述べる。

広辞苑や大辞泉には次のようにある。

辞典等には以上のようにあるわけだが、これは大きく二分すると「自然言語」と「形式言語」とがあるうちの自然言語について述
べている。しかし、1950年代以降の言語学などでは、定義中にも「記号体系」といった表現もあるように形式的な面やその扱い、
言い換えると形式言語的な面も扱うようになっており、こんにちの言語学において形式体系と全く無関係な分野はそう多くはない
。形式的な議論では、「その言語における文字の、その言語の文法に従った並び」の集合が「言語」である、といったように定義
される。

言語は、人間が用いる意志伝達手段であり、社会集団内で形成習得され、意志を相互に伝達すること(コミュニケーション)や、
抽象的な思考を可能にし、結果として人間の社会的活動や文化的活動を支えている。言語(個別言語)には、文化の特徴が織り込
まれており、共同体のメンバーは、(その共同体で用いられている)言語の習得をすることによって、その共同体での社会的学習
、および(その共同体で望ましいとされる)人格を形成してゆくことになる。

表や箇条書きは取り除かれてしまうため、「–list」オプションで含めることができます。

中身を確認します。箇条書きが追記されていることがわかります。

<doc id=”10″ url=”https://ja.wikipedia.org/wiki?curid=10″ title=”言語”>
言語

この記事では言語(げんご)、特に自然言語について述べる。

広辞苑や大辞泉には次のようにある。
– 人間が音声や文字を用いて思想・感情・意志 等々を伝達するために用いる記号体系。およびそれを用いる行為(広辞苑)。音声
や文字によって、人の意志・思想・感情などの情報を表現したり伝達する、あるいは他者のそれを受け入れ、理解するための約束
・規則。および、そうした記号の体系(大辞泉)。
– ある特定の集団が用いる、音や文字による事態の伝達手段。(個別言語のことで、英語・フランス語・日本語などのこと)
– (言語学用語)ソシュールの用語「langue ラング」の日本語での訳語。

辞典等には以上のようにあるわけだが、これは大きく二分すると「自然言語」と「形式言語」とがあるうちの自然言語について述
べている。しかし、1950年代以降の言語学などでは、定義中にも「記号体系」といった表現もあるように形式的な面やその扱い、
言い換えると形式言語的な面も扱うようになっており、こんにちの言語学において形式体系と全く無関係な分野はそう多くはない
。形式的な議論では、「その言語における文字の、その言語の文法に従った並び」の集合が「言語」である、といったように定義
される。

言語は、人間が用いる意志伝達手段であり、社会集団内で形成習得され、意志を相互に伝達すること(コミュニケーション)や、
抽象的な思考を可能にし、結果として人間の社会的活動や文化的活動を支えている。言語(個別言語)には、文化の特徴が織り込
まれており、共同体のメンバーは、(その共同体で用いられている)言語の習得をすることによって、その共同体での社会的学習
、および(その共同体で望ましいとされる)人格を形成してゆくことになる。

参考書籍

これらの内容は、以下の書籍を参照しました。

関連記事

【OpenCV】検出した顔画像部分を切り出す方法【Python】

OpenCV を使って、Python で画像の中から顔部分を切り出したときのメモです。 顔部分

記事を読む

【Spyder】引数のあるスクリプトを実行する方法。

Python の統合開発環境(IDE)である Spyder では、簡単にスクリプトを実行できます。

記事を読む

【Python】Beautiful Soup を使ってスクレイピングする方法。

Beautiful Soup は、シンプルでわかりやすい API でデータを抜き出せる Python

記事を読む

【Python】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。

Python で DataFrame 型の特定の列を指定して、対象列の文字列の出現回数をカウントして

記事を読む

【Python】OpenCV を使って顔画像を検出してみた。

OpenCV のインストール Numpy のインストール [crayon-6478575a2

記事を読む

【Anaconda】Prompt 上で Git コマンドを実行する方法。

Anaconda のコマンドプロンプト(Anaconda Prompt)上で、Git Hub からダ

記事を読む

【Python】Windows で ライブラリ(NumPy) をインストールする方法。

Windows の Python(2.X系)で NumPy をインストールしようと思ったら、そもそも

記事を読む

【Pandas】 DataFrame のある列の最大値を含む行のインデックス値を取得する方法。

今回は、Pandas の DataFrame において、ある列で最大値を求めて、その最大値をもつ行に

記事を読む

【Atom エディタ】Python で Matplotlib のグラフを Atom 上に表示させる方法。

Atom エディタで Python の Matplotlib ライブラリを使って、Atom 上にグラ

記事を読む

【Python】 複数の辞書型の同じ key を持つ value を計算に用いる方法。

Python で、複数の辞書型を読み込んで、同じキー(key)を持つ数値(value)を計算に使う方

記事を読む

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

【PyTorch】ニューラルネットワークを構築する方法【NN】

今回は、PyTorch を使って、ニューラルネットワーク(NN)を構築

→もっと見る

PAGE TOP ↑