{site_name}

オペレーションを進化させる
現場のWEBマガジン
VOC分析は、名著を読み解くが如く
  • #VOC
  • #アナリティクス
  • #テキストマイニング
  • #トレンド
  • #ナレッジ

DIGITAL

nabe

2020.09.29

さて、前回はVOCアナリティクスのセクシーじゃない作業と分析の流れを料理に例えながら紹介を致しました。

今回は、データ分析のセクシーじゃない作業、テキストマイニングの「前処理」、特に"辞書作成"を効率化したお話をしたいと思います。

まずはテキストマイニングの「前処理」の"辞書作成"とはどのような作業なのか、一部実際のテキストマイニングと共に紹介いたします。

今回テキストマイニングしていくのは、宮沢賢治の『銀河鉄道の夜』です。

■単語分割と辞書の作成

テキストマイニングの中で一番簡単なのは、”単語を集計する”ことです。
手順としても簡単で、分析対象を単語分割して各単語の頻度を集計するだけです。
ただ、この単語分割はどのように単語を分割するかを機械に教える”辞書”がなければできません。

先人達のおかげで、一般的なことばは既に辞書に登録されているのですが、それぞれの文章ごとの特有の表現などはテキストマイニングをするときに登録をすることが必要になります。
今回の『銀河鉄道の夜』の場合は、以下のような単語がその対象となります。

1.固有表現(専門用語や複合語など)の登録

『銀河鉄道の夜』の中に「よう、虫めがね君、お早う。」という1文があります。

この中の「”虫めがね君”という言葉が固有名詞を表している」ということを人は経験や文脈から判断できると思いますが、機械では「虫 めがね 君」とバラバラにしてしまうため、"虫めがね君"は1つの単語であると辞書に登録をしておきます。

2.類義語や同義語の抽出と登録

先ほどの”虫めがね君”は、『銀河鉄道の夜』の主人公の1人であるジョバンニのことを指しています。
このことも、人が小説を読んでいくと簡単に理解できるのですが、機械だとなかなか難しいです。

そのため、機械には『"虫めがね君"はジョバンニと同じ意味だから同じように集計してね』と事前に辞書登録しておきます。
文章内の虫めがね君をジョバンニに置換してから集計する、と考えるとわかりやすいかもしれません。

この2つの辞書のことをそれぞれ、「ユーザー辞書」「類義語辞書」といい、それぞれ別々に作成をします。
そしてもう一つ、性質の違う辞書も必要となります。それが「ストップワード辞書」です。
こちらについては『銀河鉄道の夜』をテキストマイニングしながらお話しします。

3.不要な単語の削除

『銀河鉄道の夜』を単語分割だけ行い、可視化すると以下のようになります。

この図は、“Wordcloud”といい、色には特に意味がなく、単語の大きさが対象のテキスト内の単語の頻度の多さを表しています。


見て頂いてわかるように、助詞や助動詞が大きく出てきています。

こういったものや、感動詞(はい、うん)、フィラー(ああ、えーっと)と呼ばれるものは、ほとんどの場合、テキストを分析するには不要です。

一般的には、「名詞、動詞、副詞、形容詞」が必要なることが多く、その品詞だけで可視化すると以下のようになります。


これで先ほどよりはテキスト分析に役に立ちそうな言葉が残りましたが、今度は個別の「よう」「そう」「いる」といった単語が気になると思います。

そういった、個別に気になる単語を集計の対象外とすると、以下のようになります。


このように分析に不要な単語を個別に選定してまとめたもの(今回の場合であれば、「よう」「そう」「いる」といった単語)を「ストップワード辞書」といいます。

■辞書作成の効率化

さて、ここまで紹介してきた辞書ですが、以下のように作成していたため、非常に時間がかかっていました。

  • マイニングした結果から浮かび上がってきた固有の表現や類義語、不要な単語を辞書登録し、再びマイニングにかけるということを繰り返していた
  • この繰り返しをどれだけやるのかを判断できず、時間の許す限り、何度も同じことを繰り返していた

また、今回マイニングしているのは小説ですが、私がいつも相手にしているテキストは”音声認識されたテキスト”であり、誤認識や誤変換が含まれているため、違う単語に集計されないようにするなどの影響を少なくするために、より時間がかかっていました。

そこで、『辞書作成の時間短縮』と『誤認識や誤変換の影響を少なくする』ためにはどうすればいいのかを考えました。

1.辞書作成の時間短縮

時間短縮のために、"機械的に辞書の作成が行えないか"ということを検討しました。

類義語や固有表現の抽出については、自然言語処理の世界では様々な方法が提案されています。
その中でも比較的 取り組みやすかった以下の2つの方法を採用し、それぞれの辞書に登録する単語の候補を抽出する機能を考えました。

先ほどの『銀河鉄道の夜』を例に紹介いたします。

・ユーザー辞書
TermExtractという技術をもとに、複合名詞の候補を抽出する機能

この技術は、文章中の連続する名詞を繋げたものを複合名詞の候補として出力してくれます。

表1は実際にTermExtractを使って、『銀河鉄道の夜』から複合名詞の候補を抽出した一覧です。


この技術はあくまでも連続した名詞を繋げたものを複合名詞の候補として出してくれるだけのため、実際にユーザー辞書に登録する単語は、人が判断して決定します。

・類義語辞書
単語をベクトルにする(※)技術を使って、類義語/同義語の候補を抽出

先ほどのユーザー辞書の複合名詞とは違い、1つ1つの単語に対してその単語の類義語の候補が出力されます。

表2であれば、“蝎”の類義語/同義語の候補を抽出している例となります。


ユーザー辞書と同様に、実際に類義語辞書に登録する単語は、この中から人が選んで判断をします。

※単語をベクトルにするとは・・・

文章中の各単語の意味を数字の羅列で表現する手法で、上記のように「単語同士の意味の近さを計算」ができます。

詳しく知りたい方はこちらがわかりやすいと思います。(https://www.randpy.tokyo/entry/word2vec_skip_gram_model

 

 

一見時間がかかりそうですが、これまでは候補となるものすらない状態からの辞書作成のスタートだったため、候補を抽出してくれる機能が作れただけで、大幅に時間の短縮ができました。

2.誤認識や誤変換の影響を少なくする

『銀河鉄道の夜』を100人がそれぞれ音読して、音声認識させたとします。

100人それぞれの滑舌や話すテンポによって、少なからず誤変換や誤認識が出てきます。
例えば、”姉弟”という単語は、誤変換として「指定、師弟」が、誤認識として「否定」などと出てきてしまうこともあります。

こういった誤変換や誤認識を上記の "単語をベクトルにする技術" によって、ある程度、抽出することができるようになりました。

これは、単語をベクトルにする過程で、その単語の周辺の単語も学習していることを利用しています。

例えば、『銀河鉄道の夜』の『姉弟』が出てくる次の1文、
「青年は教えるようにそっと"姉弟"にまた言いました。」

「青年は教えるようにそっと"師弟"にまた言いました。」
と『姉弟』が『師弟』に誤変換されていても、『姉弟』が『師弟』それぞれの周りの単語が同じため、『姉弟』と『師弟』は同じようなベクトルとなり、類似度が高く出てくるようになります。(抽出例:表3)


これによって、今まではまとめることを躊躇していた誤変換/誤認識を類似度で判断できるようになり、正しい単語にまとめることができるようになったため、分析への影響をある程度少なくすることができました。

以上のように、自然言語処理をかじった人であれば比較的簡単な手法と、人手を融合させることでセクシーじゃない作業を、ほんの少しではありますがセクシーにすることができるようになりました。

「21世紀で最もセクシー」にはまだまだ遠いですが、日々努力を続けてより良いサービスや機能を生み出せるよう精進していく所存です。

**
今回の辞書作成については、我々と同じように「音声認識テキストを分析する際に”誤変換/誤認識”の取扱い方に困っている」、「なかなか良いマイニング結果が得られない」という方もいらっしゃると思います。

我々は“お客様の声の分析“だけでなく、そこに至るまでの手法などについてもご協力させて頂けることもあると思いますので、お気軽にご相談頂ければ幸いです。

ビーウィズは「デジタル&オペレーション」として、AIやRPAを活用した効率的で高品質なオペレーションをご提供しております。
近年では子会社の株式会社アイブリットが開発するトータルテレフォニーシステム「Omnia LINK」を活用し、オペレーターとお客様の会話をリアルタイムにテキスト化及び分析することで、企業経営に貢献する提言を行う「VOCアナリティクス事業」に注力しています。

■ライター「nabe」の最新一覧


関連記事