私たちは普段、当たり前のように言葉を使って会話をしていますが、コンピュータにとって人間の言葉(自然言語)を理解することは非常に難しい挑戦です。
このページでは、コンピュータが「音」を「意味のある単語の連なり」として捉える仕組みと、文字で書かれた「文章」を「パーツ」に分解して解釈する仕組みを、実際に動かしながら体験できます。
コンピュータは、単に「音」を一つずつ「文字」に変換しているわけではありません。マイクから入ってきた音の波形(音響的な特徴)を解析すると同時に、「どの単語(形態素)とどの単語が繋がりやすいか」という言葉の知識(言語モデル)を使い、全体として最も確率の高い「単語の並び」を推測しています。
つまり、「とりあえず文字にしてから後で意味を考える」のではなく、「音を認識する探索(デコード)の過程で、すでに単語(形態素)レベルのつながりを計算している」のです。
以下の実験ページで「音声認識開始」をクリックし、マイクに向かって話しかけてみてください。 ※ブラウザからマイクの使用許可を求められたら「許可」を選択してください。
仕組みのポイント:文脈による仮説のリアルタイム更新
コンピュータは、話し声を聞きながら内部で複数の「候補(仮説)」を立てています。後ろに続く言葉が入力されるにつれて「言葉のつながりやすさ」のスコアが計算し直され、文脈にもっとも合う仮説へとリアルタイムで認識結果が切り替わっていく様子が観察できます。
特に日本語には、同じ音で違う意味を持つ「同音異義語」がたくさんあります。言語モデルが文脈をどう評価しているか、以下の例で試してみましょう。
「かきをたべたい」
(「牡蠣」なのか「柿」なのか、後の文脈がない状態でどう判断されるか?)
「かみをきった」 / 「かみにいのった」
(「髪」と「神」、後ろに続く動詞によって前の言葉の漢字がどう変わるか?)
音声認識の内部でも「単語のつながり」が計算されているとお話ししましたが、私たちがキーボードから入力したテキストやWeb上の文書などを、コンピュータに処理(検索、翻訳、意味理解など)させる際に行われる基本技術が 「形態素解析(けいたいそかいせき)」 です。
これは、ただ打ち込んだだけの文章を意味を持つ最小単位(形態素)に分け、それぞれの品詞や役割を特定する技術です。いわば、コンピュータにとっての「日本語の解剖」です。
以下のページでは、入力したテキストデータがどのように分解・分析されるかを観察できます。
仕組みのポイント:単語の境目の発見と確率の計算
日本語は英語のように単語の間にスペース(空白)がありません。そのため、コンピュータは内蔵された「辞書」と、単語同士の接続コスト(どの単語が連続しやすいかという情報)を使い、最も自然な分割を探索アルゴリズムで求めます。
以下の例を入力して、その挙動を確かめてみてください。
きょうはわたしのたんじょうびです
(ひらがなだけで入力した場合と、漢字を混ぜた場合で解析の精度や処理の難易度は変わるでしょうか?)
すもももももももものうち
(有名な早口言葉を、コンピュータは正しく「李(すもも)」と「桃(もも)」に分けられるでしょうか?)
かきくえばかねがなるなりほうりゅうじ
(正岡子規の俳句のような、少し古い言い回しや固有名詞をどう処理するでしょうか?)
これらの実験を通して、コンピュータが人間の言葉の構造を数学的・統計的に捉えようとしている工夫と、その難しさを感じてみてください。