ホットリンク 公式ブログ

データから見えてくる注目のトピックスをとりあげます。

テック

知られざる顔文字の世界

20161111_shutterstock_217491799

開発本部研究開発グループR&Dチーム マネージャーの榊です。

本格的なテックブログの記事、3本目です。前回はかなり専門的で、かつ分かりにくい話題を取り上げたので、面食らった方も多かったのではないでしょうか?今回はもう少し柔らかい題材として、顔文字を取り上げたいと思います。なお、本ブログ記事の内容は、和歌山大学の風間研究室から多大な協力を頂いています。

 

改めて説明するまでもないですが、ブログやTwitterなどにおいて顔文字が出現する投稿を見かけることはよくあります。最近は、絵文字やスタンプに押され気味ではありますが、まだまだ顔文字はコミュケーションの手段としてよく使われています。テキストによるコミュニケーションでは、一歩間違えると誤解を与えかねません。顔文字は文章では伝わりにくい感情や雰囲気を表現することができるため、顔文字を用いることでテキストによるコミュニケーションをより円滑に行うことができます。

 

一方、テキストマイニングにおいて顔文字はやっかいな存在です。日本語をコンピュータで処理するには、前処理として単語(正確には形態素)単位で分かち書きする必要があるのですが、顔文字はコンピュータから見れば単なる記号の羅列なので、単語として認識するためにはあらかじめ辞書に登録しておく必要があります。ところが、ソーシャルメディア、特にTwitterにおいては日々次々と新しい顔文字が生まれています。予め辞書の登録しておくアプローチでは、次々と現れる新しい顔文字に対処することは困難となってしまいます。例えば、下記のような顔文字を予め辞書に登録しておくのが非常に困難です。

 

ŧ‹”ŧ‹”ŧ‹”ŧ‹”(๑´ㅂ`๑)ŧ‹”ŧ‹”ŧ‹”ŧ‹”

‹‹\(´ω` )/›› ‹‹\( ´)/›› ‹‹\( ´ω`)/››

 

今回の記事では、その厄介な顔文字を自動的に認識し、さらにその意味を推定する方法を紹介したいと思います。なお、本ブログ記事は2016年の人工知能学会で、和歌山大学の風間先生と一緒に発表した内容が元になっていますので、詳細は下記論文をご参照ください。

Twitterにおける顔文字を用いた感情分析の検討

 

1.顔文字の自動認識

まず、顔文字の自動認識手法を説明します。ホットリンクでは、和歌山大学の風間研究室が開発した顔文字の自動検出技術を活用しています。基本アイディアは下記の通りです。

 

顔文字に用いられる文字(顔文字主要文字)を定め、その文字を多く含む領域を顔文字候補として抽出する

 

つまり、使われている文字の種類から顔文字を自動認識することを目指しています。

 

このアイディアを実現するためにいくつかの工夫を行なっています。

・顔文字主要文字は、「記号文字」と「記述言語(ここでは日本語)以外の文字」と定める

・記号文字の判定にはUnicode文字プロパティを用いる

・記述言語文字の判定にはUnicodeブロックを用いる

・顔文字主要文字以外の文字が多少含まれていても、顔文字と認識する

 

ここでは特にUnicodeで定められた情報を利用しています。

・Unicode文字プロパティ:Unicodeには文字ごとに1つのプロパティが定められています。例えばLlは小文字アルファベット、Zsは空白文字を表しています。

・Unicodeブロック:Unicodeでは文字の種類に応じてブロックが決められています。たとえばひらがなに対応するUnicodeのブロックは U+3041 ~ U+309Fと定められています。

 

顔文字主要文字の具体的な定義は下記となります。

・Unicode文字プロパティの以下の一般カテゴリの記号類

Punctuation: Pc, Pd, Pe, Pf, Pi, Po, Ps, Sc, Sk, Sm, So

Symbol: Sc, Sk, Sm, So

・かつ,以下のUnicodeブロック以外の文字

Basic Latin, Hiragana, Katakana, CJK Unified Ideographs, Fullwidth ASCII Variants, Halfwidth Katakana Variants

 

詳細は、論文を参照してください。

 

このようにUnicodeで規定されている情報をうまく利用することで、未知の複雑な顔文字でも抽出することができます。

例えば、「 (ノД`)」という顔文字に涙が付け加えられた「。・゜・(ノД`)・゜・。」といった顔文字や、「o(^-^o)」という顔文字が反転して繰り返された「o(^-^o)(o^-^)o」」といった顔文字を検出できます。

 

この顔文字抽出アルゴリズムを3億6千万ツイートに適用したところ2,084,870種類、57,683,625個の顔文字が得られました。具体的に、得られた顔文字の例は下記の通りです。

 

1) 丸括弧を使わない顔文字

kao1

 

2) 特殊顔文字

kao2

 

このようにTwitterデータから、多様な顔文字を抽出することができました。

 

2.顔文字が表す感情の推定

次に、これらの顔文字が表す感情を推定することを考えます。正しく感情を推定するためには、目視で各顔文字を確認していけばよいのですが、大量の顔文字がある場合、このアプローチは現実的ではありません。そこで、類似した顔文字をグルーピングし、そのグループについて感情を推定することを考えます。ここでは、表層的な類似性と意味的な類似性を扱います。

 

まず、ある顔文字と表層的に類似した顔文字を抽出できるようにします。表層的な類似性とは、見た目が似ていることです。

ここでは、

顔文字を構成する部分文字列の一致率が高い2つの顔文字は、表層的に類似している

と仮定します。そして、部分文字列として下記のような1-gramと2-gramを利用します。

※n-gram:連続するn文字、もしくは、n単語を意味する(ここではn文字を採用)

kao3

 具体的には抽出した顔文字からn-gramを生成した後、顔文字 - n-gram行列を作成します。その行列を分解し、顔文字を表すベクトル表現を取得します。行列分割の手法としてはNon-negative Matrix Factorization(NMF)を適用します。

kao4

 これで各顔文字をベクトルで表現できるようになりました。このベクトルの類似度を用いることで、各顔文字間の類似度を定量的に表現できるようになります。実際に、本アプローチを用いてTwitterでの出現数上位40個の顔文字について、類似する顔文字を抽出すると下記のようになります。

kao5

 このようにして表層的に類似した顔文字を得られるようになりました。表層的に類似した顔文字同士は、それらが表す感情も類似していると考えられます。

 次に、ある顔文字を意味的に類似している顔文字を抽出する手法を考えます。「意味的に類似している」ということを定義するにはいくつか方法がありますが、ここでは、「同じ文脈で出現する語は同じ意味を持つ」という分布仮説を用います。

分布仮説を顔文字で言い換えると、

周囲に出現する語の一致率が高い2つの顔文字は、意味的に類似している

ということになります。具体的には、自然言語処理でよく使われるword2vecというツールを用いて、Twitter10%サンプリングデータ2ヶ月分から下記のように各顔文字のベクトル表現を獲得します。

kao6

 獲得した顔文字ベクトルの類似度を用いることで、意味的に類似する顔文字を抽出することができるようになりました。この類似度を用いて類似した顔文字をグルーピングしてみます。具体的には出現頻度上位1000顔文字の類似度を算出し、その類似度を元に代表的なクラスタリング手法であるk-means クラスタリング(k=10)を適用して、顔文字のクラスタ(グループ)を作成します。結果は下記のようになります。

kao7

 このように意味的類似度を用いることで、表層的な似ていないが類似した感情を持つ顔文字をグルーピングすることができるようになりました。

まとめ

今回の紹介した方法により、以下の2つのことが実現できるようになりました。

 1.特殊顔文字を含む多彩な顔文字の自動抽出

2.抽出された顔文字を同義顔文字と類義顔文字というグループにまとめて扱うための表層的類似性と意味的類似性の判定法

 

このように顔文字という厄介な言語表現に対しても、経験的な手法(ヒューリスティクス)と大規模データを組み合わせることで、上手く対処することができるようになりました。将来的には、表層的特徴と意味的特徴を組み合わせて、新たに出現した顔文字の表層的な特徴からその顔文字が持つ感情(意味的特徴)を推定するアプローチに取り組みたいと考えています。

 また、顔文字というのは、絵文字やスタンプなどと同様に言語で表現できない感情や雰囲気を表すためのものだと考えられます。もっと言ってしまえば、Verbalな表現(言語による表現)とNon-verbalな表現(言語以外で表される表現、感情や雰囲気など)の境目に位置するものだとも言えます。ICTテクノロジが発展するに伴い、そのようなNon-verbalに近い表現がますます増加していくことが予想されます。今後は、そのような表現を扱う技術が必要になっていくのかもしれませんね。

 

▼これまでの榊さんに関するテックブログ▼

≪社員紹介≫ホットリンクで博士と呼ばれている男
≪初・テックブログ≫「第9回テキストマイニング・シンポジウム」レポート