1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

日本語wikipedia情報(タイトル+本文)をBigQueryに投入する

Last updated at Posted at 2023-02-08

1.はじめに

  • 日本語wikipediaのデータをBigQueryに投入した。
  • wikiextractorというライブラリと、pandasではなくて polarsを利用した。

2.日本語wikipediaデータを使いたい

  • 「最も「ありそうで存在しない漢字」は何か?」を読んで「ありそうでない熟語」をどう作ればいいかなと実験したくなり、その中で日本語wikipediaデータをBigQueryに投入したくなった。
  • 他の投稿を見るとMySQLデータをcsvにしてから投入するのが楽そう、と思ったけど、python(というかColaboratory)でやるとしたらどうするのかと検討して下記のような方法を思いついた。

3.日本語wikipediaデータを取得する。

  • いろいろなメタデータもあるみたいだけど、本文と見出しがあればいいので、下記のファイルを指定してダウンロード。
!curl -o jawiki-latest-pages-articles.xml.bz2 https://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2

でOK。

4.データ加工(ライブラリ)

  • wikiextractorを使う。
  • 直接bz2を指定できるので楽。コマンド一覧を見て、のちの利用を考えて--jsonを指定しておくのがミソでした。抽出に少し時間がかかった。
!pip install wikiextractor
!python -m wikiextractor.WikiExtractor /content/jawiki-latest-pages-articles.xml.bz2 --json

このような感じに抽出結果が適当なサイズに分かれてtextフォルダ以下に入っている
image.png

image.png

5. データフレームに入れてcsvに吐き出す。

  • 抽出結果が、textフォルダ以下に入っているので、1jsonファイルに集めていく。
!cat text/*/* > alljson.json
  • これをpandasで入れようとするとクラッシュするので、polarsで実行。
#!pip install polars
import polars as pl

df = pl.read_ndjson("alljson.json")
df.write("wikidata20230113.csv")

6. BigQueryに投入

#from google.colab import auth 
#auth.authenticate_user()

#GCSにコピー
!gsutil cp /content/wikidata20230113.csv gs://**適当な場所**/wikidata20230113.csv

あとはGCSからBigqueryに投入。220万記事くらいあった。
image.png

  • その後、抽出されたjsonファイルを見るとjsonlだったので、ばそのままBigQueryに投入できる?と思ったので試してみたらできた!ステップ5が不要でした。
    image.png
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?