【Python】Wikipedia のデータセットを取得し、文章を抽出する方法。
公開日:
:
最終更新日:2018/12/16
Python WikiExtractor, Wikipedia, データセット, 文章抽出
Wikipedia のデータセットを取得し、Python のライブラリを用いて文章を抽出する方法を紹介します。
OS 環境は Linux です。
Contents
Wikipedia のデータセットのダウンロード
Wikipedia にはデータセットが用意されているので、Wikipedia のデータを使いたいときは、できるだけクローリングせずにデータセットをダウンロードした方が良いみたいです。
Wikipedia の日本語データセットは以下のページに公開されています。
https://dumps.wikimedia.org/jawiki/
wget で記事ページをダウンロードします。
1 |
$ wget https://dumps.wikimedia.org/jawiki/20181201/jawiki-20181201-pages-articles.xml.bz2 |
データは数GB あるので、ダウンロード完了まで数十分かかりました。
bzcat コマンドと less コマンドを使って、中身を確認できます。
1 |
$ bzcat jawiki-20181201-pages-articles.xml.bz2 | less |
Wikipedia のデータセットから文章を抽出
Python のライブラリ WikiExtractor を使って、先ほどダウンロードしたデータセットからタイトルと文章のみを抽出します。
WikiExtractor.py をダウンロード
スクリプトをダウンロードします。
1 |
$ wget https://github.com/attardi/wikiextractor/raw/master/WikiExtractor.py |
WikiExtractor.pyを実行
以下のオプションを用いて、文章を抽出します。
–no-templates:ページの冒頭などに貼られるテンプレートを展開しない。
-o:出力先のディレクトリを指定する。
-b:分割するファイルサイズを指定する。
1 |
$ python WikiExtractor.py --no-templates -o extracted -b 500M jawiki-20181201-pages-articles.xml.bz2wiki-20181201-pages-articles.xml.bz2 |
抽出が始まり、以下のように画面がスクロールします。
tree コマンドで確認すると以下のような構成になっていました。
ファイルの中身は、以下のように <doc> タグで囲まれて文章が抽出されていました。
<doc id=”10″ url=”https://ja.wikipedia.org/wiki?curid=10″ title=”言語”>
言語この記事では言語(げんご)、特に自然言語について述べる。
広辞苑や大辞泉には次のようにある。
辞典等には以上のようにあるわけだが、これは大きく二分すると「自然言語」と「形式言語」とがあるうちの自然言語について述
べている。しかし、1950年代以降の言語学などでは、定義中にも「記号体系」といった表現もあるように形式的な面やその扱い、
言い換えると形式言語的な面も扱うようになっており、こんにちの言語学において形式体系と全く無関係な分野はそう多くはない
。形式的な議論では、「その言語における文字の、その言語の文法に従った並び」の集合が「言語」である、といったように定義
される。言語は、人間が用いる意志伝達手段であり、社会集団内で形成習得され、意志を相互に伝達すること(コミュニケーション)や、
抽象的な思考を可能にし、結果として人間の社会的活動や文化的活動を支えている。言語(個別言語)には、文化の特徴が織り込
まれており、共同体のメンバーは、(その共同体で用いられている)言語の習得をすることによって、その共同体での社会的学習
、および(その共同体で望ましいとされる)人格を形成してゆくことになる。
表や箇条書きは取り除かれてしまうため、「–list」オプションで含めることができます。
1 |
$ python WikiExtractor.py --no-templates --lists -o plus_lists -b 500M jawiki-20181201-pages-articles.xml.bz2 |
中身を確認します。箇条書きが追記されていることがわかります。
<doc id=”10″ url=”https://ja.wikipedia.org/wiki?curid=10″ title=”言語”>
言語この記事では言語(げんご)、特に自然言語について述べる。
広辞苑や大辞泉には次のようにある。
– 人間が音声や文字を用いて思想・感情・意志 等々を伝達するために用いる記号体系。およびそれを用いる行為(広辞苑)。音声
や文字によって、人の意志・思想・感情などの情報を表現したり伝達する、あるいは他者のそれを受け入れ、理解するための約束
・規則。および、そうした記号の体系(大辞泉)。
– ある特定の集団が用いる、音や文字による事態の伝達手段。(個別言語のことで、英語・フランス語・日本語などのこと)
– (言語学用語)ソシュールの用語「langue ラング」の日本語での訳語。辞典等には以上のようにあるわけだが、これは大きく二分すると「自然言語」と「形式言語」とがあるうちの自然言語について述
べている。しかし、1950年代以降の言語学などでは、定義中にも「記号体系」といった表現もあるように形式的な面やその扱い、
言い換えると形式言語的な面も扱うようになっており、こんにちの言語学において形式体系と全く無関係な分野はそう多くはない
。形式的な議論では、「その言語における文字の、その言語の文法に従った並び」の集合が「言語」である、といったように定義
される。言語は、人間が用いる意志伝達手段であり、社会集団内で形成習得され、意志を相互に伝達すること(コミュニケーション)や、
抽象的な思考を可能にし、結果として人間の社会的活動や文化的活動を支えている。言語(個別言語)には、文化の特徴が織り込
まれており、共同体のメンバーは、(その共同体で用いられている)言語の習得をすることによって、その共同体での社会的学習
、および(その共同体で望ましいとされる)人格を形成してゆくことになる。
参考書籍
これらの内容は、以下の書籍を参照しました。
関連記事
-
-
【Python】Beautiful Soup を使ってスクレイピングする方法。
Beautiful Soup は、シンプルでわかりやすい API でデータを抜き出せる Python
-
-
【Python】API を使って Amazon の商品情報を収集する方法。
AmazonAPI ライブラリをインストール 以下のコマンドで python-amazon-sim
-
-
【Python】時系列データ(為替データ)をグラフ表示してみた。
今回は、pandas・matplotlib ライブラリを使って、時系列データ(為替データ)をグラフ表
-
-
【Atom エディタ】Python で Matplotlib のグラフを Atom 上に表示させる方法。
Atom エディタで Python の Matplotlib ライブラリを使って、Atom 上にグラ
-
-
【Python】API を使って YouTube から動画情報を収集する方法。
API を使って YouTube から動画情報を収集してみたときのメモです。 OS は Lin
-
-
【OpenCV】画像の顔部分を検出する方法【Python】
OpenCV を使って、Python で画像から顔部分の検出を行ったときのメモです。 Anac
-
-
python 2.7 を Windows 64bit OS にインストールした。
python 2.7 を Windows にインストールしたときのメモです。 Python に
-
-
【Python】pip3 で「cannot import name ‘main’」エラーが出たときの対処法。
Python でライブラリをインストールする際に、pipを使います。 Python2 と Py
-
-
【matplotlib】 Python でヒストグラムの横軸と棒(ビン)の数を調整する方法。
Python の matplotlib を使ってヒストグラムを描画し、横軸の目盛りと棒(ビン)がそろ
-
-
【Anaconda】Prompt 上で Git コマンドを実行する方法。
Anaconda のコマンドプロンプト(Anaconda Prompt)上で、Git Hub からダ