2018/10/12 - 13:52

Rubyで形態素解析を行ってキーワードを抽出する

:

:

kamui trackerのエンジニアのkawashigeです。

kamui trackerではYouTubeの動画のコメントからキーワードを抽出し、どのようなコメントがついているかをひと目で分かるような機能を提供しています。
上記キーワード抽出をRubyでどのように行っているのかを紹介します。

形態素解析

コメントは日本語のテキストなので形態素解析器のMeCabを使用してテキストを品詞に分解します。

MeCab
http://taku910.github.io/mecab/

MeCabをRubyから利用するためにkamui trackerではnatto gemを使用しています。

Natto gem
https://github.com/buruzaemon/natto

最初はIPA辞書を用いて形態素解析していたのですが、YouTube特有の固有名詞や表現などが正しく分かち書きできないという問題が有り、mecab-ipadic-NEologdを利用することにしました。

mecab-ipadic-NEologd
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md

mecab-ipadic-NEologdを利用することで「うぽつ」などのYouTube固有の表現や固有名詞をより正しく分かち書きできるようになりました。

コメントを特徴づけるキーワードの抽出

コメントの中からコメントを特徴づけるキーワードを抽出したいので、形態素解析したキーワードの単純な出現回数ではなくいくつか工夫を行っています。

品詞の制限

接続詞など意味を持たない品詞を除外するため、分かち書きしたキーワードから名詞、形容詞のみを抽出します。

品詞の連結

数字と名詞の組み合わせなどいくつかの品詞の組み合わせが意味をもつキーワードが存在します。
そのようなキーワードが分かち書きで分割されているのでいくつかの品詞の並びの条件で分かち書きされたキーワードを結合します。

キーワード結合の例

  • 「接頭詞で数接続/名詞接続」のあとに「名詞」が来る場合
  • 「名詞/形容詞」のあとに「接尾の名詞/形容詞」が来る場合
  • 「数の名詞」が連続する場合

キーワード一覧の表示

上記で説明した内容でキーワードを抽出し、上位50件をその動画のコメントを代表するキーワードとしてユーザーに提示しています。

今後の展開

現状はキーワードの出現数ベースで上位のキーワードを表示していますが、下記のような他の観点での分析も今後行っていきたいと考えています。

  • ポジティブ/ネガティブなどの感情表現毎のキーワード抽出
  • 絵文字などのキーワード以外の表現の抽出