要点
自然言語処理がわからない人や小説家になろうを使って何かしたい人向けに、小説家になろう API を利用し、日本語でどうやって自然言語処理をやっていくか説明したノートブックの公開をしました。
はじめに
一口に自然言語処理といっても内容は多岐に渡ります。形態素解析や照応解析のような言語学に近い内容から、著者推定や極性判定といった知能処理に近い内容まであります。自分たちが普段使用する言葉とコンピュータを使って面白いことが出来そうということから興味を持っている人も多いと思います。
その一方で、しかしデータの取得をどうすればいいか、実際にどういう風にやっていけばいいか分からず踏み出せない人もいると思っています。そこで最近はアニメ化などで知名度が上がってきた「小説家になろう」というサイトの API を利用して、実際に日本語で自然言語処理をやりたい場合、どのようにやっていくのかを説明しました。「小説家になろう」を題材にしましたが、WebAPI でデータを取得し、実際に知能処理するための準備方法を伝えていけたら嬉しいです。
説明方法として Jupyter の Notebook を利用しました。Jupyter の Notebook は Anaconda というプラットフォームを利用することで簡単に環境構築が行なえるため、開発に慣れていなくても実行環境を用意することの敷居が低いです。更に Github 上でプログラムと実行結果をセットで確認出来るので、「伝える」という面で非常に利便性が高い手段です。Azure や Tensorflow の人たちも、機械学習の教材などを Notebook で一般公開しています。(機械学習界隈が賑わえば、彼らのシステムも使ってもらえるわけで Win-Win なので無料公開中です。)
環境構築
今回、必要な実行環境の主な知識は下記リンクを読むと得ることが出来ます。特に PythonJP による Anaconda の説明では、実際に導入方法を画像つきで行われているので非常に有益です。
- Jupyter
- Anaconda
- Python 公式による Anaconda の説明
リポジトリ
章構成
説明順としてはまず全体的に俯瞰して取り敢えずデータ取得から可視化までを行ってみる内容から始めます。次に各プロセスに対して深堀りして 1 周します。その後、応用をかけたらなぁという構成で記述してしました。第 3 章あたりで技術書典 や Booth の存在を思いだしてしまい、ちょっとどうしようか悩んでいます。
取り敢えず WebAPI を取得し、処理し、ワードクラウドを表示するまでを説明した第 1 章のみを公開しておくことにします。形態素解析でMecabを利用しないため、環境構築の敷居は低くくしています。この記事で書くような事を既に Notebook 中に記述してしまい、重複する内容が多くなってしまうので、ここでは記述を控えるようにします。
主要外部ライブラリ
fullname | star | star/day | created_at | updated_at | license | language | description | url |
---|---|---|---|---|---|---|---|---|
mocobeta/janome | 447 | 0.27 | 2015-02-14 | 2019-09-04 | Apache License 2.0 | Python | Japanese morphological analysis engine written in pure Python | link |
matplotlib/matplotlib | 9,980 | 3.2 | 2011-02-19 | 2019-09-05 | Unknown, see homepage | Python | matplotlib: plotting with Python | link |
amueller/word_cloud | 6,022 | 2.41 | 2012-11-04 | 2019-09-04 | MIT License | Python | A little word cloud generator in Python | link |
psf/requests | 40,037 | 12.81 | 2011-02-13 | 2019-09-05 | Other | Python | Python HTTP Requests for Humans™ ✨🍰✨ | link |
おわりに
WebAPI を利用し自然言語処理を行う事に対して、ユースケースで「小説家になろう」の API を使って Wordcloud の作成を実現する方法を書いた Notebook を公開しました。途中で余計なことを考えてしまって続編をどうするか未定ですが、少しでも自然言語処理で遊べる人が増えれば幸いです。