言語処理100本ノック-20(pandas使用):JSONデータの読み込み


言語処理100本ノック 2015「第3章: 正規表現」20本目「JSONデータの読み込み」記録です。
1年以上前にやった内容の復習なのですが、ほとんど覚えていなかったです。正規表現は、必要な時に毎回ググりながらやっていたのですが、少なくても記事などにアウトプットしないと私には意味が小さいと痛感しました。
20本目は正規表現課題の準備としてJSONファイル読込で、非常に簡単です。pandasを使って読み込んでいますが、改めてpandasの便利さを実感します。

参考リンク

リンク 備考
020.JSONデータの読み込み.ipynb 回答プログラムのGitHubリンク
素人の言語処理100本ノック:20 多くのソース部分のコピペ元
ゼロから覚えるPython正規表現の基本とTips 当ノックで学習した内容を整理しました
正規表現 HOWTO Python公式の正規表現How To
re --- 正規表現操作 Python公式のreパッケージ説明

環境

種類 バージョン 内容
OS Ubuntu18.04.01 LTS 仮想で動かしています
pyenv 1.2.15 複数Python環境を使うことがあるのでpyenv使っています
Python 3.6.9 pyenv上でpython3.6.9を使っています
3.7や3.8系を使っていないことに深い理由はありません
パッケージはvenvを使って管理しています

上記環境で、以下のPython追加パッケージを使っています。通常のpipでインストールするだけです。

種類 バージョン
pandas 0.25.3

第3章: 正規表現

学習内容

Wikipediaのページのマークアップ記述に正規表現を適用することで,様々な情報・知識を取り出します.

正規表現, JSON, Wikipedia, InfoBox, ウェブサービス

ノック内容

Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-country.json.gzがある.

  • 1行に1記事の情報がJSON形式で格納される
  • 各行には記事名が"title"キーに,記事本文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される
  • ファイル全体はgzipで圧縮される

以下の処理を行うプログラムを作成せよ.

20. JSONデータの読み込み

Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ.

回答

回答プログラム 020.JSONデータの読み込み.ipynb

from pprint import pprint

import pandas as pd

df_wiki = pd.read_json('./jawiki-country.json', lines=True)
pprint(df_wiki[(df_wiki['title'] == 'イギリス')]['text'].values.item())

回答解説

read_json関数でJSONファイルを読み込んでいます。linesパラメータにTrueを渡すことでJSON Linesというフォーマットを読み込めます。

df_wiki = pd.read_json('./jawiki-country.json', lines=True)

読み込んだDataFrameはこんな感じ。titleに国名が入っています。

結果を最後に出力します。改行したかったのでpprint関数使っています。

pprint(df_wiki[(df_wiki['title'] == 'イギリス')]['text'].values.item())
出力結果
('{{redirect|UK}}\n'
 '{{基礎情報 国\n'
 '|略名 = イギリス\n'

中略

 '[[Category:君主国]]\n'
 '[[Category:島国|くれいとふりてん]]\n'
 '[[Category:1801年に設立された州・地域]]')