Wikipediaの記事データの単語をカウントしよう
前回投稿した様々な記事の単語をカウントするプログラムを作ってみたのプログラムを用いてWikipediaの記事にどんな単語が出てきているのか集計してみました。
Wikipediaの記事データを取得する
Wikipedia:データベースダウンロードより記事データをダウンロードできます。
jawiki-latest-abstract.xml.gz
が記事データになるのでこれをダウンロードします。記事作成現在の最新バージョンは2019年1月10日更新分です。
サイズは1.83GBでした(デカイなぁ)
カウントしてみる
様々な記事の単語をカウントするプログラムを作ってみたのプログラムで単語をカウントしてみます。
##プログラムの使い方
このプログラムの使い方は
python count_word.py -i (inputするファイル) -o (結果出力ファイル)
みたいな感じで使えます。結果の出力はなくても動作します。
また結果の出力ファイルを指定して単語を検索することも可能です。その際は
python count_word.py -s (結果ファイル)
でいけます。
そのままファイルぶっこむの?
ぶっこみます
タグだらけであってもちゃんとカウントできるように作った(はずです)
カウントする単語の品詞の選択
今回はざっくり名詞のみに絞ってみました。
カウントしてみたら
7~8分かかりました^^;
xml形式だったのでBeautifulSoupでも使ったらもちょっと早くなるかも(?
結果を見てみる
グラフはこんな感じになりました。
タイトルで発言したとか書いてあるのは見なかったことにしてね☆
頻出単語(名詞のみ)ベスト20です。タイトルにも書いてある通り、総単語数は三千百五十一万五千四百二十三単語で、種類は百二十四万二千七十種類でした👏
そしてグラフですが・・・「外部」とか「脚注」は記事の内容ではない単語が上位にいますね。この辺の単語を取り除いてもう一回グラフを出力してみましょう。
特定単語を削除する
delword = input("削除したい単語をスペース区切りで(skip:0):")
if delword == '0':
pass
else:
delword = delword.split(' ')
for word in delword:
del count_dic[word]
こんな感じの処理を追加しました。また削除後のファイルを保存したい場合も-s
オプションで指定可能です。
これで先ほどの結果から文書内容に関係なさそうな単語を消してみます。
py count_word.py -s wiki_result/wiki_count_noun
...
削除したい単語をスペース区切りで(skip:0):外部 リンク 脚注 関連 項目 概要 参考文献 出典 その他 年月日
グラフはこちら
まぁこんなもんかなぁくらいの結果に丸まりました。
結果ファイル
ここに置いてます。
終わりに
単純にカウントするだけだとこんな感じかなぁって感じの結果になりました。オチはありませんごめんなさいm(._.)m
結果を出力したファイル(カウントしたdictをjsonで出力しただけ)が38MBもあったのは驚き