ハイファットマンの友人M

ハイファットマンはおともだちです。ほぼメモ

言語処理100本ノック(その6)

3章に入りました。

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

1行に1記事の情報がJSON形式で格納される
各行には記事名が"title"キーに,記事本文が"text"キーの辞書オブジェクトに格納され,そのオブジェクトがJSON形式で書き出される
ファイル全体はgzipで圧縮される
以下の処理を行うプログラムを作成せよ.

20. JSONデータの読み込み

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

import json

def load_file():
    file_list = open('jawiki-country.json').readlines()
    for item in file_list:
        json_item = json.loads(item)
        if json_item['title'] == 'イギリス':
            return json_item['text']

if __name__ == '__main__':
    print(load_file())
  • 1行ずつ読み込んでパース
  • titleがイギリスだったら、本文を表示してループを抜ける

実行結果は長いので省略。

参考

21. カテゴリ名を含む行を抽出

記事中でカテゴリ名を宣言している行を抽出せよ

import re
from q20 import load_file

split_text = load_file().splitlines()
pattern = r"\[\[Category"
repattern = re.compile(pattern)

for t in split_text:
    if repattern.match(t):
        print(t)
  • 2行目で、20問目のload_fileメソッドを読み込んでいます
  • 1行ずつループを回して[[Categoryを含む行なら出力

実行結果

$ python 21.py
[[Category:イギリス|*]]
[[Category:英連邦王国|*]]
[[Category:G8加盟国]]
[[Category:欧州連合加盟国]]
[[Category:海洋国家]]
[[Category:君主国]]
[[Category:島国|くれいとふりてん]]
[[Category:1801年に設立された州・地域]]

参考