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

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

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

OS 環境は Linux です。

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年代以降の言語学などでは、定義中にも「記号体系」といった表現もあるように形式的な面やその扱い、
言い換えると形式言語的な面も扱うようになっており、こんにちの言語学において形式体系と全く無関係な分野はそう多くはない
。形式的な議論では、「その言語における文字の、その言語の文法に従った並び」の集合が「言語」である、といったように定義
される。

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

参考書籍

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

関連記事

【Python】 Series 型を dict(辞書型)に変換する方法。

Python で Series 型を dict(辞書型)に簡単に変換する方法を紹介します。 「

記事を読む

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

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

記事を読む

【matplotlib】 Python でヒストグラムの横軸と棒(ビン)の数を調整する方法。

Python の matplotlib を使ってヒストグラムを描画し、横軸の目盛りと棒(ビン)がそろ

記事を読む

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

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

記事を読む

【Python】時系列データ(為替データ)をグラフ表示してみた。

今回は、pandas・matplotlib ライブラリを使って、時系列データ(為替データ)をグラフ表

記事を読む

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

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

記事を読む

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

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

記事を読む

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

OpenCV のインストール Numpy のインストール [crayon-6078190fb

記事を読む

【Pandas】 DetaFrame の列ごとに演算する方法【Python】

今回は、DetaFrame の列ごとに平均や加算・減算なのど演算をし、結果を DetaFrame 型

記事を読む

【Pandas】 loc・ilocで1行のみ Series ではなく DataFrame で抽出する方法。

Python の Pandas で DataFrame から loc や iloc を使って行を抽出

記事を読む

【MQL4】EAファイルを作成・実行する方法【FX自動売買】

EAファイルとは、為替の価格データが更新されるたびに繰り返し実行してく

【Excel VBA】開発タブを表示させる方法。

Excel VBAでマクロの開発を行うためには、「開発」タブを表示させ

投資信託にかかる費用について調べてみた。

投資信託を探していると「買付手数料」や「管理費用」などが記載されていた

FX収支|2021年3月|+128,508円

FXの2021年3月の収支結果報告です。 今月は、FXを

【トラリピ】スプレッドについて調べてみた【FX自動売買】

トラリピは、マネースクエアが運営しているFXの自動売買システムです。

→もっと見る

PAGE TOP ↑