芥川龍之介の『羅生門』で一番出てくる回数の多い単語は何?【形態素解析】

自然言語処理についても手を伸ばしてみようと思い、AI academyさんのサイトで勉強を始めました。

無料でみられるコンテンツでちょろっと勉強したので、アウトプットとして、『羅生門』の形態素解析をやってみたいと思います。

 

形態素解析とは?

形態素解析とは、私たちが普段生活の中で一般的に使っている言葉、つまり「自然言語」を形態素にまで分割する技術のことです。

形態素とは、言葉が意味を持つまとまりの単語の最小単位のことです。

例えば、「私は台所で料理します」という文章を形態素解析すると「私(代名詞)/は(副助詞)/台所(名詞)/で(助詞)/料理(名詞)/し(動詞)/ます(助動詞)」というように言葉を分割していきます。

Udemy メディア

形態素解析により、文章テキストを品詞単位でばらばらにすることが可能です。

形態素=言葉が意味をもつまとまりの単語の最小単位、とありますが、厳密には形態素=単語とはならないようなので注意です。

その点に関しては、以下のサイトで丁寧に解説されています。

https://qiita.com/icoxfog417/items/e83383263badec7a4805

 

羅生門のテキストデータを入手する

まずは羅生門のテキストデータを入手します。

羅生門は著作権が切れており、青空文庫のウェブサイトから無料でダウンロードすることが可能です。

まずは以下のサイトにアクセスします。

https://www.aozora.gr.jp/cards/000879/card127.html#download

“127_ruby_150.zip”ファイルをダウンロードしておきます。

 

zipfileを用いて、解答し、中にある”rashomon.txt”ファイルを読み込みます。

そのままだと文字化けしてしまうので、デコードしましょう。

 

 

Janomeを用いてテキストを形態素解析する

はじめに最終的なコードを書いておきます。

では細かく見ていきます。

まずはじめにテキストデータを改行コードで区切ります。

linesには、上記のように改行コード間の文章のまとまりが入ります。

t.tokenize(line)

で、テキストをトークンに変換します。

例えば、lines[0]には”羅生門”というテキストが入っていますが、これをトークンに変換し表示させると以下のようになります。

形態素解析結果に対して、surfaceを用いるとその中の単語部分を、part_of_speechを用いると品詞と品詞細分類の箇所だけ抽出することができます。

 

 

w.surfaceで各段落ごとに、形態素の単語部分を取り出して、それを辞書(words)に追加します。

複数回同じ単語が出るたびに、1加算していきます。

 

このままでは、辞書の中身が単語が出てきた順番になっているので、sortedを用いて、単語の出現回数が多い順に並び替えています。

並び替えた辞書に対して、最初の10個の中身を表示しました。

 

おわり

 

結果を見ると、「下人」という単語が45回で一番出現回数が多いようです!

まだまだ自然言語処理の入り口の入り口くらいのところですが、これからもっと勉強を進めて行こうと思います。

 

最後までよんでいただきありがとうございました。