Upload
justsystems-corpration
View
516
Download
4
Embed Size (px)
Citation preview
JustTechTalk#02
形態素解析の実装⾔言語Talk パネルディスカッション
JustTechTalk#02
形態素解析の実装⾔言語Talk
• 自己紹介と作ったものの紹介
• お題に対してあれやこれや
※聞きたいことがある方は、随時発言OKです。 あるいは、 #justtechtalk でつぶやいてください
kuromoji.js株式会社はてな 浅野 卓也 @takuya_a
自己紹介2015 年 4 月 はてな入社
全文検索の精度改善など
!興味
情報検索 / 自然言語処理 / 機械学習
!JS で開発した OSS ライブラリ
Complete FST 文字列変換
Two-Layer Perceptron 機械学習
Double-Array 圧縮データ構造
kuromoji.js 形態素解析器
waifu2x.js 画像超解像 new!
kuromoji.js
ブラウザで動作 Chrome / Firefox / Safari / …
サーバサイドでも動く Node.js
インストールが簡単 $ npm install kuromoji
シンプルな API JSON オブジェクトが返る
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 のパッケージがブラウザでも使える
JavaScript のこれから
あらゆるものが Web につながる時代
スマートデバイス / IoT
!クライアントサイドもどんどんリッチに
スマートフォンの高性能化
SPA (Single Page Application)
Atwood's Law “JavaScript で書けるものは、いずれ JavaScript で書かれる”
@ikawahaPHPで組んだ文字列検索がどうやっても速くならないのに業を煮やしてgoをはじめる !go が書きたくて(?)転職 !パシフィックポーターという会社で美容室の予約をオンラインで一元管理するシステムを開発しています (もちろん go で!) !興味は 検索 / NLP
•pure go な形態素解析器 •kuromoji の検索モード相当の解析に対応 •辞書同梱 •スレッドセーフ •1 binary
命名はラティスが籠の目のように見えるとこから
kagome [籠目]
goってどんな言語?•文法がシンプル
•並行処理を言語としてサポート
•GC あります
•豊富なライブラリ
•コンパイル速い
いろいろありませんクラス,コンストラクタ ありません 型と構造体ががあります
例外,try-catch ありません 返値を複数返せます.error も一緒に返しましょう
while文,ありません for文あれば十分ですよね
継承,ありませんいちおう,埋め込みというのが出来ます.あんまり使わないけど
public, private というキーワードはありません 頭が大文字なら public, 小文字なら private でいいよね
ポインタ演算,ありません 危険ですよね
Setter, Getter の文化はありません 構造体のメンバーを直接書き換えましょう
ジェネリクス,もちろんありません いろいろ議論はあるみたいですが・・・
•パッケージをインストールする機構 go get github.com/ikawaha/kagome
•クロスコンパイル (mac で win のバイナリ作れます)
•コードフォーマッタ gofmt
•ドキュメンテーション godoc
•テスト&ベンチマーク go test
いろいろあります
Let’s go!
Pythonで形態素解析器 つくってみた
2015.07.03 JustTechTalk#02 形態素解析のあれやこれや
@moco_beta
自己紹介• @moco_beta
• http://mocobeta-backup.tumblr.com/
• 日曜 Python プログラマ(元・Web系 Python エンジニア)
• 興味があること: 情報検索
• (株)ロンウイット勤務: OSS 検索エンジン Lucene/Solr の導入支援とかトレーニングとかサポートとかやってます
!
• 自然言語処理・機械学習ワナビー🐣
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)!
...!すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ!
も 助詞,係助詞,*,*,*,*,も,モ,モ!
もも 名詞,一般,*,*,*,*,もも,モモ,モモ!
も 助詞,係助詞,*,*,*,*,も,モ,モ!
もも 名詞,一般,*,*,*,*,もも,モモ,モモ!
の 助詞,連体化,*,*,*,*,の,ノ,ノ!
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
janome とは• 2015/4/8 v0.1 公開
• 最新 0.2.5
• Python 2.7 / 3.4 対応
きっかけ
無茶振られた 「持つべきものは友」
Python で作って良かったこと• 標準ライブラリが充実
• 標準で車輪が揃っているので、依存ライブラリの選定で悩むことがあまりない
• 3系だと文字列とバイト配列の扱いがとても楽
• Windows ユーザーに喜んでもらえた
• Windows に MeCab 入れるの大変(らしい)
Python で作って大変だったこと
• 2 系のサポート
• Python 2系と3系の互換性がない / まだまだ 2 系が現役
• 最初は 3 系だけサポートのつもりだったけど、 2 系への対応要望は高かった
• パフォーマンス
• (Pure) Python でメモリ/CPU効率の良いコードを書くにはスキルと工夫が必要
• …と作ってみてから実感
• もうちょっと実装がんばります(まだ最適化の余地はあるはず)
��73������������.8��68������������� ��������������������
��,573��-1*4�02)+ '!#�!"%��/�68&("$�
��
��� ��
������������������������ ����������
�����,_a,�����3\Z�
������� SB]JIC,8:<?6;UP2XV[L^Y3OG4DR���(&#&�0��
������� �0A@6=������1WK�
������ _a.>7-9�
������ NQ`/5,� ���%���FD�
������ �����AA-:�MHTE��&#����&��''������� �)�%�+)�()��������� **'���*�"+ ���!* +��!&�$������
ここからディスカッションのお時間です
お題
なぜその言語で形態素解析器を開発しようと 思ったのですか?
その他、気に入ってるところなど
お題
その言語で実装する上で 苦労したことは?
お題
その言語を使って開発するとき、 必ずセットで使うものは?
• エディタとか • IDEのプラグインとか • 欠かせないライブラリとか
お題
他の3人の使用言語を それぞれ1カ所ずつdisってください!
ありがとうございました!