Python, Janomeで名作「銀河鉄道の夜」を形態素解析してみた

プログラミング

はじめに

皆さんは宮沢賢治の名作「銀河鉄道の夜」という小説を読んだことがありますか?

私は子どもの頃一度読んだのですが、よく意味が分からなくて断念した記憶があります。

さて、今回はこの名作で登場する主人公と友人どのくらいの頻度で登場するか、形態素解析を行って単語の出現回数をカウントしてみます。

「銀河鉄道の夜」で登場する主な人物

・ジョバンニ(主人公)
・カムパネルラ(ジョバンニの友人)
・ザネリ(ジョバンニの同級生)

Janomeとは

JanomeとはPythonで使うことが出来る形態素解析エンジンです。
日本語のテキストを形態素ごとに分割し、品詞を判定したり単語に分割(分かち書き)したりすることが出来ます。

スポンサーリンク

ソースコード

「銀河鉄道の夜」のテキストデータは青空文庫からダウンロードし、そのファイルから解析してみます。

from janome.tokenizer import Tokenizer
import zipfile
import os.path, urllib.request as request

file = "43737_ruby_19028.zip"
zipfile = zipfile.ZipFile(localfile, 'r')
file = zipfile.open('gingatetsudono_yoru.txt', 'r')
bindata = file.read()
textdata = bindata.decode('shift_jis')

t = Tokenizer()
worddic = {}
lines = textdata.split("\r\r")

for line in lines:
    malist = t.tokenize(line)
    for w in malist:
        word = w.surface
        part = w.part_of_speech
        if part.find('名詞') < 0:
            continue
        if not word in worddic:
            worddic[word] = 0
        worddic[word] += 1

keys = sorted(worddic.items(), key=lambda x:x[1], reverse=True)
for word, cnt in keys[:50]:
    print("{0}({1})\n".format(word, cnt), end="")

 

結果

結果は以下のようになりました。
ジョバンニが202回登場し、圧倒的な1位でした!
次いでカムパネルラは112回と二位と予想通りでしたね。
意外だったのは「鳥」という単語がそこそこ登場しているようです。

まとめ

名作 「銀河鉄道の夜」の登場人物の出現回数を形態素解析を使ってカウントしてみました。
これで今日から自信持って、誰が一番小説の中でよく登場するのか言えるようになりますね。

参考サイト

スポンサーリンク

コメント

タイトルとURLをコピーしました