最近では、古今東西、いろいろな小説がオンラインで公開されている。それらの小説を読み始めたら時間がいくらあっても足りないほどだ。そこで、今回は、簡単なネガポジ判定の手法を使って、その小説を読む前に、小説を解析して好きな小説の傾向を掴む方法を紹介しよう。セットアップ不要でブラウザで使えるPython環境の実行環境Colaboratoryを使うので、気軽に形態素解析や自然言語解析の初歩を実践してみよう。
○ネット小説は読み放題!
今は小説好きには堪らない時代だ。明治以前の文豪たちの作品であれば、多くは著作権が切れているので「青空文庫で読み放題で、オンライン小説の投稿サイトの「小説を読もう!」なら70万を超えるタイトルが読み放題だ。筆者も小説が好きなので、時々読んでいるのだが、とにかくいろいろな種類があるので、どれを選んで良いのか悩むほど。そこで、今回は、ネガポジ判定の手法を利用して、小説を簡単に解析して、好きな小説の傾向を数値化してみよう。
○ネガポジ判定とは?
ネガポジ判定とは『感情分析(英語:Sentiment Analysis)』と呼ばれる技術の一種だ。これは、文章に含まれる「嬉しい」とか「悲しい」という感情表現に関連する単語を抽出して解析を行う手法である。しかもその判定方法は難しいものではない。例えば、「嬉しい」という単語があれば、前向き(ポジティブ)な文章、「悲しい」という単語があれば後ろ向き(ネガティブ)な文章というように判定する。
既に、ある事件に関するTwitterのつぶやきをネガポジ判定するとか、Amazonの商品レビューを判定するなど、様々な分野で利用されている。代表的な応用例が、Yahoo!のリアルタイム検索で、検索語句のネガポジ判定を表示する機能があるので面白い。
○ネガポジ判定の作り方
さて、ここから実際にさっそくネガポジ判定を作っていこう。最初に今回作成するプログラムの手順を確認してみよう。箇条書きすると、以下のようになる。
(1)解析対象の文章を形態素解析して文章を形態素と呼ばれる最小単位に分割する
(2)分割した各形態素がネガポジ判定用の辞書に合致するかを調べ、合致すればそれを数え上げる
(3)数えた結果を基に計算して結果を表示する
今回、小説の解析を行うために、GoogleのColaboratoryを使ってみよう。これを使えば、ブラウザ上で、Pythonを実行できる。しかも、機械学習でよく使うライブラリはインストール済みなので、余分な手間がかからない。
Webブラウザで、こちらのColaboratoryにアクセスしたら、Googleアカウントでログインしよう。
そして、画面上部にあるメニューの「ファイル」から「Python3の新しいノートブック」をクリックして作成しよう。すると、以下のような画面が出るので、形態素解析のためのライブラリ「Janome」をインストールしよう。以下のコマンドをセルに書き込んで実行しよう。(実行するには、書き込んだプログラムの左側にある実行ボタンをクリックすれば良い。)
!pip install janome
なお、Janomeを利用した形態素解析については、本連載18回目「夏目漱石が最も使った言葉は何? - 文章中の単語をカウントしよう」でも紹介しているので、参考にすると良いだろう。
○ネガポジ辞書を準備しよう
次に、前向き(ポジティブ)、後ろ向き(ネガティブ)の判定に使う単語辞書「日本語評価極性辞書」をダウンロードしよう。こちらで公開されている。もし、URLが変更されていなければ、以下のプログラムを入力すれば、データをダウンロードできる。
! curl http://www.cl.ecei.tohoku.ac.jp/resources/sent_lex/pn.csv.m3.120408.trim > pn.csv
上記のコマンドは、curlコマンドを利用してネガポジ辞書をダウンロードし、「pn.csv」というファイルに保存するというものだ。
○小説をダウンロードしよう
次に、解析対象となる小説をダウンロードしてみよう。小説はオンライン小説であることを念頭に置くので、HTML形式であるとする。ここでは、青空文庫にある、太宰治の小説「走れメロス」を解析してみよう。ここでも、コマンドを実行してダウンロードしよう。ダウンロードしたファイルは「syosetu.html」という名前で保存する。
!curl https://www.aozora.gr.jp/cards/000035/files/1567_14913.html > syosetu.html
小説をダウンロードしたら、HTMLのタグを除去しよう。画面上ではただのテキストでも、ブラウザのポップアップメニューから「ページのソースを表示」で見てみると、たくさんのHTMLタグが埋め込まれているのが分かる。そこで、HTMLのタグを除去して、テキストだけにしよう。
HTMLのタグを削除するには、BeautifulSoup4というライブラリを使うと良い。これは、Colaboratoryに最初からインストールされているので追加インストールの必要はない。(もしも、インストールされていなければ『! pip install beautifulsoup4』でインストールできる。)
以下のコードを実行することで、HTMLのタグを削除してファイルに保存する。
2020-01-06 02:12:28