No science, No life.

もっと科学を身近に

テキストデータを単語に分割して品詞などを判別する形態素解析

テキストデータ (文章) をパソコンで分析する場合、英語だと単語同士のあいだにスペースがあるので、どれが単語か見分けるのは簡単です。でも日本語の場合はスペースがないので、そう簡単にはいきません。

テキストデータを、言語的に意味を持つ最小の単位に分割して、品詞などを判別する作業を形態素解析というそうです。これをおこなってくれるオープンソースMeCab というソフトウェアがあったので、インストールしてみました。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer

インストールして起動するとウィンドウがあらわれるので、テキストを入力してみましょう。「すもももももももものうち」を正しく認識して分析してくれます。すごい。

f:id:neocortex:20160806225700p:plain

でも平仮名だらけのテキストはやはり難しいようで、「何だか分かるか若旦那」はきちんと分解してくれますが、「なんだかわかるかわかだんな」は最後の「だんな」が1文字ずつにばらされてしまいました。

f:id:neocortex:20160806230137p:plain

ちなみに、「なんだか…」は始めから読んでも終わりから読んでも読みが同じ回文になっています (意味はないです…)。

入門 自然言語処理

入門 自然言語処理

MatlabでWebコンテンツを読み込む

Matlabでウェブページを読み込んで情報を自動抽出できたりしたら楽しそう!、ということで少しずつやってみます。

ウェブページのソースを読み込むのはめちゃくちゃ簡単で、webreadという関数で1行でできます。ためしに東京都の公式ページを読みこんでみます。

data = webread('http://www.metro.tokyo.jp/index.htm')

こんなふうに、ずらずらっとソースが表示されればオーケーです。

f:id:neocortex:20160803003404p:plain

HTMLタグが邪魔だというときには、正規表現を使うと、タグを消して本文だけを取り出すことができます (ここのコードを拝借しました)。

pat = '<[^>]*>'; 
data2 = regexprep(data, pat, '')

そうすると、ウェブページの本文がこんなふうに表示されます。ニュースサイトなどであれば、ここから頻出単語を抜き出して記事を特徴づける、というようなこともすぐに出来そうです。次回からもうちょっと遊んでみます。

f:id:neocortex:20160803004131p:plain

Matlab Home

Matlabは簡単で高機能なプログラミング言語ですが、なにぶん高価なのが玉に瑕。ただし、個人が趣味などに使う用途で、商用や研究用途でなければ、下のページからMatlab Homeという安価なライセンスを購入できます。Matlab本体が¥14,900、ツールボックスがひとつ¥4,490です。

MATLAB Home R2016a 新規ライセンス

MATLABプログラミング入門

MATLABプログラミング入門

Arduinoでフィジカルコンピューティング

Arduinoは、電子工作を遊んで学ぶにはぴったりの装置です。Wikipedia によると

Arduino(アルドゥイーノ[1])は、AVRマイコン、入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。

ということなのですが、実際に手にとって使ってみないと、どういうものかピンとこないかもしれません。3,000~5,000円ぐらいなので、興味があればひとまず買ってから考えるというのもアリかも。

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

おおまかな流れとしては、PCでコードを書いて、USBで接続したArduino本体にコードを書き込みます。コードを書き込んだ後はPCに接続しておく必要はなく、ACアダプタや乾電池で動作させることもできます。Arduinoの基盤にはあれこれ入出力ポート (ピン) があって、これの動作を書き込んだコードで制御するわけです。ピンの電圧 (HIGH/LOW) を変えていろんな装置を駆動したり、逆に、各種センサーからの入力をピンにかかっている電圧として読み取ることができます。実際に使ってみると、(単純な回路なら) 驚くほど簡単に、そして楽しく実装できます。

Arduinoには互換機がたくさんあり、たとえばLilyPad Arduinoは導電糸(!)で服などに縫い付けてウェアラブルな仕掛けを作れます。この、自転車用の方向指示器つきのパーカーとか製品化されたら間違いなく買います…。

leah buechley - LilyPad Arduino - build - turn signal jacket

あと、紅白歌合戦でのPerfumeの演出にも使われたり、頑張ればプロフェッショナルな使い方もできます。奥が深い。

第63回NHK紅白歌合戦 | Daito Manabe

Web上で電子工作を学ぶAutodesk Electronics Lab

電子工作を学びたい/学ばせたい、でもお金をかけたくない、手軽で安全に学びたい。そんなときにはAutodesk Circuits Electronics Labが良いかもしれません。

The easiest way to learn electronics and Arduino programming | Autodesk Circuits

ブラウザ上で、ブレッドボード・電源・LED・抵抗・コンデンサ、そのほか様々な部品を配置して、動作をシミュレーションすることができます。それと、Arduinoというマイコンも使えて、自分が書いたコードでうまく回路を制御できるかを試せます。しかも無料。すごい。


123D Circuits Electronics Lab

上のYoutube動画では、実世界の電気回路を正確にシミュレーションしますと言っているけれど、LEDに電流を流しすぎて焦げる (最近実際にやってしまったのです…)、というのはさすがにシミュレーションしてくれませんでした。

無料・インストール不要でいろんなプログラミング言語を試せるWebサービス

プログラミング言語はたくさんあります。どれかを学ぶにしても一体どれが良いだろうと迷いがち。インストールしてみて、「この言語とっつきにくい、アンインストールしよう」というのを繰り返すのは避けたい。そんなときに役に立つかもしれないのが無料・インストール不要でいろんな言語を試せるWebサービス

repl.it

すごい数の言語に対応しています。アカウントを作らなくても、使いたい言語を選んでクリックするだけですぐに使える。キーボードショートカット (Ctrl + Enterで実行とか) まであって使い勝手もすばらしい。ただし、Pythonについてはライブラリに対応していないようでimport numpyでエラーがでます。

対応言語一覧
QBasic, Forth, LOLCODE, BrainF, Emoticon, Bloop, Unlambda, JavaScript, JavaScript (Web), ES2015, CoffeeScript, Kaffeine, Move, Scheme, APL, Lua, Python, Ruby, Roy, PHP, Python3, Nodejs, Go, Java, C++, C++11, C, C#, F#, HTML, CSS, JS, Rust, Swift
f:id:neocortex:20160626223908p:plain

repl.it

PythonAnywhere

ライブラリに対応したPython専用サービス。ただ、ちょっと動作がもっさりしているような。アカウントを作らなくても使えます。

f:id:neocortex:20160626223920p:plain

www.pythonanywhere.com

Python導入

プログラミング言語。仕事ではMatlabを使っていますが、高価なので使っているPCすべてに入れるというわけにはいきません。無料で手軽そうな言語、ということでPythonを勉強してみることに。

Anacondaをダウンロード (そこそこ時間がかかった) してインストールすると、良くつかうライブラリやSpyderという開発環境も一緒についてきて便利です。
www.continuum.io

大事なのは、Anacondaをインストールする場合は本家のPythonは入れる必要はないということ (Anacondaに含まれている)。自分はこれに気付かず2回インストール作業をしていた…。
www.python.org

Spyderの見た目はこんな感じ。軽快に動いてよい感じです。
f:id:neocortex:20160626004203p:plain

はてなブログは「はてな記法」を使うと、ソースコードを色づけして表示できて便利です。勉強の過程を書いていきたいと思います。

def hello():
    print("Hello World")

hello()