SlideShare a Scribd company logo
1 of 40
Download to read offline
ソーシャルメディアの多言語判定
2014/6/21 SoC2014
中谷 秀洋
サイボウズ・ラボ株式会社
サイボウズの紹介
2
サイボウズ株式会社
• 企業内外のコラボレーションを促進するソフト
ウェアを提供、そのための技術開発を行う
– サイボウズ Office / ガルーン
• 企業内グループウェア
– サイボウズ Live
• 企業間・個人向けグループウェア
– kintone
• Web画面でアプリ開発できる SaaS プラットフォーム
– cybozu.com
• 自社クラウドサービス
自社クラウドを支える技術
• yrmcds
– レプリケーション機能と サーバーサイドロック機能
を持つ memcached 互換な KVS
– 2条項 BSD ライセンスで公開
– http://cybozu.github.io/yrmcds/
4
レプリケーション機能を用いた
無停止アップグレード
自社クラウドを支える技術
• WalB
– 任意のファイルシステムをオンラインバックアップ可能に
する Linux のログ先行書き込みブロックデバイスドライバ
– GPL v2/v3 ライセンスで公開
– https://github.com/starpos/walb/
5
WalB のアーキテクチャ
はじめに
6
twitter の利用言語割合
• ツイートを使った研究・
サービスをしたい
– ターゲットは日本語
だけでいい?
– 残り 84% が対象外
7
(自社調べ、2013/11 現在)
言語 割合
英語 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%
本発表の内容
• 言語判定
– テキストが書かれた言語を推定する技術と
開発したライブラリの紹介
• 多言語のテキスト表現に関する知見
– 言語判定を通じて得たもの
– 多言語に渡るサービスや研究にあたって知っ
てて嬉しい
• 正書法が通じると思ったら大間違い!
8
言語判定
9
ある日こんなメールが
10
• 読めない……
困ったときの Google 先生
• ポーランド語のスパムでした。
11
そういえば
迷惑メールフォルダに入っていた
12
• でもなぜスパムだとわかったのだろう?
スパムフィルタ
• 「スパムっぽい単語」→スパム確率up(※
• フィルタは言語ごとに必要
– 英語のスパムを判定するには、
まず英語であることを知らなければならない
13
無料
バイアグラ
オオアリクイ
:
free
mastercard account
:
英語用フィルタ日本語用フィルタ
※ベイジアンフィルタなどを利用したモデルの場合。
他にルールベース(ホワイト&ブラックリスト)のアプローチなどもあります
言語判定とは
• 入力テキストの記述言語を推定
– Time fries like arrow → 英語
– Buona sera! → イタリア語
• 多くの言語処理での前提タスク
– 言語モデルは言語ごとに構築されるため
– 検索、分類、抽出、翻訳、……
• もともとグループウェアの検索機能に言語の絞り
込みを付加するために開発した
14
ニューステキストに対する言語判定
(後述する langdetect による評価)
15
言語 データ件数 正解数(率) 内訳
af アフリカーンス語 200 199 (99.50%) en=1, af=199
ar アラビア語 200 200 (100.00%) ar=200
bg ブルガリア語 200 200 (100.00%) bg=200
bn ベンガル語 200 200 (100.00%) bn=200
cs チェコ語 200 200 (100.00%) cs=200
da デンマーク語 200 179 (89.50%) da=179, no=14, en=7
de ドイツ語 200 200 (100.00%) de=200
el ギリシア語 200 200 (100.00%) el=200
en 英語 200 200 (100.00%) en=200
es スペイン語 200 200 (100.00%) es=200
fa ペルシア語 200 200 (100.00%) fa=200
fi フィンランド語 200 200 (100.00%) fi=200
fr フランス語 200 200 (100.00%) fr=200
gu グジャラート語 200 200 (100.00%) gu=200
he ヘブライ語 200 200 (100.00%) he=200
hi ヒンディー語 200 200 (100.00%) hi=200
hr クロアチア語 200 200 (100.00%) hr=200
hu ハンガリー語 200 200 (100.00%) hu=200
id インドネシア語 200 200 (100.00%) id=200
it イタリア語 200 200 (100.00%) it=200
ja 日本語 200 200 (100.00%) ja=200
kn カンナダ語 200 200 (100.00%) kn=200
ko 朝鮮語(韓国語) 200 200 (100.00%) ko=200
mk マケドニア語 200 200 (100.00%) mk=200
ml マラヤーラム語 200 200 (100.00%) ml=200
言語 データ件数 正解数(率)
mr マラーティー語 200 200 (100.00%) mr=2
ne ネパール語 200 200 (100.00%) ne=2
nl オランダ語 200 200 (100.00%) nl=20
no ノルウェー語 200 199 (99.50%) da=1
pa パンジャーブ語 200 200 (100.00%) pa=2
pl ポーランド語 200 200 (100.00%) pl=20
pt ポルトガル語 200 200 (100.00%) pt=2
ro ルーマニア語 200 200 (100.00%) ro=2
ru ロシア語 200 200 (100.00%) ru=2
sk スロバキア語 200 200 (100.00%) sk=2
so ソマリ語 200 200 (100.00%) so=2
sq アルバニア語 200 200 (100.00%) sq=2
sv スウェーデン語 200 200 (100.00%) sv=2
sw スワヒリ語 200 200 (100.00%) sw=2
ta タミル語 200 200 (100.00%) ta=2
te テルグ語 200 200 (100.00%) te=2
th タイ語 200 200 (100.00%) th=2
tl タガログ語 200 200 (100.00%) tl=20
tr トルコ語 200 200 (100.00%) tr=20
uk ウクライナ語 200 200 (100.00%) uk=2
ur ウルドゥー語 200 200 (100.00%) ur=2
vi ベトナム語 200 200 (100.00%) vi=20
zh-cn 中国語(簡体字) 200 200 (100.00%) zh-c
zh-tw 中国語(繁体字) 200 200 (100.00%) zh-t
合計 9800 9777 (99.77%)
言語判定は「単純なテキスト分類問題」
• 十分長い&低ノイズなテキストに対し
99%以上の精度 [Cavnar+ 94]
– 簡易な実装でも十分高い精度が出る
• 言語判定はオワコン?
– 研究的にはもしかしたらそうかも
– でも実用面ではまだまだ課題多し!
16
ツイートを言語判定すると
• 精度は 90~95%
– 10~20件に1つ間
違い
• LD = language-detection
• CLD = Chromium Compact
Language Detection
– http://code.google.com/p/chromiu
m-compact-language-detector/
• Tika = Apache Tika
– http://tika.apache.org/
– 対応している15言語のみ評価
言語 LD CLD Tika
ca カタルーニャ語 95.3 93.0 83.8
cs チェコ語 96.3 96.6 ----
da デンマーク語 94.5 90.7 58.7
de ドイツ語 86.6 96.8 73.1
en 英語 88.3 97.4 54.7
es スペイン語 91.5 90.5 44.4
fi フィンランド語 98.9 99.4 94.8
fr フランス語 95.0 94.5 67.4
hu ハンガリー語 85.8 89.0 76.2
id インドネシア語 89.7 92.8 ----
it イタリア語 96.2 93.8 87.1
nl オランダ語 69.5 93.2 65.0
no ノルウェー語 96.0 74.9 68.6
pl ポーランド語 98.0 97.8 88.8
pt ポルトガル語 88.0 88.6 47.4
ro ルーマニア語 92.8 96.1 82.6
sv スウェーデン語 96.0 96.4 75.6
tr トルコ語 97.6 97.4 ----
vi ベトナム語 98.7 98.9 ----
計 92.2 93.8 70.0
17
精度 90% もあれば十分?
• 実用には厳しい
– 10個に1個間違い
– 95% でも、20個に1個間違い
• 多くの言語処理の前提タスク
– 言語判定を間違えると、後も全部失敗!
– 例:ポーランド語スパムに英語フィルタを使う
• 言語判定は高い精度が求められる
– 少なくとも精度 99%は欲しい
18
SNS/チャット 言語判定の難しさ
• テキスト長が短い
– twitter は最大140字、多くは十数~数十字以下
– 3-gram ではわずかな素性しか取り出せない
– ★短文から豊富な素性を抽出できるモデルが必要
• ノイズが多い
– 正書法から外れた表現(省略語、短縮語、繰り返し)
– 通常の言語モデルに当てはめると尤度が小さい
– ★ノイズクリーニング&専用のコーパスが必要
19
言語判定ソフトウェア
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)
[中谷 NLP2012]
• ラテン文字ツイートの言語判定器
– 19言語ツイートコーパスを作成し、学習
• Python 実装
– https://github.com/shuyo/ldig
– 学習済みモデルも配布
• C++ 実装
– https://github.com/shuyo/ldig/tree/cpp/ldigcpp
• ドキュメント未整備
– ラテン文字言語以外にも対応
– 50言語ツイートコーパスを作成し、学習
22
twitter 言語判定のモデル
• 極大部分文字列を使ったロジスティック回帰
[岡野原+ 08]
– 全ての部分文字列を特徴量とする(∞-gram)
– ツイートのような短い文字列でも、
n-gram より多くの特徴量が得られる
– 詳細は http://www.slideshare.net/shuyo/short-text-
language-detection-with-infinitygram-12949447 等を参照
23via http://d.hatena.ne.jp/nokuno/20120203/1328237067
コーパス
• twitter 特有の表現が多い
– 専用のコーパスが必要だが、十分な量が無い
– 自分で作るしか
• ツイート収集
– twitter Streaming API の sample メソッド
(約200万件/日)
• ツイートに言語ラベルを振る
– 50言語 約30万件
24
コーパス作り(イメージ図)
25
50言語のツイートを
約 99% の精度で判定
26
# code 言語 訓練 テスト 正解 精度
1 ar アラビア語 9,939 1,981 1,976 0.997
2 ar-bz Arabizi 192 31 23 0.742
3 bg ブルガリア語 9,540 1,864 1,819 0.976
4 bn ベンガル語 9,993 1,814 1,791 0.987
5 ca カタルーニャ語 8,202 1,240 1,227 0.990
6 cs チェコ語 10,315 1,930 1,916 0.993
7 da デンマーク語 10,251 1,905 1,859 0.976
8 de ドイツ語 10,130 1,809 1,802 0.996
9 dv ディベヒ語 978 102 102 1.000
10 el ギリシャ語 9,442 1,889 1,888 0.999
11 en 英語 10,269 2,032 1,988 0.978
12 es スペイン語 10,371 2,056 2,016 0.981
13 et エストニア語 2,067 543 529 0.974
14 fa ペルシャ語 9,904 1,965 1,956 0.995
15 fi フィンランド語 9,702 2,055 2,036 0.991
16 fr フランス語 9,927 2,042 2,010 0.984
17 gu グルジア語 1,547 106 105 0.991
18 he ヘブライ語 9,705 1,950 1,950 1.000
19 hi ヒンディー語 9,956 1,821 1,817 0.998
20 hr クロアチア語 8,624 1,923 1,880 0.978
21 hu ハンガリー語 9,811 1,959 1,939 0.990
22 id インドネシア語 9,903 1,974 1,951 0.988
23 it イタリア語 10,283 1,988 1,982 0.997
24 ja 日本語 9,916 1,968 1,967 0.999
25 ko 韓国語 9,906 1,976 1,974 0.999
# code 言語 訓練 テスト 正解 精度
26 lt リトアニア語 6,855 1,001 994 0.993
27 lv ラトヴィア語 3,651 1,158 1,144 0.988
28 mk マケドニア語 6,654 1,340 1,323 0.987
29 ml マラヤーラム語 7,103 996 996 1.000
30 mn モンゴル語 120 28 28 1.000
31 nl オランダ語 9,840 1,964 1,939 0.987
32 no ノルウェー語 9,673 1,896 1,838 0.969
33 pa パンジャーブ語 1,550 201 201 1.000
34 pl ポーランド語 10,186 1,722 1,717 0.997
35 pt ポルトガル語 9,301 1,893 1,869 0.987
36 ro ルーマニア語 9,571 1,924 1,909 0.992
37 ru ロシア語 10,186 1,953 1,937 0.992
38 si シンハラ語 4,114 671 670 0.999
39 sq アルバニア語 2,432 421 414 0.983
40 sv スウェーデン語 9,451 1,853 1,828 0.987
41 ta タミル語 9,949 2,084 2,084 1.000
42 te テルグ語 1,795 303 302 0.997
43 th タイ語 8,993 1,761 1,761 1.000
44 tl タガログ語 9,910 1,954 1,935 0.990
45 tr トルコ語 9,698 1,928 1,918 0.995
46 uk ウクライナ語 9,929 2,168 2,020 0.932
47 ur ウルドゥー語 9,037 1,003 1,003 1.000
48 vi ベトナム語 9,815 1,948 1,930 0.991
49 zh-cn 中国語(簡体字) 9,790 1,840 1,816 0.987
50 zh-tw 中国語(繁体字) 9,878 1,825 1,816 0.995
total 400,354 76,758 75,895 0.989
SNS・チャット特有のテキスト表現
27
ブカレスト市内の看板(Google Streat View より)
何語のつぶやきでしょうか?
• ヒント
– 実際のツイートです
– 2億以上の話者がいるメジャーな言語です
28
t9b7en 3la khair
29
t9b7en 3la khair
t 9 b 7 e n 3 l a kh ai r
‫ت‬ ‫ص‬ ‫ب‬ ‫ح‬ ‫ي‬ ‫ن‬ ‫ع‬ ‫ل‬ ‫ى‬ ‫خ‬ ‫ي‬ ‫ر‬
‫خير‬ ‫على‬ ‫تصبحين‬
“Good night”
アラビア語
アラビア文字
は右から左に
Arabizi にしたがって変換
Arabizi (Arabic Chat Alphabet)
• アラビア文字をアルファベット+数字で置き換え
– http://en.wikipedia.org/wiki/Arabic_chat_alphabet
30
(Wikipedia より)
Arabizi は90年代に誕生
• PC/スマホの普及にともない利用拡大
– 入力だけではなく Arabizi で読み書きを
• 「Arabizi はアラビア語を破壊しつつある」
– 学生「Arabizi に慣れたらアラビア文字で書けな
くなってきた。レポートなどを書くときは一度
Arabizi で書いてからアラビア文字に変換」
– http://www.arabnews.com/node/374897
• 英単語混じりのアラビア語ツイートが!
31
入力/記述コストの低い方へ
チェコ語 / スロバキア語
• 系統上 非常に近い兄弟言語
– 話者同士の意思疎通が可能
• ニューステキストなどの判別は容易(ほぼ
100% の精度)
– チェコ語でのみ使う文字 : ĚŘŮ
– スロバキア語でのみ使う文字 : ÄĹĽÔŔ
– 異なる機能語も少なくない
• 例:代名詞の一人称単数主格形
• チェコ語は “já”、スロバキア語は “ja”
32
アクセントの省略
• 入力しにくい記号付きアルファベット
– ÁÉÍÓÚÜ(スペイン語)、ÇĞİÖŞÜ(トルコ語)、…
– ツイートではアクセントのない文字で代用が
• チェコ語/スロバキア語の一人称
– “já” / “ja” → どちらも “ja” に
– 言語判別が非常に難しい(80%台まで下がる)
• 他の例: “eik iš čia” (リトアニア語: go from here)
– “eik is cia” となり、他の言語に判定される
33
その他の文字の代替 (1)
• ドイツ語
– “ß” : エスツェット、スイス-ドイツ語では
“ss” を使う
– 入力しにくいため、ドイツでも “ss” に
• ルーマニア語
– 正書法の定める “ș”, “ț” より “ş”, “ţ” を多用
– OS などによるサポートが遅かったため、
ネットに限らず印刷物や看板などでも代用率
が高い
34
ブカレストまで行って探してきた
(Google Street View で)
• 街中の看板にも代用字(セディーユ付き)が使われている 35
その他の文字の代替 (2)
• ペルシャ語
– ‫ی‬ (U+06cc, Farsi yeh) の代わりに ‫(ي‬U+064a, Arabic
yeh)が使われる
– これも文字コード由来のため、SNS以外でも新聞など多く
のメディアで発生している
• モンゴル語
– 本来はモンゴル文字(縦書き)だが、キリル文字が広く使わ
れる(ネットでは特に)
– ロシア語のキリル文字とほぼ共通だが、 2つの独自文字の
うち “ү”(U+04af) が “v”(U+0076) で置き換えられる
36
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」
37※ http://en.wikipedia.org/wiki/LOL に各国語の笑い表現がまとめられている
文字を重ねる表現の取り扱い
• coooooooollllll、たっっっっぷり のように強調の
ために同じ文字を重ねる表現
• 対策案1: [Brody+ 2011] で正規化辞書を作る
– cooooooooollllllll => cool
– 辞書にない単語に対応できない
• 対策案2: 3文字以上の連続を2文字に縮める
– 正書法の範囲で、同じラテン文字が3字以上続く言語
はない
• 例外:略語( WWW, СССР )
• 日本語だと「かたたたき」とか「かわいいいぬ」とかある
38
まとめ
• SNS のテキストは正書法に従わない
– 入力コストの低い方へ流れる
• 言語判定でのみ必要な知識? いいえ!
– これらの知識で正規化すれば単語共起、
トピック分類なども良い結果になるかも?
• 実用的な精度 ≠ 研究に求められる精度
– 「先行研究の精度を上回る」という目標がない
– 必要な精度を出すためなら何でもする
• 例:30万件のツイートに言語ラベルをふる
39
References
• [中谷 NLP12]極大部分文字列を使った twitter 言語判定
• [岡野原+ 08] 全ての部分文字列を考慮した文書分類
• ニューエクスプレスシリーズ(白水社)
– スウェーデン語、ノルウェー語、デンマーク語、ポーランド語、ハン
ガリー語、ルーマニア語、チェコ語、リトアニア語、スペイン語、カ
タルーニャ語、ベトナム語、トルコ語、ドイツ語、オランダ語、マ
レー語、セルビア語・クロアチア語、他
• [Cavnar+ 94] N-Gram-Based Text Categorization
• [Brody+ 11] Cooooooooooooooollllllllllllll!!!!!!!!!!!!!! Using
Word Lengthening to Detect Sentiment in Microblogs
40

More Related Content

Viewers also liked

ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
Shuyo Nakatani
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
 
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
Insight Technology, Inc.
 
20140618 google earthの最前線
20140618 google earthの最前線20140618 google earthの最前線
20140618 google earthの最前線
Taichi Furuhashi
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
Yuya Unno
 
Language Detection Library for Java
Language Detection Library for Java Language Detection Library for Java
Language Detection Library for Java
Shuyo Nakatani
 
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
Shuyo Nakatani
 
Short Text Language Detection with Infinity-Gram
Short Text Language Detection with Infinity-GramShort Text Language Detection with Infinity-Gram
Short Text Language Detection with Infinity-Gram
Shuyo Nakatani
 
猫に教えてもらうルベーグ可測
猫に教えてもらうルベーグ可測猫に教えてもらうルベーグ可測
猫に教えてもらうルベーグ可測
Shuyo Nakatani
 
優れたデザインの 定義と思考方法
優れたデザインの 定義と思考方法優れたデザインの 定義と思考方法
優れたデザインの 定義と思考方法
Junichi Izumi
 

Viewers also liked (20)

ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
 
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
[D23] SQL Server 2014 リリース記念!~Hekaton, カラムストアを試して、さらにギンギンに速くしてみました!~by Daisuk...
 
20140618 google earthの最前線
20140618 google earthの最前線20140618 google earthの最前線
20140618 google earthの最前線
 
階層ディリクレ過程事前分布モデルによる画像領域分割
階層ディリクレ過程事前分布モデルによる画像領域分割階層ディリクレ過程事前分布モデルによる画像領域分割
階層ディリクレ過程事前分布モデルによる画像領域分割
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
 
バラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげようバラバラの同僚を社内勉強会でつなげよう
バラバラの同僚を社内勉強会でつなげよう
 
UXデザインとコンセプト評価 ~俺様企画はだめなのよ
UXデザインとコンセプト評価~俺様企画はだめなのよUXデザインとコンセプト評価~俺様企画はだめなのよ
UXデザインとコンセプト評価 ~俺様企画はだめなのよ
 
Language Detection Library for Java
Language Detection Library for Java Language Detection Library for Java
Language Detection Library for Java
 
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
[Karger+ NIPS11] Iterative Learning for Reliable Crowdsourcing Systems
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
Zipf? (ジップ則のひみつ?) #DSIRNLP
Zipf? (ジップ則のひみつ?) #DSIRNLPZipf? (ジップ則のひみつ?) #DSIRNLP
Zipf? (ジップ則のひみつ?) #DSIRNLP
 
Short Text Language Detection with Infinity-Gram
Short Text Language Detection with Infinity-GramShort Text Language Detection with Infinity-Gram
Short Text Language Detection with Infinity-Gram
 
猫に教えてもらうルベーグ可測
猫に教えてもらうルベーグ可測猫に教えてもらうルベーグ可測
猫に教えてもらうルベーグ可測
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoRRとStanでクラウドセットアップ時間を分析してみたら #TokyoR
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
 
ドラえもんでわかる統計的因果推論 #TokyoR
ドラえもんでわかる統計的因果推論 #TokyoRドラえもんでわかる統計的因果推論 #TokyoR
ドラえもんでわかる統計的因果推論 #TokyoR
 
優れたデザインの 定義と思考方法
優れたデザインの 定義と思考方法優れたデザインの 定義と思考方法
優れたデザインの 定義と思考方法
 

More from Shuyo Nakatani

Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani
 
数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
 
Extreme Extraction - Machine Reading in a Week
Extreme Extraction - Machine Reading in a WeekExtreme Extraction - Machine Reading in a Week
Extreme Extraction - Machine Reading in a Week
Shuyo Nakatani
 

More from Shuyo Nakatani (13)

画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
無限関係モデル (続・わかりやすいパターン認識 13章)
無限関係モデル (続・わかりやすいパターン認識 13章)無限関係モデル (続・わかりやすいパターン認識 13章)
無限関係モデル (続・わかりやすいパターン認識 13章)
 
Memory Networks (End-to-End Memory Networks の Chainer 実装)
Memory Networks (End-to-End Memory Networks の Chainer 実装)Memory Networks (End-to-End Memory Networks の Chainer 実装)
Memory Networks (End-to-End Memory Networks の Chainer 実装)
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
 
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
アラビア語とペルシャ語の見分け方 #DSIRNLP 5アラビア語とペルシャ語の見分け方 #DSIRNLP 5
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013
 
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
[Kim+ ICML2012] Dirichlet Process with Mixed Random Measures : A Nonparametri...
 
Extreme Extraction - Machine Reading in a Week
Extreme Extraction - Machine Reading in a WeekExtreme Extraction - Machine Reading in a Week
Extreme Extraction - Machine Reading in a Week
 
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011
 
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 

ソーシャルメディアの多言語判定 #SoC2014

  • 3. サイボウズ株式会社 • 企業内外のコラボレーションを促進するソフト ウェアを提供、そのための技術開発を行う – サイボウズ Office / ガルーン • 企業内グループウェア – サイボウズ Live • 企業間・個人向けグループウェア – kintone • Web画面でアプリ開発できる SaaS プラットフォーム – cybozu.com • 自社クラウドサービス
  • 4. 自社クラウドを支える技術 • yrmcds – レプリケーション機能と サーバーサイドロック機能 を持つ memcached 互換な KVS – 2条項 BSD ライセンスで公開 – http://cybozu.github.io/yrmcds/ 4 レプリケーション機能を用いた 無停止アップグレード
  • 5. 自社クラウドを支える技術 • WalB – 任意のファイルシステムをオンラインバックアップ可能に する Linux のログ先行書き込みブロックデバイスドライバ – GPL v2/v3 ライセンスで公開 – https://github.com/starpos/walb/ 5 WalB のアーキテクチャ
  • 7. twitter の利用言語割合 • ツイートを使った研究・ サービスをしたい – ターゲットは日本語 だけでいい? – 残り 84% が対象外 7 (自社調べ、2013/11 現在) 言語 割合 英語 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%
  • 8. 本発表の内容 • 言語判定 – テキストが書かれた言語を推定する技術と 開発したライブラリの紹介 • 多言語のテキスト表現に関する知見 – 言語判定を通じて得たもの – 多言語に渡るサービスや研究にあたって知っ てて嬉しい • 正書法が通じると思ったら大間違い! 8
  • 11. 困ったときの Google 先生 • ポーランド語のスパムでした。 11
  • 13. スパムフィルタ • 「スパムっぽい単語」→スパム確率up(※ • フィルタは言語ごとに必要 – 英語のスパムを判定するには、 まず英語であることを知らなければならない 13 無料 バイアグラ オオアリクイ : free mastercard account : 英語用フィルタ日本語用フィルタ ※ベイジアンフィルタなどを利用したモデルの場合。 他にルールベース(ホワイト&ブラックリスト)のアプローチなどもあります
  • 14. 言語判定とは • 入力テキストの記述言語を推定 – Time fries like arrow → 英語 – Buona sera! → イタリア語 • 多くの言語処理での前提タスク – 言語モデルは言語ごとに構築されるため – 検索、分類、抽出、翻訳、…… • もともとグループウェアの検索機能に言語の絞り 込みを付加するために開発した 14
  • 15. ニューステキストに対する言語判定 (後述する langdetect による評価) 15 言語 データ件数 正解数(率) 内訳 af アフリカーンス語 200 199 (99.50%) en=1, af=199 ar アラビア語 200 200 (100.00%) ar=200 bg ブルガリア語 200 200 (100.00%) bg=200 bn ベンガル語 200 200 (100.00%) bn=200 cs チェコ語 200 200 (100.00%) cs=200 da デンマーク語 200 179 (89.50%) da=179, no=14, en=7 de ドイツ語 200 200 (100.00%) de=200 el ギリシア語 200 200 (100.00%) el=200 en 英語 200 200 (100.00%) en=200 es スペイン語 200 200 (100.00%) es=200 fa ペルシア語 200 200 (100.00%) fa=200 fi フィンランド語 200 200 (100.00%) fi=200 fr フランス語 200 200 (100.00%) fr=200 gu グジャラート語 200 200 (100.00%) gu=200 he ヘブライ語 200 200 (100.00%) he=200 hi ヒンディー語 200 200 (100.00%) hi=200 hr クロアチア語 200 200 (100.00%) hr=200 hu ハンガリー語 200 200 (100.00%) hu=200 id インドネシア語 200 200 (100.00%) id=200 it イタリア語 200 200 (100.00%) it=200 ja 日本語 200 200 (100.00%) ja=200 kn カンナダ語 200 200 (100.00%) kn=200 ko 朝鮮語(韓国語) 200 200 (100.00%) ko=200 mk マケドニア語 200 200 (100.00%) mk=200 ml マラヤーラム語 200 200 (100.00%) ml=200 言語 データ件数 正解数(率) mr マラーティー語 200 200 (100.00%) mr=2 ne ネパール語 200 200 (100.00%) ne=2 nl オランダ語 200 200 (100.00%) nl=20 no ノルウェー語 200 199 (99.50%) da=1 pa パンジャーブ語 200 200 (100.00%) pa=2 pl ポーランド語 200 200 (100.00%) pl=20 pt ポルトガル語 200 200 (100.00%) pt=2 ro ルーマニア語 200 200 (100.00%) ro=2 ru ロシア語 200 200 (100.00%) ru=2 sk スロバキア語 200 200 (100.00%) sk=2 so ソマリ語 200 200 (100.00%) so=2 sq アルバニア語 200 200 (100.00%) sq=2 sv スウェーデン語 200 200 (100.00%) sv=2 sw スワヒリ語 200 200 (100.00%) sw=2 ta タミル語 200 200 (100.00%) ta=2 te テルグ語 200 200 (100.00%) te=2 th タイ語 200 200 (100.00%) th=2 tl タガログ語 200 200 (100.00%) tl=20 tr トルコ語 200 200 (100.00%) tr=20 uk ウクライナ語 200 200 (100.00%) uk=2 ur ウルドゥー語 200 200 (100.00%) ur=2 vi ベトナム語 200 200 (100.00%) vi=20 zh-cn 中国語(簡体字) 200 200 (100.00%) zh-c zh-tw 中国語(繁体字) 200 200 (100.00%) zh-t 合計 9800 9777 (99.77%)
  • 16. 言語判定は「単純なテキスト分類問題」 • 十分長い&低ノイズなテキストに対し 99%以上の精度 [Cavnar+ 94] – 簡易な実装でも十分高い精度が出る • 言語判定はオワコン? – 研究的にはもしかしたらそうかも – でも実用面ではまだまだ課題多し! 16
  • 17. ツイートを言語判定すると • 精度は 90~95% – 10~20件に1つ間 違い • LD = language-detection • CLD = Chromium Compact Language Detection – http://code.google.com/p/chromiu m-compact-language-detector/ • Tika = Apache Tika – http://tika.apache.org/ – 対応している15言語のみ評価 言語 LD CLD Tika ca カタルーニャ語 95.3 93.0 83.8 cs チェコ語 96.3 96.6 ---- da デンマーク語 94.5 90.7 58.7 de ドイツ語 86.6 96.8 73.1 en 英語 88.3 97.4 54.7 es スペイン語 91.5 90.5 44.4 fi フィンランド語 98.9 99.4 94.8 fr フランス語 95.0 94.5 67.4 hu ハンガリー語 85.8 89.0 76.2 id インドネシア語 89.7 92.8 ---- it イタリア語 96.2 93.8 87.1 nl オランダ語 69.5 93.2 65.0 no ノルウェー語 96.0 74.9 68.6 pl ポーランド語 98.0 97.8 88.8 pt ポルトガル語 88.0 88.6 47.4 ro ルーマニア語 92.8 96.1 82.6 sv スウェーデン語 96.0 96.4 75.6 tr トルコ語 97.6 97.4 ---- vi ベトナム語 98.7 98.9 ---- 計 92.2 93.8 70.0 17
  • 18. 精度 90% もあれば十分? • 実用には厳しい – 10個に1個間違い – 95% でも、20個に1個間違い • 多くの言語処理の前提タスク – 言語判定を間違えると、後も全部失敗! – 例:ポーランド語スパムに英語フィルタを使う • 言語判定は高い精度が求められる – 少なくとも精度 99%は欲しい 18
  • 19. SNS/チャット 言語判定の難しさ • テキスト長が短い – twitter は最大140字、多くは十数~数十字以下 – 3-gram ではわずかな素性しか取り出せない – ★短文から豊富な素性を抽出できるモデルが必要 • ノイズが多い – 正書法から外れた表現(省略語、短縮語、繰り返し) – 通常の言語モデルに当てはめると尤度が小さい – ★ノイズクリーニング&専用のコーパスが必要 19
  • 21. language-detection(langdetect) [中谷 2010] • 言語判定 Java ライブラリ – http://code.google.com/p/language-detection/ – オープンソース (Apache License 2.0) – 文字 3-gram + ベイジアンフィルタ – 各種正規化+特徴のサンプリング • 53言語について 99% 以上の精度で判定 – 対象は新聞記事など「ある程度長く整った文章」 – アジア圏の言語にも広く対応 – Apache Solr など、多くの製品・研究に利用 21
  • 22. ldig (Language Detection with Infinity-Gram) [中谷 NLP2012] • ラテン文字ツイートの言語判定器 – 19言語ツイートコーパスを作成し、学習 • Python 実装 – https://github.com/shuyo/ldig – 学習済みモデルも配布 • C++ 実装 – https://github.com/shuyo/ldig/tree/cpp/ldigcpp • ドキュメント未整備 – ラテン文字言語以外にも対応 – 50言語ツイートコーパスを作成し、学習 22
  • 23. twitter 言語判定のモデル • 極大部分文字列を使ったロジスティック回帰 [岡野原+ 08] – 全ての部分文字列を特徴量とする(∞-gram) – ツイートのような短い文字列でも、 n-gram より多くの特徴量が得られる – 詳細は http://www.slideshare.net/shuyo/short-text- language-detection-with-infinitygram-12949447 等を参照 23via http://d.hatena.ne.jp/nokuno/20120203/1328237067
  • 24. コーパス • twitter 特有の表現が多い – 専用のコーパスが必要だが、十分な量が無い – 自分で作るしか • ツイート収集 – twitter Streaming API の sample メソッド (約200万件/日) • ツイートに言語ラベルを振る – 50言語 約30万件 24
  • 26. 50言語のツイートを 約 99% の精度で判定 26 # code 言語 訓練 テスト 正解 精度 1 ar アラビア語 9,939 1,981 1,976 0.997 2 ar-bz Arabizi 192 31 23 0.742 3 bg ブルガリア語 9,540 1,864 1,819 0.976 4 bn ベンガル語 9,993 1,814 1,791 0.987 5 ca カタルーニャ語 8,202 1,240 1,227 0.990 6 cs チェコ語 10,315 1,930 1,916 0.993 7 da デンマーク語 10,251 1,905 1,859 0.976 8 de ドイツ語 10,130 1,809 1,802 0.996 9 dv ディベヒ語 978 102 102 1.000 10 el ギリシャ語 9,442 1,889 1,888 0.999 11 en 英語 10,269 2,032 1,988 0.978 12 es スペイン語 10,371 2,056 2,016 0.981 13 et エストニア語 2,067 543 529 0.974 14 fa ペルシャ語 9,904 1,965 1,956 0.995 15 fi フィンランド語 9,702 2,055 2,036 0.991 16 fr フランス語 9,927 2,042 2,010 0.984 17 gu グルジア語 1,547 106 105 0.991 18 he ヘブライ語 9,705 1,950 1,950 1.000 19 hi ヒンディー語 9,956 1,821 1,817 0.998 20 hr クロアチア語 8,624 1,923 1,880 0.978 21 hu ハンガリー語 9,811 1,959 1,939 0.990 22 id インドネシア語 9,903 1,974 1,951 0.988 23 it イタリア語 10,283 1,988 1,982 0.997 24 ja 日本語 9,916 1,968 1,967 0.999 25 ko 韓国語 9,906 1,976 1,974 0.999 # code 言語 訓練 テスト 正解 精度 26 lt リトアニア語 6,855 1,001 994 0.993 27 lv ラトヴィア語 3,651 1,158 1,144 0.988 28 mk マケドニア語 6,654 1,340 1,323 0.987 29 ml マラヤーラム語 7,103 996 996 1.000 30 mn モンゴル語 120 28 28 1.000 31 nl オランダ語 9,840 1,964 1,939 0.987 32 no ノルウェー語 9,673 1,896 1,838 0.969 33 pa パンジャーブ語 1,550 201 201 1.000 34 pl ポーランド語 10,186 1,722 1,717 0.997 35 pt ポルトガル語 9,301 1,893 1,869 0.987 36 ro ルーマニア語 9,571 1,924 1,909 0.992 37 ru ロシア語 10,186 1,953 1,937 0.992 38 si シンハラ語 4,114 671 670 0.999 39 sq アルバニア語 2,432 421 414 0.983 40 sv スウェーデン語 9,451 1,853 1,828 0.987 41 ta タミル語 9,949 2,084 2,084 1.000 42 te テルグ語 1,795 303 302 0.997 43 th タイ語 8,993 1,761 1,761 1.000 44 tl タガログ語 9,910 1,954 1,935 0.990 45 tr トルコ語 9,698 1,928 1,918 0.995 46 uk ウクライナ語 9,929 2,168 2,020 0.932 47 ur ウルドゥー語 9,037 1,003 1,003 1.000 48 vi ベトナム語 9,815 1,948 1,930 0.991 49 zh-cn 中国語(簡体字) 9,790 1,840 1,816 0.987 50 zh-tw 中国語(繁体字) 9,878 1,825 1,816 0.995 total 400,354 76,758 75,895 0.989
  • 28. 何語のつぶやきでしょうか? • ヒント – 実際のツイートです – 2億以上の話者がいるメジャーな言語です 28 t9b7en 3la khair
  • 29. 29 t9b7en 3la khair t 9 b 7 e n 3 l a kh ai r ‫ت‬ ‫ص‬ ‫ب‬ ‫ح‬ ‫ي‬ ‫ن‬ ‫ع‬ ‫ل‬ ‫ى‬ ‫خ‬ ‫ي‬ ‫ر‬ ‫خير‬ ‫على‬ ‫تصبحين‬ “Good night” アラビア語 アラビア文字 は右から左に Arabizi にしたがって変換
  • 30. Arabizi (Arabic Chat Alphabet) • アラビア文字をアルファベット+数字で置き換え – http://en.wikipedia.org/wiki/Arabic_chat_alphabet 30 (Wikipedia より)
  • 31. Arabizi は90年代に誕生 • PC/スマホの普及にともない利用拡大 – 入力だけではなく Arabizi で読み書きを • 「Arabizi はアラビア語を破壊しつつある」 – 学生「Arabizi に慣れたらアラビア文字で書けな くなってきた。レポートなどを書くときは一度 Arabizi で書いてからアラビア文字に変換」 – http://www.arabnews.com/node/374897 • 英単語混じりのアラビア語ツイートが! 31 入力/記述コストの低い方へ
  • 32. チェコ語 / スロバキア語 • 系統上 非常に近い兄弟言語 – 話者同士の意思疎通が可能 • ニューステキストなどの判別は容易(ほぼ 100% の精度) – チェコ語でのみ使う文字 : ĚŘŮ – スロバキア語でのみ使う文字 : ÄĹĽÔŔ – 異なる機能語も少なくない • 例:代名詞の一人称単数主格形 • チェコ語は “já”、スロバキア語は “ja” 32
  • 33. アクセントの省略 • 入力しにくい記号付きアルファベット – ÁÉÍÓÚÜ(スペイン語)、ÇĞİÖŞÜ(トルコ語)、… – ツイートではアクセントのない文字で代用が • チェコ語/スロバキア語の一人称 – “já” / “ja” → どちらも “ja” に – 言語判別が非常に難しい(80%台まで下がる) • 他の例: “eik iš čia” (リトアニア語: go from here) – “eik is cia” となり、他の言語に判定される 33
  • 34. その他の文字の代替 (1) • ドイツ語 – “ß” : エスツェット、スイス-ドイツ語では “ss” を使う – 入力しにくいため、ドイツでも “ss” に • ルーマニア語 – 正書法の定める “ș”, “ț” より “ş”, “ţ” を多用 – OS などによるサポートが遅かったため、 ネットに限らず印刷物や看板などでも代用率 が高い 34
  • 35. ブカレストまで行って探してきた (Google Street View で) • 街中の看板にも代用字(セディーユ付き)が使われている 35
  • 36. その他の文字の代替 (2) • ペルシャ語 – ‫ی‬ (U+06cc, Farsi yeh) の代わりに ‫(ي‬U+064a, Arabic yeh)が使われる – これも文字コード由来のため、SNS以外でも新聞など多く のメディアで発生している • モンゴル語 – 本来はモンゴル文字(縦書き)だが、キリル文字が広く使わ れる(ネットでは特に) – ロシア語のキリル文字とほぼ共通だが、 2つの独自文字の うち “ү”(U+04af) が “v”(U+0076) で置き換えられる 36
  • 37. 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」 37※ http://en.wikipedia.org/wiki/LOL に各国語の笑い表現がまとめられている
  • 38. 文字を重ねる表現の取り扱い • coooooooollllll、たっっっっぷり のように強調の ために同じ文字を重ねる表現 • 対策案1: [Brody+ 2011] で正規化辞書を作る – cooooooooollllllll => cool – 辞書にない単語に対応できない • 対策案2: 3文字以上の連続を2文字に縮める – 正書法の範囲で、同じラテン文字が3字以上続く言語 はない • 例外:略語( WWW, СССР ) • 日本語だと「かたたたき」とか「かわいいいぬ」とかある 38
  • 39. まとめ • SNS のテキストは正書法に従わない – 入力コストの低い方へ流れる • 言語判定でのみ必要な知識? いいえ! – これらの知識で正規化すれば単語共起、 トピック分類なども良い結果になるかも? • 実用的な精度 ≠ 研究に求められる精度 – 「先行研究の精度を上回る」という目標がない – 必要な精度を出すためなら何でもする • 例:30万件のツイートに言語ラベルをふる 39
  • 40. References • [中谷 NLP12]極大部分文字列を使った twitter 言語判定 • [岡野原+ 08] 全ての部分文字列を考慮した文書分類 • ニューエクスプレスシリーズ(白水社) – スウェーデン語、ノルウェー語、デンマーク語、ポーランド語、ハン ガリー語、ルーマニア語、チェコ語、リトアニア語、スペイン語、カ タルーニャ語、ベトナム語、トルコ語、ドイツ語、オランダ語、マ レー語、セルビア語・クロアチア語、他 • [Cavnar+ 94] N-Gram-Based Text Categorization • [Brody+ 11] Cooooooooooooooollllllllllllll!!!!!!!!!!!!!! Using Word Lengthening to Detect Sentiment in Microblogs 40