Bot:かしこまりました。(デモ終わり)朴:男性の声は会場で発表している登壇者で、女性の声は我々のチームで作ったモデルによって生成された音声です。「よかったですよね?」と言ったら、会場の雰囲気的には「よかったです」としかお返しできないと思うんですけれども。(会場笑)このように抑揚のある、人っぽいしゃべり方ができるようになっております。音声合成の技術を使ってこういったサービスもやっております。「Gatebox」と呼ばれるサービスです。(映像が流れる)逢妻ヒカリ:おかえりなさい。みなさん、こんにちは。私、Clovaちゃんとコラボをさせてもらいました。朴:こちら、YouTubeなどでご覧になられた方いらっしゃいますでしょうか。はじめしゃちょーさんが実際使ってたという動画を上げていたりします。男性:ねえ、ヒカリ?逢妻ヒカリ:はーい。逢妻ヒカリ:うーんと、それじゃあ、お天気見てみるね。Bot:今日は晴れのち雨でしょう。降水確率は60パーセントです。最高気温は21度の予想です。逢妻ヒカリ:雨みたいだね。おでかけするなら傘を忘れずにね。(映像終わり)朴:はい。先ほどの「DUET」という飲食店の予約サービスと打って変わって、「はーい」だったり、いわゆるアニメやゲームに出てくるキャラクターのような、抑揚の幅の大きいボイスを聞いていただきました。このようにさまざまなドメインにボイスチームの音声合成技術がどんどん取り入れられておりまして、いろんなサービスにジョインしていってるという背景がございます。音声合成技術の仕組みこの音声合成技術の仕組みをざっくり紹介すると、こういった構造になります。Learningなどで学習したものを生成して、あるテキストに対して音声を出力するモデルを配布するかたちになっています。私はそのなかでも、入力されるテキストに関する処理に関わっております。TTS(Text-to-Speech)において、自然言語処理にどういったタスクが存在するのかを説明します。いったテキストが与えられたときに、ここにどういった特徴量があるのかを洗い出します。形態素解析の技術を用いて、各形態素がどういった品詞なのか、また辞書においてどういった読みが与えられているかを推定します。波形と組み合わせるためにはかなり細い音の構造の下の下まで掘り下げなければいけないので、音素を抽出します。「フウフ」と「ケンカ」という言葉が連なったときに、「ケンカ」の1文字目は「ゲ」と読むべきですよね、といった処理などを行い、その結果に対して、音素を抽出します。人の言葉には、僕が今しゃべっているように抑揚が存在します。どの箇所にアクセントをつけるべきなのかという処理を行い、こういった一連の処理で得られた特徴量などを用いて、音声データと組わせて学習を行うことが一般的になっています。この中でも、今紹介したタスクのさらにその前の前処理に関わっている仕事をやっております。この前処理の中でも、今日のタイトルにもあります「テキストの正規化」について最近取り組んでおります。テキスト正規化の仕組みディープラーニングを用いるにあたって大量のコーパスが必要になることは、みなさんご存じのことかと思います。大量のテキストデータをどこから入手しようかと考えた時、インターネットが存在していると思います。みなさんがこういうコーパスを扱うとしましょう。意味はとくに考えないでください。」の定型文を使った、あの一連のブームがありましたよね。いったさまざまな文字種が混在していたり、間違った、あまり辞書にやさしくない表記に対して、より今後のタスクに適したかたちにしてあげましょう、という処理をテキスト正規化と呼びます。絵文字はそもそも意味を持ちません。人間にとっては印象をやわらげるような効果はありますが、実際のテキスト処理には使われないことが多いです。いったものや、「ってゅうのゎ。」という部分の一般的な表記としては、まだこちらのほうが標準といえます。データをきれいにしていく処理を指します。TTSにおいては、こういった処理がかなり重要です。いったテキスト(「午後12:30です」)が与えられたときに、我々としてはこちらをありのまま「午後12コロン30です」と読んでほしくはないわけです。できれば「午後12時30分です」と音声を合成したいので、こちらの記号に対して適切な処理を与えることが求められます。いったタスクがあったとしたら、正規表現を用いれば、「24までの数字と60までの数字の間にコロンがある状態で与えられたら、こういうふうに変えてあげましょう」といったスクリプトはすぐに書くことができます。次のコーパスではこういったパターン(「今日の試合は1:2でした」)が与えられたとしたら、最悪ですよね。このままこのスクリプトが通ってしまうと、「今日の試合は1時2分でした」という結果が返ってきてしまいます。これでは本来の意図を損なって、あまり適さない結果となるわけです。テキストの正規化は、人によって書かれたルールによって正規化を行うことはもちろんできるのですが、このように解に対して、コーパスの範囲が広がれば広がるほど重くなってしまうという問題が存在します。統計モデルに基づいて、つまり機械学習を用いてこれらを解決しようという試みが存在するわけです。テキストの正規化とひと言でいっても、そこにはどこまでどの部分について正規化を行うのか、研究のタスクによっては定義が異なったりします。このように数字と絵文字が一緒に入って混在しているときに、すべて英文字にするという文字種の統一だったり、誤字脱字の修正、もしくは不要な文字の削除などのタスクについて、それぞれ研究が行われています。ここからは、各タスクについてどのような研究が行われているのか、実際の研究の事例についてみなさんにご紹介できればと思います。機械学習に基づくマイクロブログ上のテキストの正規化あっ、お聞きするのが遅くなったのですが、この中で自然言語処理に携わっている方はどれぐらいいらっしゃるのでしょうか?(挙手なし)1人もいらっしゃらないということなので、細かいところは省いて説明させていただきます。こちらは、最近の研究に比べると昔のものになってしまうのですが、正規化タスクに対してCRFですね。系列ラベリングなどにもよく用いられます。言語処理であればMeCab。他にも時系列の予測などによく使われるモデルです。こちらのCRFを用いてこのような文字列が与えられたときに、各文字にラベルをつけてこれを予測して解決するという方法を提案しておりまして、このタスクでは比較的広範囲なテキストの正規化になっています。このように、小文字の「ぃ」を大文字に変えるとか、いらない部分を削除したりといったことができるようになります。見ていただきたいのは、使われたデータの数です。1,000件で、彼らはけっこうすばらしい成果を出しています。これは編集距離といいまして、ある文字列AとBがどれぐらい離れているかを表している数字なので、高ければ高いほど悪い結果だと言えます。正規化を行うまでは、本来正解とするきれいな状態のテキストとそうでないテキストの距離が0.8......ほぼ0.9だったものが、彼らの手法を用いることで約0.3まで近くなるという実績を残しています。それでも0.3で、なおかつデータの規模が小さいということから、汎用性についてはまだまだ検討の余地があると語られていますが、その後佐々木さんの研究はほかの手法でも使われたり応用されています。Normalizationこちらは打って変わって英語に関するタスクです。こちらは最近流行りのというかすでに定着した手法になっていますが、ニューラルネットワークです。その中でも再帰型のニューラルネットワークを用いてモデルを作成しています。Network)でも、最近翻訳などによく用いられるEncoder-Decoderといった構造を用いています。彼らのタスクは先ほどのタスクとは異なり文字種の統一にフォーカスしており、「123」という数字が与えられたときにこれをどう読むのか、といった推論を行うモデルを提案しています。先ほどと比べてデータ規模が違うのですが、11億ワードの英語のコーパスを用いています。こちらが彼らの成果なのですが、かなりすごい数字ですよね。90パーセント以上を出しています。一部のタスクについてはまだかなり低い結果になっているので、彼らはそこからさらに出力された結果について、文法、語学知識を含めたモデルのフィードバックを加えることにより、一部の精度の低かった問題に対してさらに精度を上げるといった工夫を加えており、数字からの英文字、数字からの読みの推定に関してはかなり高い精度を出しております。Encoder-Decoderモデルを用いた日本語崩れ表記の正規化では、日本語ではニューラルネットワークを使っていないのかということなのですが、日本語でも活発的に使われております。こちらも先ほど紹介した論文と同じようにRNNに基づいたモデルを作成しております。彼らのタスクは、最初の佐々木さんの研究と同様に、崩れた表記に対してできるだけ標準に近い表記に変換する、崩れた表記に対して正しい表記を生成するというタスクになっています。彼らの注目するところとしては、実際に使われた正解データ、まともなデータは506文だったのですが、それをこちらのルールに従ってあえて表記揺れを起こして疑似コーパスを作ったところです。実際、擬似コーパスなしで作った場合はエラーレートがあり得ないぐらい高かったのですが、擬似コーパスを加えることによって、先ほど紹介したCRFでの精度よりもかなり精度の高いモデルが作成できたと示しています。これがこちらのモデルを使った変換の生成の例なのですが、このように「すげーな☆」という表記に対して、人によって作成されたルールやCRFなどの既存の手法に基づいた正規化よりも、かなり正確なデータを出しています。Media最後の論文なのですが、こちらは先ほど紹介した池田さんの論文と同じように、英語に対して表記揺れに関する正規化を行ったモデルです。今まではCharacterベースといって、各文字に与えて、それを文字ごとに生成していくという手法が主でしたが、それでは文脈を考慮することが大変困難です。計算量を増やせば増やすほど可能ではありますが、それをもっと効率化しようということで、各単語レベルでの特徴量を生み出す方式とCharacterごとの特徴量を生み出す方式の両方を組み合わせたモデルを作成しています。このようにかなり広範囲なタスクを抱えているモデルにもかかわらず、80パーセント以上の精度を出しているという結果になっています。ソースは、こちらにある「cmon」のように、置き換えされたりしているものや誤字をあえて出すようにしているようなんですが、それに対してあらためて正しい表記の生成に成功しています。今お伝えしたように、正規化に関しては泥臭いことが多く、本タスクの前処理ではありますが機械学習を取り込んだりして、実際はかなり大変な仕事となっています。画像処理でもみなさん一緒だと思うのですが、言語処理もかなり大変です。一部の機械学習を用いた正規化に関しては、表記ゆれに関しても80パーセント以上の精度を出しているので、人によって書かれたルールによって起きるヒューマンエラーといいますか、そういったヒューリスティックなルールよりも、実はサービスに適用できるんじゃないかと思いました。ご清聴ありがとうございました。KANSAIに関する記事をまとめています。KANSAIに関する新着記事が公開された際に、通知を受け取ることができます。