言語判定は以前からありましたが、プロフィール情報などから判定しており、それほど精度が高いとは言えませんでした。
また、各ツイートごとでの言語判定はできず、各ユーザごとの判定のみでした。
そのため、ユーザがプロフィール情報で英語にしていた場合、日本語でツイートした場合でも英語として判定されてしまっていました。
このような事情により、てぃーが以前行ったツイッター分析においても日本語のみのツイートを取得するのは難しく、最終的には手作業で選別しました^^
→
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack (スライド15枚目)
ツイッターでの言語の自動判定の精度が高ければ、このような苦労をすることなく必要な言語のツイートを取得できますね!この言語判定は、まず3月6日(March 6, 2013)にREST APIで実装され、次いで3月26日(March 26, 2013)にStreaming APIに実装されました。
機能の詳細については次の公式ブログに掲載されています。
→
Introducing new metadata for Tweets | Twitter Developers(この公式ブログでは言語判定に加えて、filter_levelも紹介されています。)
<該当箇所>
The new lang attribute specifies the language the Tweet was written in, as identified by Twitter's machine language detection algorithms. The values will be valid BCP 47 language identifiers, and may represent any of the languages listed on Twitter's advanced search page, or "und" if no language could be detected. This field enables consumers of Tweet data, such as analytics services or real-time search streams, to offer language-specific curation, aggregation and analysis of Tweet content.
使用データと判定の検証方法
さて、言語の検証判定に用いたデータと検証方法は次のとおりです。
<使用データ>
日時:2013年04月29日(月)00:10:00~00:10:09 の10秒間
方法:Streaming APIのsample(全公開ツイートの約1%)
ツイート数:736 ツイート(日本語161、英語219、他言語358)
<検証方法>
・日本語(jp)と英語(en)を対象とする。
・てぃー自身がツイート内容を確認し、言語判定と比較して検証する。
・検証では「正解」「不正解」「どちらでもない」の3種類に分ける。
<ソースコード>
→【Twitter4J】Streaming APIのsampleで各ツイートのlang(言語情報)を取得する方法
日本語・英語以外はてぃーが分からないのでパスです^^
検証の「どちらでもない」には記号のみ、特に顔文字のみの場合を含みます。確かに顔文字なら各言語でよく使われるものもあって判定は可能とも言えますが、主観が入ってしまうこともあるので今回は不明としました。
検証結果
判定結果は次の表のようになりました。(上段:ツイート数、下段:割合%)
日本語| | 日本語と判定されたもの | 日本語と判定されなかったもの |
|---|
| 正解 | 161 100.0% | 575 100.0% |
|---|
| 不正解 | 0 0.0% | 0 0.0% |
|---|
| どちらでもない | 0 0.0% | 0 0.0% |
|---|
英語| | 英語と判定されたもの | 英語と判定されなかったもの |
|---|
| 正解 | 211 99.5% | 516 98.5% |
|---|
| 不正解 | 1 0.5% | 8 1.5% |
|---|
| どちらでもない | 0 0.0% | 0 0.0% |
|---|
日本語で100.0%、英語で99.5%ととても高い精度です。特に日本語は完璧ですね!「どちらでもない」は今回は該当がありませんでした。
一方で英語では不正解があり、英語と判定された場合で0.5%、英語と判定されなかった場合で1.5%と完璧ではなかったですが、かなりの精度です!
ちなみにこれらのツイート内容は次のようなものでした(本文のみ)。
<英語と判定されたツイート内容>(1つ、下記※注も参照)
・fOOLY & cOOLY – Them a Fe Get a Beatin' di @petertosh, da #SoundHound
<英語と判定されなかったツイート内容>(8つ)
・Come on United! #ArsenalForEuropaLeague
・*Unfollows*
・Was That Malik
・Lmao I had to #repost #regram #purecomedy lol
・thanks ^^
・the ring two>
・Well hello new Follower
・I swear I could eat a dozen donuts
※注 当初、smoove I c u bro lolとlmfaoも該当するとしていましたが、@Scaled_Wurmさんよりlmfaoはlaughing my fucking ass offの略、I c u broはI see you brotherの略とのご指摘があり、除くこととなりました。ありがとうございました。省略表現であっても言語判定ができるというわけですごいですね!
まとめ
日本語に関しては完璧な判定となることはすごいですね。
英語に関してもほぼ完璧と考えてよいでしょう。
もはや特別な言語判定メソッドを考えたりする必要はまずない、としてもよいのではないのでしょうか!!
いろいろ構想が膨らみますね!
↓この記事が参考になったら拍手、ツイート、いいね、はてブ、いずれかをお願いします。今後のブログ作りに役立てたいので。