Pythonで自然言語処理を行うための環境構築メモ

自然言語処理を学びたくなったので、評判高いオライリーの入門自然言語処理に”チャレンジ”してみました。

O'Reilly Japan - 入門 自然言語処理

2010年11月発行ということでソフトウェアのバージョンが上がったり、環境構築の説明が親切でなかったので(書籍では最新の状況に対応し続けるのは大変なので仕方がない)、2015年8月時点でのソフトウェア・ライブラリの構築についてスクリーンショット付きでメモします。誰かの参考になれば。

ちなみにプログラミング初心者と中級者の間ですので、お手柔らかに。

「入門自然言語処理」の2ページから7ページに対応しています。

我が環境はWindows7の64ビットです。Windows10の64ビットでも同じようにできることを確認済みです。

1.Pythonのインストール

 あとでインストールするNLTKというパッケージが64ビットに対応していないので、pythonは32ビットをダウンロードします。pythonはバージョン2と3があって、互換性はありません。本書では2系の文法で解説されているので、2系の最新バージョンである2.7.10をダウンロードします。

www.python.org

こちらから、2.x.xの最新バージョンに進んで・・・(執筆時点での最新は2.7.10)

 

f:id:mokkso:20150816171400p:plain

 

 Windows x86 MSI Installerをダウンロードして、実行します。nextボタンを押し続ければ大丈夫です。インストール先はCドライブ直下、C:\Python27が良いでしょう。

インストールされたかの確認は、スタートメニュー→アクセサリと進んで、コマンドプロンプトを起動し、pythonと入力してみます。

f:id:mokkso:20150816171943p:plain

 こんな画面になれば大丈夫。ダメなら環境変数を設定します。

環境変数の設定は以下のサイトが詳しいです。ディレクトリのpython34をpython27に読みかえればよいでしょう。

www.pythonweb.jp

2.自然言語処理のためのパッケージのインストール

NumPy、MatplotLib、NLTKという3つのパッケージ(追加機能)をPythonにインストールします。

2.1.NumPyのインストール

pipというコマンドを使えばラクラクなんですが、NumPyだけはpipでインストールできなかったので、手動でします。

sourceforge.net

こちらから、NumPyの最新バージョンをインストールします。自分がインストールしたのは1.9.2です。

f:id:mokkso:20150816173012p:plain

最新バージョンのフォルダに飛び、"numpy-1.9.2-win32-superpack-python2.7.exe"をダウンロード、実行します。32ビットをダウンロードするのに注意。次へボタンを押し続ければ大丈夫です。

2.2.Matplotlibのインストール

残りの2つはとてもカンタンです。pipというコマンドを使います。pip様は、Numpyの時のようにwebにアクセス→最新バージョンを探す→自分の環境にあったものを選ぶ→ダウンロード→インストール を一度にやってくれます。

まずはNLTKをインストールします。

先ほどのように、スタートメニュー→アクセス と進んで、コマンドプロンプトを起動します。そして、「C:\Users\自分のユーザー名>」と表示されている後ろに「pip install -U nltk」と入力して、Enterを押します。これだけ。

f:id:mokkso:20150816174200p:plain

あらカンタン。この調子でMatplotlibもインストールします。

2.3.NLTKのインストール

同じようにコマンドに「pip install matplotlib」と入力し、Enterを押します。

NLTKとmatplotlibをインストールすると以下の画面になっているかと思います。

f:id:mokkso:20150816173824p:plain

これで必要なパッケージのインストールは終了です。あとは本に書いてあるとおり、3ページから進めることができます。

3.確認

スタートメニュー→Python2.7からIDLE(PythonGUI)を起動し、「import nltk」と入力してみます。

何もエラーが無かったら、処理するためのサンプルデータをダウンロードします。続きに「nltk.download()」と入力し、出てきたウィンドウから、「book」を選択し、Downloadボタンを押します。

終わったら、「from nltk.book import *」と入力するとNLTKに入っている文章データがロードされるはずです。

NumpyとMatplotlibを組み合わせて、語彙の分散プロットを生成するコマンドが紹介されています。「text4.dispersion_plot(["citizens", "democracy", "freedom", "duties", "America"])」と入力すると、アメリカ合衆国大統領の就任演説の語彙の分散プロットが出てきます。

詳細は書籍を参照してくださいまし。

さあああがんばって自然言語処理やるおおおおお

 

心理学論文を読むときの道標(フォーマット)

論文の読み方についてのブログ記事に多くのブクマがついていたので、自分がよく読む心理学の論文だと、どの情報を拾いながら読んでいるだろうと内省してみました。

 

lafrenze.hatenablog.com

 

以下は実験を行っている心理学の論文を読むときに、最低限必ず把握しておくべきことについての覚え書きです。たまにアップデートします。こうやって言語化しておくことで、難解な英語の論文でも平常心でできればいいなと思います。

我が師曰く

  • なにが知りたくて
  • なにをして
  • なにを操作して
  • その結果どうなったのか

ですが、もうちょっと詳しく一般的な論文の形に沿うように肉付けしました。

特に難解な英語論文を読んでいる時も最低限これだけの情報を集めようとすれば、なんとなくでも分かるようになるはずですし、このフォーマットで整理すれば論文メモも捗るんじゃないでしょうか。

「どれが重要か?」と考えながら読むより、「これだけ拾えばおk」という感じで、内容理解するためにより多くの認知リソースを割くことができればいいと思います。

 

イントロ

  • 先行研究
  • 先行研究の問題
  • この研究が克服する先行研究の問題点
  • 論文での上記問題点の克服の仕方

実験

  • イントロを受けての目的(2回目以降の実験では前回実験を受けての改良点)手続き(どんな機械を使って、どの段階でどのデータを取るか)
  • 操作する方法(設定した群、要因は被験者間か被験者内か)
  • 分析するデータとそのデータが示すもの
  • 仮説
  • 分析方法・分析結果
  • 考察(どの結果を見て何を言っているか)

総合考察

  • 結果から言えること
  • この実験の問題点
  • さらなる研究の示唆

 

 

 

どうしてブログを作ってしまったのか。動機と方向性のおぼえがき(自分用)

どうして金にもならないブログなんて始めてしまったのか。

利己的な理由利他的な理由にわけるとすっきり説明できそうな気がします。

利己的な理由としては、文章力向上と頭の整理です。

インプットはアウトプットを意識することで強化されるというのははてブでも定期的に話題になることです。

勉強した内容を噛み砕いて、自分の言葉にしてアウトプットすることの大切さ。
私はこのブログを始めてから、その効果を実感しています。
勉強のアウトプットの場として、ブログは本当にオススメです!
ブログは、単純なアウトプットじゃないんです。
「他人を意識したアウトプット」になるんです。


自分にしか理解できないようなアウトプットじゃ、意味ないです。

俺が語学を教えるときに一番力をいれるのは作文。 語学はついインプットばかり... - 酔っぱらってひとりごと - 真人 - はてなハイク

俺が語学を教えるときに一番力をいれるのは作文。
語学はついインプットばかりやっちゃうけどアウトプットも同じくらいやらないといけない。

【勉強法】『現役東大生がこっそりやっている、頭がよくなる勉強法』清水章弘:マインドマップ的読書感想文

比率でいうなら、インプット3対アウトプット7ぐらいの感覚でいいと思います。

 過去のブクマついた記事を紹介するだけのエントリになってしまいそうですが、アウトプットを意識したインプットが大事だということは実感としてもあります。

 

そして、利他的理由のほうは、他のみなさんと同じく「知識をシェアしたい」ということ。

あるプログラムを作りたいって思った時に参考になるweb記事がなかった。そんな経験がありました。その時は本や英語記事で何とかしたのですが、同じことで苦労する人が自分の記事を見て参考にしていただければ喜びです。

現に自分も何度も何度もブロガーのみなさんの記事に助けられなんとかなってきましたから。まだブログになっていないネタを提供できればと思う。

 

そんなわけで、ブログについて考えておきたい6つのテーマ

「だれが」「どうして」「いつ」「どこで」「なにを」「どのように」ブログを書くか

は最初2つを書くことでだいたい書けちゃいました。

いつ:最低でも1年週2回は

どこで:はてなブログで(ゆくゆくはWordPressのお勉強もしたい)

なにを:自分の体験・試行錯誤のプロセスと結果を

どのように:読んだ人が参考にできるようにわかりやすく

 

ブログを書きまぁす

ブログは実名にすべきか匿名がいいのか

何事も初めが肝心

というので、なぜブログを作ってしまったかを整理してみます。

情強への道はGoogleを開くことからはじまります。

「ブログ はじめ方」

Google先生に尋ねると、LIGさんの記事を教えてくれました。これに沿って考えてみます。


個人ブログのはじめ方〜運営にあたって改めて考えておきたい6つのテーマ〜 | 株式会社LIG 

考えておきたい6つのテーマとは、 

「だれが」「どうして」「いつ」「どこで」「なにを」「どのように」ブログを書くか

だそうです。この分類でつらつらと調べて思ったことを書きます。

 

記念すべき初回記事は「だれが」だけになりました。

だれがブログを書くのか

もちろん自分(id:mokkso)です。一緒にブログやるような友達はいません。

そして、id:mokkso とは誰なのか。実名は晒すべきか。これもGoogle先生に聞いてみました。


あなたのブログは実名? 匿名? 考えさせられる5つのエントリーと、このブログの方針 - Fラン建築学生の妄想

 実名でブログ運営するメリットは

  • SNSからの誘導
  • 「自分の名前」に対するブランド力向上。就活や仕事につながるかも
  • 自分の発言に責任をもつようになり、自分の勉強と成長につながる
  • 実社会での肩書で権威付けできる
  • 検索上位に上がりやすい

初期段階でアクセスを集めるために、自分のSNSと連動させるのは有効そうです。フリーランスのように自分の名前で仕事している人にとって名前は看板。お仕事の紹介や自分のスキルPRに役立つことでしょう。

株式会社◯◯社長とか、外資系有名コンサル企業出身者のブログとか、なんだかんだ言って、みなさんありがたく読んでます。付いてるはてブの数を見れば分かります。

 

逆にデメリットとして

  •  実名を気にして馬鹿なこと書けない
  • 炎上したら大変

うっかり変なコト書いて炎上したらさあ大変。自分の名前で検索したら、半永久的に黒歴史が残ります。「忘れられる権利」がメジャーになるまでに寿命を迎えてしまうでしょう。

ところで、ちきりんさんのように匿名でも自らの文章力だけで超有名人になってしまう方もおられます。(ちきりん氏の本名はネット上の公然の秘密ですが)

旬をちょっと過ぎ、投資回収フェーズに移行しているちきりん氏をはじめ、古くは耐震偽装問題の情報リークで一躍有名になったきっこの日記のように、実名メリットを使わずしてアクセスを集めるには内容一本勝負となります。

匿名ブログは内容のみで評価が決まる、厳しくて公平な世界ということですね。

 

このブログも当面は匿名ということで内容を磨いていくことにします。どちらかと言えば、自分の頭の整理と文章力向上のためで、評価とかAdSense収入は狙っていません。もちろん、貰えるなら欲しいですが、AdSense入れるならはてなブログProにしないといけないとか。このへんも調べなきゃ。

 

オリジナルな締めの言葉も欲しいですね。「そんじゃーね!」の破壊力は抜群ですがパクリは気が引けます。暫定版として「チャオ!」