Movatterモバイル変換


[0]ホーム

URL:


SN
Uploaded byShuyo Nakatani
PDF, PPTX11,399 views

どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013

Embed presentation

Download as PDF, PPTX
どの言語でつぶやかれたのか、機械が知る方法2013/11/28 WebDB Forum 2013中谷 秀洋@サイボウズ・ラボ@shuyo / id:n_shuyo
twitter の利用言語割合言語英語日本語スペイン語マレー語/インドネシア語アラビア語ポルトガル語トルコ語ロシア語フランス語フィリピン語(タガログ語)タイ語韓国語イタリア語フィンランド語オランダ語ドイツ語割合37.5%16.0%9.7%7.0%6.4%4.0%2.6%2.4%1.8%1.7%1.2%1.1%1.0%0.7%0.7%0.5%• ターゲットは日本語だけでいいの?– 残り 84% が対象外(自社調べ、2013/11 現在)6
本発表の方針• SNS (twitter や facebook) について– 多言語に渡るサービスや研究をしたいとき– 知ってて嬉しいテキスト表現の知見を紹介• 正書法が通じると思ったら大間違い!• 成果物やそのモデルについては最低限7
言語判定8
ある日こんなメールが• 読めない……9
困ったときの Google 先生• ポーランド語のスパムでした。10
そういえば迷惑メールフォルダに入ってた• でもなぜスパムだとわかったの?11
スパムフィルタ• 「スパムっぽい単語」があるとスパム確率up• フィルタは言語ごとに必要無料バイアグラオオアリクイ:freemastercard account:日本語用フィルタ英語用フィルタ※ベイジアンフィルタなどを利用したモデルの場合。他にルールベース(ホワイト&ブラックリスト)のアプローチなどもあります12
言語判定とは• 入力テキストの記述言語を推定– Time fries like arrow → 英語– Buona sera!→ イタリア語• 多くの言語処理での前提タスク– 言語モデルは言語ごとに構築– 検索、分類、抽出、翻訳、……• 言語判定を間違えると、後も全部こける!13
ニューステキストに対する言語判定(後述する langdetect による評価)afarbgbncsdadeelenesfafifrguhehihrhuiditjaknkomkml言語データ件数正解数(率)内訳言語mr マラーティー語アフリカーンス語200199 (99.50%) en=1, af=199アラビア語200200 (100.00%) ar=200ne ネパール語オランダ語ブルガリア語200200 (100.00%) bg=200nlno ノルウェー語ベンガル語200200 (100.00%) bn=200チェコ語200200 (100.00%) cs=200paパンジャーブ語plポーランド語デンマーク語200179 (89.50%) da=179, no=14, en=7ドイツ語200200 (100.00%) de=200ptポルトガル語ルーマニア語ギリシア語200200 (100.00%) el=200ro英語200200 (100.00%) en=200ruロシア語skスロバキア語スペイン語200200 (100.00%) es=200ペルシア語200200 (100.00%) fa=200so ソマリ語フィンランド語200200 (100.00%) fi=200 sqアルバニア語スウェーデン語フランス語200200 (100.00%) fr=200svグジャラート語200200 (100.00%) gu=200sw スワヒリ語taタミル語ヘブライ語200200 (100.00%) he=200テルグ語ヒンディー語200200 (100.00%) hi=200teクロアチア語200200 (100.00%) hr=200thタイ語tlタガログ語ハンガリー語200200 (100.00%) hu=200トルコ語インドネシア語200200 (100.00%) id=200 trイタリア語200200 (100.00%) it=200 uk ウクライナ語ウルドゥー語日本語200200 (100.00%) ja=200 urviベトナム語カンナダ語200200 (100.00%) kn=200zh-cn 中国語(簡体字)朝鮮語(韓国語)200200 (100.00%) ko=200zh-tw 中国語(繁体字)マケドニア語200200 (100.00%) mk=200マラヤーラム語200200 (100.00%) ml=200合計∞-gram を使った短文言語判定 (確率データ件数2002002002002002002002002002002002002002002002002002002002002002002002009800正解数(率)200 (100.00%)200 (100.00%)200 (100.00%)199 (99.50%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)200 (100.00%)9777 (99.77%)14mr=2ne=2nl=20da=1pa=2pl=20pt=2ro=2ru=2sk=2so=2sq=2sv=2sw=2ta=2te=2th=2tl=20tr=20uk=2ur=2vi=20zh-czh-t
言語判定は「単純なテキスト分類問題」• 十分長い&低ノイズなテキストに対し99%以上の精度 [Cavnar+ 94]– ナイーブベイズ+文字3-gram による簡易な実装だけでも 90% くらい出る• 言語判定はオワコン?– 研究的にはもしかしたらそうかも– でも実用面ではまだまだがんばらないと!15
ツイートを言語判定するとcacsdadeenesfifrhuiditnlnoplptrosvtrvi言語カタルーニャ語チェコ語デンマーク語ドイツ語英語スペイン語フィンランド語フランス語ハンガリー語インドネシア語イタリア語オランダ語ノルウェー語ポーランド語ポルトガル語ルーマニア語スウェーデン語トルコ語ベトナム語計LD95.396.394.586.688.391.598.995.085.889.796.269.596.098.088.092.896.097.698.792.2CLD93.096.690.796.897.490.599.494.589.092.893.893.274.997.888.696.196.497.498.993.8Tika83.8---58.773.154.744.494.867.476.2---87.165.068.688.847.482.675.6------70.0• 精度は 90~95%•LD = language-detection•CLD = Chromium CompactLanguage Detection– http://code.google.com/p/chromium-compact-language-detector/•Tika = Apache Tika– http://tika.apache.org/– 対応している15言語のみ評価16
twitter言語判定は難しい• テキスト長が短い– twitter は最大140字、多くは十数~数十字以下– 3-gram ではわずかな素性しか取り出せない– ★短文から豊富な素性を抽出できるモデルが必要• ノイズが多い– 正書法から外れた表現(省略語、短縮語、繰り返し)– 通常の言語モデルに当てはめると尤度が小さい– ★ノイズクリーニング&専用のコーパスが必要17
精度 90% もあれば十分?• 実用には厳しい– 10個に1個間違う– 95% でも、20個に1個間違う• 特に言語判定はがんばらないと– 様々な言語処理の前提タスク• 言語判定を間違えると、後も全部こける!– 精度99%は欲しい18
言語判定の成果19
モデルの話とか始めると長くなるのでざっくりと※モデルについては http://www.slideshare.net/shuyo/short-textlanguage-detection-with-infinitygram-12949447 などで解説しています20
language-detection(langdetect)(中谷 2010)• 言語判定 Java ライブラリ– http://code.google.com/p/language-detection/– オープンソース (Apache License 2.0)– 文字 3-gram + ベイジアンフィルタ– 各種正規化+特徴のサンプリング• 53言語について 99% 以上の精度で判定– 対象は新聞記事など「ある程度長く整った文章」– アジア圏の言語にも広く対応– Apache Solr など、多くの製品・研究に利用21
ldig プロトタイプ(Language Detection with Infinity-Gram)• ラテン文字ツイートの言語判定器– 19言語ツイートコーパスを作成し、学習• Python 実装– https://github.com/shuyo/ldig– オープンソース (MIT license)– 学習済みモデルも同 URL にて配布• ∞-gram 多クラスロジスティック回帰– 極大部分文字列[岡野原+ 08]– L1 SGD (Cumulative Penalty) [Tsuruoka+ 09]– Double Array22
ldigcpp• ldig の C++ 実装– https://github.com/shuyo/ldig/tree/cpp/ldigcpp• 公開準備中(ドキュメント未整備)– めざせ!脱プロトタイプ• ラテン文字以外も対応– 50言語ツイートコーパス(約 48万件)– その他、細かい改良23
コーパス作り(イメージ図)24
評価 on ldigcpp#code言語1ar アラビア語2 ar-bz Arabizi3 bg ブルガリア語4 bn ベンガル語5 ca カタルーニャ語6 cs チェコ語7 da デンマーク語8 de ドイツ語9 dv ディベヒ語10el ギリシャ語11 en 英語12 es スペイン語13et エストニア語14fa ペルシャ語15fiフィンランド語16frフランス語17 gu グルジア語18 he ヘブライ語19hi ヒンディー語20hr クロアチア語21 hu ハンガリー語22idインドネシア語23itイタリア語24ja日本語25 ko 韓国語訓練テスト9,9391,981192319,5401,8649,9931,8148,2021,24010,3151,93010,2511,90510,1301,8099781029,4421,88910,2692,03210,3712,0562,0675439,9041,9659,7022,0559,9272,0421,5471069,7051,9509,9561,8218,6241,9239,8111,9599,9031,97410,2831,9889,9161,9689,9061,976正解1,976231,8191,7911,2271,9161,8591,8021021,8881,9882,0165291,9562,0362,0101051,9501,8171,8801,9391,9511,9821,9671,974精度0.9970.7420.9760.9870.9900.9930.9760.9961.0000.9990.9780.9810.9740.9950.9910.9840.9911.0000.9980.9780.9900.9880.9970.9990.999# c ode26lt27lv28 mk29 ml30 mn31nl32 no33 pa34pl35pt36ro37ru38si39 sq40 sv41ta42te43th44tl45tr46 uk47ur48vi49 zh-cn50 zh-tw言語リトアニア語ラトヴィア語マケドニア語マラヤーラム語モンゴル語オランダ語ノルウェー語パンジャーブ語ポーランド語ポルトガル語ルーマニア語ロシア語シンハラ語アルバニア語スウェーデン語タミル語テルグ語タイ語タガログ語トルコ語ウクライナ語ウルドゥー語ベトナム語中国語(簡体字)中国語(繁体字)total訓練テス ト6,8551,0013,6511,1586,6541,3407,103996120289,8401,9649,6731,8961,55020110,1861,7229,3011,8939,5711,92410,1861,9534,1146712,4324219,4511,8539,9492,0841,7953038,9931,7619,9101,9549,6981,9289,9292,1689,0371,0039,8151,9489,7901,8409,8781,825400,354 76,758正解9941,1441,323996281,9391,8382011,7171,8691,9091,9376704141,8282,0843021,7611,9351,9182,0201,0031,9301,8161,81675,895精度0.9930.9880.9871.0001.0000.9870.9691.0000.9970.9870.9920.9920.9990.9830.9871.0000.9971.0000.9900.9950.9321.0000.9910.9870.9950.98925
ブカレスト市内の看板(Google Streat View より)SNS・チャット特有のテキスト表現26
キーワードは「易きに流れる」27
突然ですが問題です28
何語のつぶやきでしょうか?t9b7en 3la khair• ヒント– 実際のツイートです– 2億以上の話者がいるメジャーな言語です29
t9b7en 3la khairt 9 b 7 e n 3 l a kh ai rArabizi にしたがって変換‫ى ل ع ن ي ح ب ص ت‬アラビア文字は右から左に‫خ‬‫تصبحين على خير‬“Good night”‫ر ي‬アラビア語30
Arabizi (Arabic Chat Alphabet)• アラビア文字をアルファベット+数字で置き換え– http://en.wikipedia.org/wiki/Arabic_chat_alphabet(Wikipedia より)31
Arabizi は90年代に誕生• PC/スマホの普及にともない利用拡大– 入力だけではなく Arabizi で読み書きを• 「Arabizi はアラビア語を破壊しつつある」– 学生「Arabizi に慣れたらアラビア文字で書けなくなってきた。レポートなどを書くときは一度Arabizi で書いてからアラビア文字に変換」– http://www.arabnews.com/node/374897• 英単語混じりのアラビア語ツイートが!入力/記述コストの低い方へ低い方へ32
アクセントの省略• ascii アルファベット以外は入力しにくい– ラテン文字言語ほぼ全般で発生– スペイン語、クロアチア語、……• 例:リトアニア語 “eik is cia”– 正しくは “eik iš čia” (go from here)• 例:一人称単数代名詞の主格– チェコ語は “já”、スロバキア語は “ja”– アクセント記号を省略された日には……33
文字の代替• 入力しやすい別の文字で置き換え• 例:ドイツ語の “ß”– スイス以外でも “SS” に置き換えられる• 例:モンゴル語– キリル文字だがロシア語にない文字が2つある– そのうちの1つ “ү”(U+04af) を “v”(U+0076) で表す• 例:ルーマニア語– 正書法の定める “ș”, “ț” より “ş”, “ţ” が多く使われる• 例:ペルシャ語の ‫( ی‬U+06cc, Farsi yeh)– ‫( ي‬U+064a, Arabic yeh)が使われる34
Twitter での「笑い」• 綴りは言語によっていろいろ– HOW MUCH DO YOU LOVE COACH BEISTE???HHAHAHAHAHAH– Hihihihi. :) Habe ich regulär 2x die Woche!– Tafil con eso...!!! Jajajajajajaja– Malo?? Jejejeje XP– หน้ าพาไม่ซึ ้งเหรอ 5555555555555 กูติสต้ องเข้ าใจ• タイ語の 5 の読みは「ハー」(๕)– Ахаха )) ось чому я її ніколи не любила• でも基本は世界中で「(ア)ハハハ」でほぼ共通の音– 「(イ)ヒヒ」「(エ)ヘヘ」「カカカ」「ククク」なども– なぜか日本だけ「ちょwwwwwおまwwwwww」※ http://en.wikipedia.org/wiki/LOL に各国語の笑い表現がまとめられている 39
まとめ• 「易きに流れる」– SNS テキストが正書法の通りだと思ったら大間違い– これらの知識で正規化→単語共起などもより正確に• 実用化とは– ギリギリの精度を叩き出すためになんでもやる• 自動でやれることには限界がある– ライバルは自分?• 「先行研究」がない領域40
References• [中谷 NLP12]極大部分文字列を使った twitter 言語判定• [岡野原+ 08] 全ての部分文字列を考慮した文書分類• ニューエクスプレスシリーズ(白水社)– スウェーデン語、ノルウェー語、デンマーク語、ポーランド語、ハンガリー語、ルーマニア語、チェコ語、リトアニア語、スペイン語、カタルーニャ語、ベトナム語、トルコ語、ドイツ語、オランダ語、マレー語、セルビア語・クロアチア語、他• [Cavnar+ 94] N-Gram-Based Text Categorization• [Tsuruoka+ 09] Stochastic Gradient Descent Trainingfor L1-regularized Log-linear Models with CumulativePenalty41

Recommended

PDF
極大部分文字列を使った twitter 言語判定
PDF
∞-gram を使った短文言語判定
PDF
ソーシャルメディアの多言語判定 #SoC2014
PDF
人間言語判別 カタルーニャ語編
PDF
国際化時代の40カ国語言語判定
PDF
ナイーブベイズによる言語判定
PPTX
Jacet2014ykondo_final
PDF
RecSys 2015: Large-scale real-time product recommendation at Criteo
PDF
coordinate descent 法について
PDF
情報推薦システム入門:講義スライド
PDF
Latent factor models for Collaborative Filtering
PPTX
Deep forest
PDF
JP Chaosmap 2015-2016
PDF
Ensembles of example dependent cost-sensitive decision trees slides
PDF
機会学習ハッカソン:ランダムフォレスト
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
ドラえもんでわかる統計的因果推論 #TokyoR
PDF
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
PDF
星野「調査観察データの統計科学」第3章
PDF
星野「調査観察データの統計科学」第1&2章
PDF
言語処理するのに Python でいいの? #PyDataTokyo
PDF
Zipf? (ジップ則のひみつ?) #DSIRNLP
PDF
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
PDF
猫に教えてもらうルベーグ可測
PDF
アラビア語とペルシャ語の見分け方 #DSIRNLP 5

More Related Content

PDF
極大部分文字列を使った twitter 言語判定
PDF
∞-gram を使った短文言語判定
PDF
ソーシャルメディアの多言語判定 #SoC2014
PDF
人間言語判別 カタルーニャ語編
PDF
国際化時代の40カ国語言語判定
PDF
ナイーブベイズによる言語判定
PPTX
Jacet2014ykondo_final
PDF
RecSys 2015: Large-scale real-time product recommendation at Criteo
極大部分文字列を使った twitter 言語判定
∞-gram を使った短文言語判定
ソーシャルメディアの多言語判定 #SoC2014
人間言語判別 カタルーニャ語編
国際化時代の40カ国語言語判定
ナイーブベイズによる言語判定
Jacet2014ykondo_final
RecSys 2015: Large-scale real-time product recommendation at Criteo

Viewers also liked

PDF
coordinate descent 法について
PDF
情報推薦システム入門:講義スライド
PDF
Latent factor models for Collaborative Filtering
PPTX
Deep forest
PDF
JP Chaosmap 2015-2016
PDF
Ensembles of example dependent cost-sensitive decision trees slides
PDF
機会学習ハッカソン:ランダムフォレスト
coordinate descent 法について
情報推薦システム入門:講義スライド
Latent factor models for Collaborative Filtering
Deep forest
JP Chaosmap 2015-2016
Ensembles of example dependent cost-sensitive decision trees slides
機会学習ハッカソン:ランダムフォレスト

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
ドラえもんでわかる統計的因果推論 #TokyoR
PDF
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
PDF
星野「調査観察データの統計科学」第3章
PDF
星野「調査観察データの統計科学」第1&2章
PDF
言語処理するのに Python でいいの? #PyDataTokyo
PDF
Zipf? (ジップ則のひみつ?) #DSIRNLP
PDF
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
PDF
猫に教えてもらうルベーグ可測
PDF
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
PDF
Active Learning 入門
PDF
数式を綺麗にプログラミングするコツ #spro2013
PDF
ノンパラベイズ入門の入門
PDF
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
PDF
Short Text Language Detection with Infinity-Gram
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Generative adversarial networks
無限関係モデル (続・わかりやすいパターン認識 13章)
Memory Networks (End-to-End Memory Networks の Chainer 実装)
人工知能と機械学習の違いって?
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
ドラえもんでわかる統計的因果推論 #TokyoR
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第1&2章
言語処理するのに Python でいいの? #PyDataTokyo
Zipf? (ジップ則のひみつ?) #DSIRNLP
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
猫に教えてもらうルベーグ可測
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
Active Learning 入門
数式を綺麗にプログラミングするコツ #spro2013
ノンパラベイズ入門の入門
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
Short Text Language Detection with Infinity-Gram

どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013


[8]ページ先頭

©2009-2025 Movatter.jp