More Related Content
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ PPTX
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料) PDF
PDF
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022 PPTX
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive PDF
PDF
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~ What's hot
PDF
PDF
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術 PDF
強いて言えば「集約どう実装するのかな、を考える」な話 PDF
「指標」を支えるエンジニアリング: DataOpsNight #1 PDF
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計 PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話 PDF
Apache Airflow 概要(Airflowの基礎を学ぶハンズオンワークショップ 発表資料) PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug PPTX
DeNA TechCon2019 How to implement live streaming client using Unity PDF
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料) PDF
継承やめろマジやめろ。 なぜイケないのか 解説する PPTX
仮想脳「NeuroAI」の裏側 & 企画発表(NTTデータ テクノロジーカンファレンス 2020 発表資料) PDF
PDF
ヤフー発のメッセージキュー「Pulsar」のご紹介 PDF
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope... PDF
PPTX
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein PDF
PDF
Similar to 言語処理するのに Python でいいの? #PyDataTokyo
PDF
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発 PDF
PDF
PDF
PDF
PDF
第三回さくさくテキストマイニング勉強会 入門セッション PDF
PDF
PFIセミナー 2013/02/28 「プログラミング言語の今」 PPTX
PDF
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」) PDF
Pycon jp2017 20170908_ota PDF
Pycon jp2017 20170908_ota PDF
Pycon jp2017 20170908_ota PDF
Pycon jp2017 20170908_ota PPT
PDF
Python & PyConJP 2014 Report PPTX
PDF
PDF
More from Shuyo Nakatani
PDF
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15 PDF
Generative adversarial networks PDF
無限関係モデル (続・わかりやすいパターン認識 13章) PDF
Memory Networks (End-to-End Memory Networks の Chainer 実装) PDF
PDF
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR PDF
PDF
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl... PDF
PDF
PDF
Zipf? (ジップ則のひみつ?) #DSIRNLP PDF
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh... PDF
PDF
PDF
アラビア語とペルシャ語の見分け方 #DSIRNLP 5 PDF
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013 PDF
PDF
数式を綺麗にプログラミングするコツ #spro2013 PDF
PDF
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri... 言語処理するのに Python でいいの? #PyDataTokyo
- 1.
- 2.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
多すぎるし!
• Python
– Numpy/ Scipy
– Scikit-learn
– Theano
– Caffe
– NLTK
• C++
– Octava / Eigen
– Vowpal Wabbit
• Java
– Mahout
– Spark MLlib
– Weka
– Stanford CoreNLP
• .NET
– Accord.NET
• Lua
– Torch
• Jubatus
• OpenCV
• AzureML
• Amazon ML
• R
• MATLAB
• ……
• …………
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
langdetect (language-detection)
[中谷 2010]
•言語判定 Java ライブラリ
– 新聞記事などの長く整った文章向け
– 文字 3-gram + ベイジアンフィルタ
– http://code.google.com/p/language-detection/
• 詳細:
– Language Detection Library for Java
– http://www.slideshare.net/shuyo/language-detection-library-for-java
- 25.
ldig (Language Detectionwith Infinity-Gram)
[中谷 NLP2012]
• twitter などの短文用の言語判定器
– 短文用の判別モデル
– ツイートコーパスを独自に作成
• 実装
– https://github.com/shuyo/ldig (Python)
– https://github.com/shuyo/ldig/tree/cpp/ldigcpp
(C++)
• 詳細:
– Short Text Language Detection with Infinity-Gram
– http://www.slideshare.net/shuyo/short-text-language-detection-with-infinitygram-
12949447
- 26.
- 27.
- 28.
- 29.
- 30.
langdetect プロトタイプ
• Rubyで実装
– 速度は遅く、行列ライブラリもない(当時)
– テキスト処理が得意な、慣れた言語
• ものが動くまでの時間が短い
• テスト
– 16言語の判定に92%
• 特徴設計、クリーニング等を全くしていない
– 望む精度が出せる見込みが立った
- 31.
langdetect プロダクト
• Javaで実装
– Apache Solr に組み込みたい(環境要件!)
• オープンソースの Java 製検索エンジン
– 53言語 99.8% の精度
• ライブラリをオープンソースで公開
– Solr の言語判定器として同梱
– Hadoop への組み込みで普及
- 32.
twitter でやってみた!
• 精度92% まで落ちる
– 3-gram では素性が足りなかった?
• ∞-gram ロジスティック回帰[岡野原+ 08]
– 任意の長さの部分文字列を素性に
• これを使えばできるかもしれない?
– プロトタイプで確認してみよう
- 33.
ldig プロトタイプ
• Pythonで実装
– 高次元ベクトルの計算
• Ruby ではツライ
– 予想:クリーニングで激しく試行錯誤するだろう
• (予想通り)
– 一部分だけ C++
• 素性(極大部分文字列)の抽出は重すぎる
• 岡野原さんの C++ ライブラリを使う
- 34.
Trie / DoubleArray
•前方一致する文字列を探索するアルゴリズム
– 膨大かつ長さ不定の素性の探索に利用
• 当初、dict で素朴に Trie を実装
– 10MB のコーパス食わせたらメモリオーバー
• 「高速」かつ省メモリな DoubleArray に
– メモリはギリギリ足りたが、速度は劇遅に
• pure Python コードが増えた
– 学習にまる1日かかる
• DoubleArray が処理全体の3~7割を占める
- 35.
ldig プロトタイプ2
• C++で実装
– より大規模なコーパスを食わせたい
– メモリをきちんと使えばもっといける
• 問題:C++の文字列は言語処理に適さない
– 1「キャラクタ」=1バイト≠1文字
– wchar ってのもあるが、いろいろ面倒
- 36.
- 37.
おまけ:Cython
• Python コードを静的にコンパイル
–うまくいけば、少ない労力で高速化
– ldig の場合、DoubleArray が 3~9倍速、全体では
学習が2割up、推定が倍速に
• Python コードの時点で最適化したものはあまり
速くならない
– class メンバの型に制限があったり
– 中途半端に型指定すると逆に遅くなることも
• 試してみるのはアリ
– メモリ管理事情は変わらないので、問題がそっちにある
なら C/C++ に行かないと解決しない
- 38.