形態素解析の実装言語talk パネルディスカッション

29
JustTechTalk#02 形態素解析の実装語Talk パネルディスカッション

Upload: justsystems-corpration

Post on 18-Aug-2015

516 views

Category:

Engineering


4 download

TRANSCRIPT

Page 1: 形態素解析の実装言語Talk パネルディスカッション

JustTechTalk#02

形態素解析の実装⾔言語Talk  パネルディスカッション

Page 2: 形態素解析の実装言語Talk パネルディスカッション

JustTechTalk#02

形態素解析の実装⾔言語Talk

• 自己紹介と作ったものの紹介

• お題に対してあれやこれや

※聞きたいことがある方は、随時発言OKです。  あるいは、 #justtechtalk でつぶやいてください

Page 3: 形態素解析の実装言語Talk パネルディスカッション

kuromoji.js株式会社はてな 浅野 卓也 @takuya_a

Page 4: 形態素解析の実装言語Talk パネルディスカッション

自己紹介2015 年 4 月 はてな入社

全文検索の精度改善など

!興味

情報検索 / 自然言語処理 / 機械学習

!JS で開発した OSS ライブラリ

Complete FST 文字列変換

Two-Layer Perceptron 機械学習

Double-Array 圧縮データ構造

kuromoji.js 形態素解析器

waifu2x.js 画像超解像 new!

Page 5: 形態素解析の実装言語Talk パネルディスカッション

kuromoji.js

ブラウザで動作 Chrome / Firefox / Safari / …

サーバサイドでも動く Node.js

インストールが簡単 $ npm install kuromoji

シンプルな API JSON オブジェクトが返る

Page 6: 形態素解析の実装言語Talk パネルディスカッション

Why JavaScript ?

そこにブラウザがあるからだ プリインストールされた世界共通のプラットフォーム

PC / Mac / iOS / Android の壁を越える

"Write once, run anywhere"

!Typed Arrays サポート Chrome 7.0- FF 4.0- IE 10- Safari 5.1-

いわゆるバイト配列(型付き)

高速 / 高効率なデータ構造を構築できる

kuromoji.js の生命線

!Browserify の登場によりモジュール化が一気に加速

Node.js でもブラウザでもどちらでも動くライブラリが書ける

npm: Node.js のパッケージがブラウザでも使える

Page 7: 形態素解析の実装言語Talk パネルディスカッション

JavaScript のこれから

あらゆるものが Web につながる時代

スマートデバイス / IoT

!クライアントサイドもどんどんリッチに

スマートフォンの高性能化

SPA (Single Page Application)

Atwood's Law “JavaScript で書けるものは、いずれ JavaScript で書かれる”

Page 8: 形態素解析の実装言語Talk パネルディスカッション

@ikawahaPHPで組んだ文字列検索がどうやっても速くならないのに業を煮やしてgoをはじめる !go が書きたくて(?)転職 !パシフィックポーターという会社で美容室の予約をオンラインで一元管理するシステムを開発しています (もちろん go で!) !興味は 検索 / NLP

Page 9: 形態素解析の実装言語Talk パネルディスカッション

•pure go な形態素解析器 •kuromoji の検索モード相当の解析に対応 •辞書同梱 •スレッドセーフ •1 binary

命名はラティスが籠の目のように見えるとこから

kagome [籠目]

Page 10: 形態素解析の実装言語Talk パネルディスカッション

goってどんな言語?•文法がシンプル

•並行処理を言語としてサポート

•GC あります

•豊富なライブラリ

•コンパイル速い

Page 11: 形態素解析の実装言語Talk パネルディスカッション

いろいろありませんクラス,コンストラクタ ありません 型と構造体ががあります

例外,try-catch ありません 返値を複数返せます.error も一緒に返しましょう

while文,ありません for文あれば十分ですよね

継承,ありませんいちおう,埋め込みというのが出来ます.あんまり使わないけど

public, private というキーワードはありません 頭が大文字なら public, 小文字なら private でいいよね

ポインタ演算,ありません 危険ですよね

Setter, Getter の文化はありません 構造体のメンバーを直接書き換えましょう

ジェネリクス,もちろんありません いろいろ議論はあるみたいですが・・・

Page 12: 形態素解析の実装言語Talk パネルディスカッション

•パッケージをインストールする機構 go get github.com/ikawaha/kagome

•クロスコンパイル (mac で win のバイナリ作れます)

•コードフォーマッタ gofmt

•ドキュメンテーション godoc

•テスト&ベンチマーク go test

いろいろあります

Page 13: 形態素解析の実装言語Talk パネルディスカッション

Let’s go!

Page 14: 形態素解析の実装言語Talk パネルディスカッション

Pythonで形態素解析器 つくってみた

2015.07.03 JustTechTalk#02 形態素解析のあれやこれや

@moco_beta

Page 15: 形態素解析の実装言語Talk パネルディスカッション

自己紹介• @moco_beta

• http://mocobeta-backup.tumblr.com/

• 日曜 Python プログラマ(元・Web系 Python エンジニア)

• 興味があること: 情報検索

• (株)ロンウイット勤務: OSS 検索エンジン Lucene/Solr の導入支援とかトレーニングとかサポートとかやってます

!

• 自然言語処理・機械学習ワナビー🐣

Page 16: 形態素解析の実装言語Talk パネルディスカッション

janome  とは• http://mocobeta.github.io/janome/

• “janome (蛇の目) は, Pure Python で書かれた, 辞書内包の形態素解析器です.”(venv) $ pip install janome!(venv) $ python!>>> from janome.tokenizer import Tokenizer!>>> t = Tokenizer()!>>> for token in t.tokenize('すもももももももものうち'):!

... print(token)!

...!すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ!

も 助詞,係助詞,*,*,*,*,も,モ,モ!

もも 名詞,一般,*,*,*,*,もも,モモ,モモ!

も 助詞,係助詞,*,*,*,*,も,モ,モ!

もも 名詞,一般,*,*,*,*,もも,モモ,モモ!

の 助詞,連体化,*,*,*,*,の,ノ,ノ!

うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

Page 17: 形態素解析の実装言語Talk パネルディスカッション

janome  とは• 2015/4/8 v0.1 公開

• 最新 0.2.5

• Python 2.7 / 3.4 対応

Page 18: 形態素解析の実装言語Talk パネルディスカッション

きっかけ

無茶振られた 「持つべきものは友」

Page 19: 形態素解析の実装言語Talk パネルディスカッション

Python  で作って良かったこと• 標準ライブラリが充実

• 標準で車輪が揃っているので、依存ライブラリの選定で悩むことがあまりない

• 3系だと文字列とバイト配列の扱いがとても楽

• Windows ユーザーに喜んでもらえた

• Windows に MeCab 入れるの大変(らしい)

Page 20: 形態素解析の実装言語Talk パネルディスカッション

Python  で作って大変だったこと

• 2 系のサポート

• Python 2系と3系の互換性がない / まだまだ 2 系が現役

• 最初は 3 系だけサポートのつもりだったけど、 2 系への対応要望は高かった

• パフォーマンス

• (Pure) Python でメモリ/CPU効率の良いコードを書くにはスキルと工夫が必要

• …と作ってみてから実感

• もうちょっと実装がんばります(まだ最適化の余地はあるはず)

Page 21: 形態素解析の実装言語Talk パネルディスカッション

��73������������.8��68������������� ��������������������

��,573��-1*4�02)+ '!#�!"%��/�68&("$�

��

Page 22: 形態素解析の実装言語Talk パネルディスカッション

��� ��

������������������������ ����������

Page 23: 形態素解析の実装言語Talk パネルディスカッション

�����,_a,�����3\Z�

������� SB]JIC,8:<?6;UP2XV[L^Y3OG4DR���(&#&�0��

������� �0A@6=������1WK�

������ _a.>7-9�

������ NQ`/5,� ���%���FD�

������ �����AA-:�MHTE��&#����&��''������� �)�%�+)�()��������� **'���*�"+ ���!* +��!&�$������

Page 24: 形態素解析の実装言語Talk パネルディスカッション

ここからディスカッションのお時間です

Page 25: 形態素解析の実装言語Talk パネルディスカッション

お題

なぜその言語で形態素解析器を開発しようと 思ったのですか?

その他、気に入ってるところなど

Page 26: 形態素解析の実装言語Talk パネルディスカッション

お題

その言語で実装する上で 苦労したことは?

Page 27: 形態素解析の実装言語Talk パネルディスカッション

お題

その言語を使って開発するとき、 必ずセットで使うものは?

• エディタとか • IDEのプラグインとか • 欠かせないライブラリとか

Page 28: 形態素解析の実装言語Talk パネルディスカッション

お題

他の3人の使用言語を それぞれ1カ所ずつdisってください!

Page 29: 形態素解析の実装言語Talk パネルディスカッション

ありがとうございました!