あおのたすのブログ

Deep Learningと自然言語処理と機械学習に興味がある大学院生のブログ。最近は強化学習・Semi-Supervisedなどに興味が出てきた。

自然言語処理がやりたくて大学院を休学した話

はじめまして。@aonotas(あおのたす)です。
現在NAIST(奈良先端科学技術大学院大学)の松本研究室の修士1年の学生です。


自分がなぜNAISTに入学したのか、をブログに残しておこうと思う。
(4月に入学して2ヶ月が経とうとしていて生活にも慣れてきたので)

学部→大学院→大学院休学→NAIST受験→入学の流れを書こうと思う。
自分は学部は名古屋工業大学という大学に通っていた。
情報系の学部で学部時代は授業とかは普通に出ながら、ウェブ系のプログラムを書くのが好きでiOSアプリやウェブサービスを1人で作って学部を過ごしていた。

決してプログラミングが好きという訳ではなく、何か作ることが好きな性格なので、情弱PHPerみたいな学生である。

さて、学部の研究室配属の時に「どうせやるなら自然言語処理っぽいことやりたいな〜」と思ったが、残念ながら自然言語処理だけを専門にしている研究室は自分の大学には無かった。なので、修士の先輩を見て研究室を選んで研究自体は独学で自然言語処理を勉強した。

独学で自然言語処理を勉強したと言っても、興味のある論文を読んで、当時流行っていたParagraph Vectorを使った研究(といっても大きい新規性があるわけではない)を卒論でやった。

1年間周りには自然言語処理の話をできる同期は居ないので、研究の相談をしたい時は結構辛かった。
(先輩に相談すれば相談にのってくれるが、自然言語処理に詳しい訳ではないので指導してもらえる、とまではいかなかった)


そんな中、大学院は外部の大学院を受けるべきかとも思ったが、
学部4年の夏くらいに同じ大学の大学院の推薦が貰えることになり、
推薦を断って外部に行く勇気は出なかったので、ズルズルと進学してしまった。

卒論が終わり3月くらいにYANSに参加した。

yans.anlp.jp

YANSに参加して自然言語処理を好きな学生さんや、企業の人と話してみて、めちゃくちゃ楽しかった。
今まで自然言語処理の話をできる人が研究室に居なかったので、自分としては新鮮であったし、こんなNLPerな人たちの環境で修士取るなら取るべきだな、とも思った。

それからは、推薦で合格していた大学院に4月に入学はしたが、
すぐ休学させていただき、自然言語処理の研究室を受験した。

受験する時に考えた研究室の候補は、

を考えていた。
結局NAISTのみを受験した。
理由としては、鶴岡研究室はとても優秀な先生&Doctorの学生さんが多いが、東京大学の大学院の入試をパスできても
研究室配属の希望で倍率がとても高くなるらしく、諦めてしまった。
(受験の項目が電気系の問題を勉強する必要があるのも諦めてしまった理由としてある)

首都大の小町研究室も先生が有名であるし、学生の方も優秀で何よりもやる気に満ち溢れる人が多いイメージだったが、
NAISTと比べた時に生活の金銭的問題と、周りに何も無いNAISTは何となく修行感が出てカッコイイのでは、という中二病でNAISTにした。
(ちゃんと吟味するべき)
今となっては東北大の乾研にも見学に行けばよかったな、、、とも思います。(NAISTがダメという意味ではなく見学に行かずに決めてしまったので)

NAISTに入学して研究室の環境にとても満足している。
ざっと魅力的に感じた点をまとめてみようと思う。

  • NLPの研究室である
  • 博士課程の学生からアドバイスを貰える
  • Deep LearningとNLPの研究をしている先輩が意外と多かった
  • 教授1名、准教授1名、助教授2名と先生が沢山いる(学部時代は先生1人だったので)
  • 学生寮の生活費が安い(寮は月1万程度)

NAISTには中村研究室もあるので合同の勉強会があったりして、色々勉強させてもらっている。
やっぱり研究は1人でやるものといえども、周りの仲間や先輩や先生は大事だと思っているので、
結果的にNAISTに入学して良かった。

もしも自然言語処理の研究をやりたい方、悩んでる方はYANSに参加したり、
自然言語処理界隈の人に相談してみると幸せになれるかもしれない。


今後ブログでも論文紹介とかしていけたらいいな…

mecab-ipadic-neologdを使ってみた

MeCab用の辞書、mecab-ipadic-neologdが凄いという話を聞いたので、使ってみる。

github.com

基本的にREADMEを読めば分かる。すんなりインストールできた。

# インストール
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd


# 更新
git pull
./bin/install-mecab-ipadic-neologd -y


# 辞書の場所をチェックする
echo `mecab-config --dicdir`"/mecab-ipadic-neologd"


# 実行
mecab -d `mecab-config --dicdir`"/mecab-ipadic-neologd"

10日放送の「中居正広のミになる図書館」(テレビ朝日系)で、SMAPの中居正広が、篠原信一の過去の勘違いを明かす一幕があった。
10日	名詞,固有名詞,一般,*,*,*,10日,トオカ,トオカ
放送	名詞,サ変接続,*,*,*,*,放送,ホウソウ,ホーソー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
「	記号,括弧開,*,*,*,*,「,「,「
中居正広のミになる図書館	名詞,一般,*,*,*,*,中居正広のミになる図書館,*,*,wikipedia_keyword,
」	記号,括弧閉,*,*,*,*,」,」,」
(	記号,括弧開,*,*,*,*,(,(,(
テレビ朝日系	名詞,固有名詞,*,*,*,*,テレビ朝日系,*,*,wikipedia,
)	記号,括弧閉,*,*,*,*,),),)
で	助詞,格助詞,一般,*,*,*,で,デ,デ
、	記号,読点,*,*,*,*,、,、,、
SMAP	名詞,固有名詞,一般,*,*,*,SMAP,スマップ,スマップ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
中居正広	名詞,固有名詞,人名,一般,*,*,中居正広,ナカイマサヒロ,ナカイマサヒロ
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
、	記号,読点,*,*,*,*,、,、,、
篠原信一	名詞,固有名詞,人名,一般,*,*,篠原信一,シノハラシンイチ,シノハラシンイチ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
過去	名詞,副詞可能,*,*,*,*,過去,カコ,カコ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
勘違い	名詞,サ変接続,*,*,*,*,勘違い,カンチガイ,カンチガイ
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
明かす	動詞,自立,*,*,五段・サ行,基本形,明かす,アカス,アカス
一幕	名詞,一般,*,*,*,*,一幕,ヒトマク,ヒトマク
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
あっ	動詞,自立,*,*,五段・ラ行,連用タ接続,ある,アッ,アッ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

言語処理学会(NLP2015)に参加してきた

京都大学で開催された言語処理学会第21回年次大会(NLP2015)に参加されてきた。
自然言語処理に興味あるので、とても刺激的でした。

懇親会で「あ!あのブログ凄い見てます!」って人と沢山会えて幸せだった。
優秀な人はちゃんとブログなどでしっかりアウトプットできてるんだなと感じました。

自分は実装しました!みたいなエンジニア的なブログよりも
こんな論文読んだよ!みたいな記事の方が続くと思う。

読んだ論文はしっかりブログで書こうと思う。


Iyyer, Mohit, Jordan Boyd-Graber, and Hal Daumé III. "Generating Sentences from Semantic Vector Space Representations."

とりあえず文書生成の論文を教えてもらったので、読んだら記事にします。


自分はParagraph Vectorを卒論で使ったのですが、言語処理学会でParagraph Vectorの発表沢山ありましたね。
モデル拡張してる人も沢山いました。
沢山関連論文読んでEMNLPとか通せるようになりたいな〜。

Pythonからmecabで形態素解析やってみる

前回、mecab-pythonをインストールしてみましたが、

今回はpythonから実行してみることに。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MeCab
import sys
import string

tagger = MeCab.Tagger (" ".join(sys.argv))
text = u'MeCabで遊んでみよう!'

encoded_text = text.encode('utf-8')
node = tagger.parseToNode(encoded_text) # 変数に入れる!
while node:
    print node.surface + '\t' + node.feature
    node = node.next


これを実行すると...

	BOS/EOS,*,*,*,*,*,*,*,*
MeCab	名詞,一般,*,*,*,*,*
で	助詞,格助詞,一般,*,*,*,で,デ,デ
遊ん	動詞,自立,*,*,五段・バ行,連用タ接続,遊ぶ,アソン,アソン
で	助詞,接続助詞,*,*,*,*,で,デ,デ
みよ	動詞,非自立,*,*,一段,未然ウ接続,みる,ミヨ,ミヨ
う	助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
!	記号,一般,*,*,*,*,!,!,!
	BOS/EOS,*,*,*,*,*,*,*,*

できたー。

PythonでMecabを使ってみる

PythonMeCabをインストールしてみます。

 

// mecab本体

$ wget http://mecab.googlecode.com/files/mecab-0.99.tar.gz

$ tar -xzf mecab-0.99.tar.gz

$ cd mecab-0.99

$ ./configure --with-charset=utf8

$ make && sudo make install

 

// mecab-ipadic

$ wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz/download

//$ tar -xzf mecab-ipadic-2.7.0-20070801.tar.gz

$ tar -xzf download

$ cd mecab-ipadic-2.7.0-20070801

$ ./configure --with-charset=utf8

$ make && sudo make install

 

// mecab-python

$ wget http://mecab.googlecode.com/files/mecab-python-0.993.tar.gz

$ tar -xzf mecab-python-0.993.tar.gz

$ cd mecab-python-0.993

$ python setup.py build

$ sudo python setup.py install

 

 

それでpython

import MeCab

を実行してみたのだけれども。。。エラー。

 

>>> import MeCab

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "MeCab.py", line 25, in <module>

    _MeCab = swig_import_helper()

  File "MeCab.py", line 17, in swig_import_helper

    import _MeCab

ImportError: libmecab.so.2: cannot open shared object file: No such file or directory

 

 

そこで、

vim /etc/ld.so.confを実行して

/usr/local/lib 

を追加する。

 

 ldconfig 

で更新して、

 

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import MeCab

>>> 

 

無事インストールできました。