読者です 読者をやめる 読者になる 読者になる

鴨川にあこがれる日々

軽い技術っぽい記事かいてます

自然言語処理を自習したくなったら参考になりそうなサイトなど

雑にですが,知ってるサイトやチュートリアルをまとめたくなったのでまとめてみました.夏ですし.
適宜更新しています.

最終更新 2016年08月19日

チュートリアル

言語処理100本ノック

言語処理100本ノック 2015

東北大学の乾・岡崎研究室の岡崎先生が作られたチュートリアルです.
他大学の研究室でも利用されています.
簡単な内容からはじまるので,プログラミングの導入としてもいいと思います.

NLPプログラミングチュートリアル

Graham Neubig's Teaching

NAISTのGraham Neubig先生のチュートリアルです.
githubにサンプルコードが公開されています.
チュートリアルにはテストがついているので,実装が正しいかを確かめることができます.
扱っているトピックが広いので,かなり勉強になると思います.

ソフト

形態素解析

日本語は英語と異なり単語同士が繋がっているので,分割する必要があります.
そのためのツールです.

私的にはMecabを使います.
Java形態素解析したいときはkuromojiを使ってます.
kyteaはレシピ用のモデルなどがあるので特定ドメインで使います.

Twitter上で形態素解析したくなったら
twitter.com
を使います.オプションをつけることでkyteaだけでなくmecabとJUMANの解析結果も返してくれます.

例えば
入力


結果

こんなかんじ.

ベクトル表現

king - man + woman = queen で有名になった単語のベクトル表現を学習するソフトです.


chainerやgensimではword2vecが使えるので,学習した結果を使った応用などに使いやすいかと思います.

chainerとgensimは,word2vecを使えるだけでなく多様なモデルを扱えます.
詳細は割愛します.すみません.

ニューラルネット

深層学習,流行ってますね.

Chainer

日本でよく使われてる印象です(特にNLP2016に参加して思いました).
設計思想的にRNNを書きやすいところがあってChainerを使うことがあるようです.
現在の最新版だと1.7.1のLSTMはpeephole(MLPシリーズのLSTMの構造に含まれているもの)がありませんので再現する際は,注意してください.
LTSMもどきのGRUも実装されています.

encoder-decoderなどのサンプルを公開されている方もいますので参考になるかと思います.
github.com

TensorFlow

googleの出してるフレームワークです.
RNNのチュートリアル(英語)があるのでそれが参考になるかと思います.
使ったことがないので詳しくは触れませんが,Google製ということもあって,いろんな方の実装が転がってます.

keras

TheanoとTensorFlowのラッパーで,どちらかをバックエンドに使うことができます.
記述しやすく,Pythonとして記述できます.
ユーザも比較的多い多いこともあり,サンプルコードが見つかりやすいです.

文書分類器

分散表現の獲得と高速な文書分類の2つの機能を提供してるfacebookのfastTextがあります.

GitHub - facebookresearch/fastText: Library for fast text representation and classification.

データ

英語だとけっこうたくさんある気がします.
日本語はあんまりないような

英語


2番目のNLTK_dataは,PythonのNLTKというライブラリから入手できるデータセットです.
データのみをダウンロードすることも可能です.
3番目のgutenbergは,例えるなら英語版青空文庫です.
4番目のサイトはText以外も含めてmatlabで扱う形式のデータ(生データも)を公開しています.Matlabがなくてもpythonであればscipyを使うことで読み込むことができます.

Textデータでは

  • NIPS: 論文データ
  • PNAS: ジャーナルデータ
  • Word Counts from Encyclopedia Articles

があります.

日本語

「小説家になろう」はクロールする必要がありますが,青空文庫と同様にtxtファイルで入手できます.

研究者でないと難しいですが, 情報学研究データリポジトリ データセット一覧 からデータを入手することができます.
ここにはCookpadのデータやYahoo!の知恵袋データ,ニコニコ動画のコメントデータなどがあります.

辞書

ipadicだけでは新語に対応できないためにwikipediaの見出語やはてなキーワードで拡張することが多いです.
mecab-ipadic-neologdを使うことでその手間が省けます.

コンペ

チュートリアルだけやってると飽きてしまったりモチベが上がらないので,実用的に使いたくなります.例えばKaggleでしょうか.

機械学習全般ですが,実力試しにつかえます.
チュートリアルがついているものがあり勉強になります.

NLPのタスクですと映画のレビューを分類するものがあります.ここではword2vecを使います.
www.kaggle.com

書籍

お恥ずかしいことですが,言語処理の本はあまり読んでおらず,中身について言及できる書籍はあまりないです.

機械学習

言語処理のための機械学習入門

言語処理のための機械学習入門 (自然言語処理シリーズ)

言語処理のための機械学習入門 (自然言語処理シリーズ)

研究室に輪講で読んだ1冊です.
こちらはおすすめだと思います.

4.5にでてくる対数線形モデルは,これを読んで実装できました.

グラフ

Graph-based Natural Language Processing and Information Retrieval

Graph-based Natural Language Processing and Information Retrieval

Graph-based Natural Language Processing and Information Retrieval

洋書ですしもはや入門ですらないですが.
グラフのアルゴリズムNLPやIRの分野に適用した研究がまとまっています.
もちろんPageRankもあります.

入門書

自然言語処理の基礎

東工大の奥村先生のNLP入門書

自然言語処理の基礎

自然言語処理の基礎

自然言語処理

京大の黒橋先生の書かれた放送大学のテキスト

自然言語処理 (放送大学教材)

自然言語処理 (放送大学教材)

個人的にはこれが一番読みやすいかなぁという印象があります.

トピックモデル

私がよく使うアルゴリズムです.
日本語の書籍は2冊出ています.


機械学習プロフェッショナルシリーズのトピックモデルは,LDAのよりも単純なユニグラムモデルなどの導出から始まるため,LDAが理解しやすく,アルゴリズムが丁寧に書いてるので実装しやすいです.
正しい変形がやや天下りなので,ちゃんと式を追いたい人はもう一方をオススメします.

トピックモデル (機械学習プロフェッショナルシリーズ)

トピックモデル (機械学習プロフェッショナルシリーズ)


自然言語処理シリーズのトピックモデルによる統計的潜在意味解析は,式変形が詳しいです.
個人的には3章の周辺化ギブスサンプリングの導出がとても役に立っていて,LDAのグラフィカルモデルを少し拡張したモデルのサンプル式を求めることができました.
オンライン学習などにも触れているので読み応えがあります.

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

その他

首都大学東京の小町先生のページに書籍ついてまとまっているためこちらを参照頂ければと思います.
自然言語処理を学ぶ推薦書籍 - 首都大学東京 自然言語処理研究室(小町研)


他にもありそうですがざっとこんなもので.