N‐Gramと形態素解析 - Basis Technology

検索システムと形態素解析
言語処理で広がる検索の可能性
検 索 シ ス テ ム の 評 価 は 検 索 の 精 度 で 語 ら れ が ち で す が、 ユー
ザ に は、 い か に 要 求 に 合っ た も の が 検 索 結 果 と し て 提 示 さ れ る
か が 重 要 で す。 そ れ に は ユー ザ の 感 覚 に あっ た 柔 軟 な 検 索 機
能 の 提 供 が 求 め ら れ ま す。 索 引 生 成 や ク エ リー の 処 理 に 形 態
素 解 析 を 用 い る こ と で 検 索 の 柔 軟 性 を 高 め る こ と が で き ま す。
全 文 検 索 は 今 ま で 「あ る 文 書 を み つ け る」 「あ る 事 項 の 記 述 を
み つ け る」 た め に 利 用 さ れ て き ま し た が、 最 近 で は 多 数 の 文 書
の内容から情報を引き出す情報解析の手段として用いられる
よ う に なっ て き ま し た。 索 引 生 成 時 に 形 態 素 解 析 に よっ て 得 ら
れ る 文 書 の 語 句 情 報 は、 情 報 解 析 の 作 業 を 支 援 す る 検 索 ナ ビ
ゲーションの提供や検索結果のわかりやすい表示にも役立ちま
す。
We put the World in the World Wide Web®
Basis Technology について
Basis Technology (www.basistech.com) は、多言語対応の言語処理ソフトウェア
のトップ企業として、世界の政府機関や主要企業にその技術を提供しています。 主要製
品であるRosette® 言語処理プラットフォームは40ヶ国以上の言語に対応し、言語・文字
コード判別、形態素解析、固有表現(キーワード)抽出などの機能を、世界の各種検索シ
ステムや情報解析システム等にて採用されています。 また、弊社の技術および実績が認
められ、米国政府機関の設立したベンチャーキャピタルであるIn-Q-Telの出資を受けて
います。
© 2015 Basis Technology Corporaon. “Basis Technology”, “Rosee”, “Geoscope”, and “We put the World in the World Wide Web” are registered
trademarks of Basis Technology Corporaon. All other trademarks, service marks, and logos used in this document are the property of their respecve
owners. (2015-12-02)
1. 全⽂検索索引:N-gram⽅式と形態素解析⽅式
全文検索システムでは、予め検索対象の文書テキストから部分文字列を取り出して索引を生成
し、検索時にはその索引を使用します。索引には見出し語(文字列)とそれを含む文書のID、文
書テキスト内の位置(オフセット)などが記憶されます。
英語など単語を空白で区切って記述する言語では、原則として空白で区切られた文字列(単
語)を見出し語として索引を作ります。日本語や中国語は空白を入れずに記述されるので、見出
し語を決めるにはテキストを適当な方法で文字列に分割する必要があります。一般的に用いら
れるのは、テキストを特定の長さの文字列に分ける N-gram 方式と、テキストを単語に分かち書
きし、その単語を見出し語として索引を作成する形態素解析方式です。
1.1. N-gram ⽅式
N-gram
N
の
は索引の見出し語の長さです。1文字ずつの索引を作る(N=1)場合は
uni-gram、2文字の場合は bi-gram、3文字は tri-gram といいます。N=2 の場合
「東京都庁を訪ねた」 というテキストは、
「東京/京都/都庁/庁を/を訪/訪ね/ねた」 と2文字ずつに分けられて、
「東京」「京都」「都庁」「庁を」「を訪」「訪ね」「ねた」 を見出し語とする索引が作られます。
検索時には、クエリー「東京都庁」が2文字ずつ「東京/都庁」に分けられ、それぞれ索引の「東
京」「都庁」と一致し、そのオフセットから文中の「東京都庁」と一致することがわかります。
1.2. 形態素解析⽅式
形態素解析方式では、単語辞書と照合しながら文法に従ってテキストを単語に分節します。
• 「東京都庁を訪ねた」 というテキストは、
• 「東京/都庁/を/訪ねた」 と分かち書きされ、
• 「東京」「都庁」「を」「訪ねた」 これらの語が索引に入ります。
検索時には、クエリー「東京都庁」が形態素解析によって「東京/都庁」に分かち書きされ、それ
ぞれ索引の「東京」「都庁」と一致し、そのオフセットから2語が隣り合う「東京都庁」と一致する
ことがわかります。
1.3. N-gram⽅式、形態素解析⽅式の索引の特徴
N-gram 索引であれば、「東京」「東京都」「都庁」のいずれで検索しても上記のテキストがヒット
します。形態素解析方式の場合は「東京都」ではヒットしません。N-gram方式は検索文字列が
テキストの中にあれば必ず見つかりますが、形態素解析方式では単語の区切りが異なると一致
しません。したがって、完全一致検索ではN-gram方式のほうが確実といえます。一方、「京都」
で検索した場合でも N-gram方式では「東京都庁」がヒットします。これは誤った一致です。この
ように、N-gram方式では検索ノイズが多くなります。
検索システムと形態素解析
3
N-gram
形態素解析
索引生成の速度
速い
遅い
索引のサイズ
大きい
小さい
検索ノイズ
多い
少ない
検索漏れ
少ない
多い
言語の依存
辞書などは不要
言語ごとに処理系
(文法+辞書)が必要
N-gram 方式と形態素解析方式の特徴
索引には原則としてテキストの部分文字列そのものを入れますが、ある種の変換を加えることで
検索に柔軟性をもたせることもできます。半角カタカナを全角カタカナにして索引したり、全角英
数字を半角英数字、英字大文字を小文字にして索引する、といったことはよく行われます。この
ような検索システムでは、クエリーも同様の変換をしてから索引との照合を行い、ユーザは文字
の半角・全角を気にすることなく検索ができます。形態素解析方式の索引では検索の利便性を
高めるためにさらに多様な見出し語の変換が行われています。
2. N-gram⽅式でも形態素解析で柔軟な検索機能を実現
N-gram索引は完全一致検索の結果が保証できるという強みをもっています。この特長を活か
しながら、もう少し柔軟な検索機能を提供する試みもなされています。クエリー文字列のうち何
文字か一致したら(曖昧に)一致したものとみなす、というような曖昧検索を提供しているシステ
ムもありますが、形態素解析を利用することで、もう少しユーザの感覚に近い柔軟な検索を実現
することができます。
2.1. 英数・カタカナ⽂字の正規化
N-gram索引では原則としてテキストの文字列そのままをN文字で区切って見出し語とします
が、英数・カタカナは全角/半角どちらも一致するように、英数字は半角に、カタカナは全角に変
換して索引します。クエリーも同様の変換を行えば、英数・カタカナ表記の半角/全角を気にせ
ず検索できます。
2.2. 活⽤する語の検索
N-gram索引は完全一致検索は確実ですが、動詞などの活用する語は少し面倒なことになりま
す。例えば、「訪ねる」で検索しても「訪ねた」は一致しません。
このような場合でも、クエリーに語幹を指定すれば検索漏れはありません。「訪ねる」の語幹「訪
ね」を指定すれば、「訪ねた」「訪ねます」などが一致します。しかし、「歩く」のような5段活用の動
詞では、語幹「歩」は「歩く」「歩いた」などに一致するほか、「一歩」「散歩」などにも一致してしま
います。
こういった面倒を排除するために、クエリーに形態素解析を行う方法があります。クエリー「歩く」
に対し、これを形態素解析して【動詞(か行5段)・語幹「歩」】を得、クエリーを「歩か OR 歩き OR
歩く OR 歩け OR 歩こ」と展開します。
クエリー「訪ねる」に対しては【動詞(下一段)語幹「訪ね」】となり、「訪ね」を検索します。
このように、N-gram索引でもクエリーの処理に形態素解析を利用することで、語尾が活用する
語もうまく検索できます。
4
検索システムと形態素解析
2.3. ⽂字列検索を語句の近接検索に
「文書解析」を検索したいとき、「文書の解析」や「文書を解析」も検索できると便利です。クエ
リーを形態素解析して複数の文字列に分割し、それらが近接して現れるものを検索することで
実現できます。
「文書解析」の形態素解析結果「文書/解析」から「文書」「解析」の2語(2つの文字列)が特定
の文字数より近くに現れるものを検索すれば、「文書の解析」「文書を解析」などと一致します。
「インデックスサイズ」も「インデックス」「サイズ」の2文字列の近接検索となり、「インデックス・サ
イズ」「インデックスのサイズ」などもヒットします。
2.4. カタカナ表記ゆれ・同義語検索
表記ゆれ辞書があれば、クエリーを異なる表記に展開して OR検索することで表記ゆれに対応
できます。クエリー「フイルム」で「フィルム」もしくは「フイルム」を含む文書を検索、クエリー「ベネ
チア」で「ヴェネチア」「ヴェネツィア」も検索、などです。同義語辞書があれば、クエリーを同義語
に展開して OR検索することで、広く検索することができます。例えば、クエリー「索引」から「索
引」「インデックス」のいずれかを含む文書を検索します。
クエリーを形態素解析すれば、部分を表記ゆれ・同義語展開することもできます。例えば、クエ
リー「スマホアプリ」を形態素解析で「スマホ」「アプリ」に分割し、それぞれを展開して、「スマホ」
「スマートフォン」「スマートホン」と近接する「アプリ」「アプリケーション」を検索します。その結
果、「スマホのアプリ」「スマートフォン・アプリケーション」などがヒットします。
3. 形態素解析⽅式ではより柔軟な検索が可能に
形態素解析方式では、テキストを分かち書きした部分文字列(トークン)が言葉であり、索引に
は言葉が入っているという観点で、検索の精度や利便性を高めるための索引の改善を考えま
す。それにより、単なる文字列とみなす場合より多様な対応が可能になり、それぞれの語句に適
した見出し語への変換ができます。こういった処理を行う場合、トークンの文字列から索引の見
出し語への変換と同じ処理をクエリーについても行うことが前提です。
3.1. 索引⾒出し語の正規化
テキストを形態素解析によって分かち書きし、それぞれのトークンを見出し語とした索引を作りま
すが、その際、通常同じとみなされる語が同じ見出し語となるようにトークンの正規化を行いま
す。一般に正規形のみを索引しますが、システムの目的によっては元の形と正規形の両方を入
れることもあります。
文字の正規化 半角カタカナを全角に、全角英数字を半角に、旧字体漢字を新字体になどの変
換を行います。また、「ハ゛」 → 「バ」といった変換も行います。これらの変換は形態素解析前のテ
キストに対して行うのが一般的です。
活用語の正規化 日本語では動詞・形容詞が正規化の対象となります。例えば、単語「訪ねた」
が動詞「訪ねる」の活用形であることがわかるので、もとの文字列「訪ね(た)」ではなく、「訪ね
る」という基本形(辞書の見出し形)で索引します。そうすることにより、クエリー「訪ねる」でテキ
スト中にある「訪ねた」「訪ねます」などの表記が一致することになり、ユーザは活用する語句の
語尾変化を気にせず検索することができます。
検索システムと形態素解析
5
送り仮名の正規化 日本語の動詞は送り仮名も書き手によって異なります。例えば「終わる」「終
る」といったものです。どちらも「終る」に正規化することで同じ言葉として検索できるようになり
ます。しかし、動詞連用形が名詞として使われる場合の送り仮名(例えば「終り」「終」)の正規化
は問題を生じやすいので注意が必要です。
カタカナ表記ゆれ対応 カタカナ文字列のトークンの語尾が長音記号の場合、これを落とした形
で索引の見出し語にします。例えば、「コンピューター」は「コンピュータ」で索引します。また、ご
く一般的な表記ゆれ「・・オウ・・」 → 「・・オー・・」などもパターン変換で正規化できます。外来語
のカタカナ表記は書き手によって多少異なりますが、こうすることによってある程度表記ゆれを
吸収することができます。
辞書による異表記・同義語対応 「バイオリン」「ヴァイオリン」「ビオロン」を「バイオリン」に正規
化して索引すれば、どれも「バイオリン」で検索できるようになります。クエリーも同様の正規化を
行えば「ビオロン」を指定した場合でも上記のどれもがヒットします。同様に「口コミ」 → 「クチコ
ミ」、「アプリ」 → 「アプリケーション」、「五輪」 → 「オリンピック」など、異表記、略語、同義語を正
規化して索引すれば、同じ意味の表記の異なる言葉を同時に検索できるようになります。
これらの正規化のための機能はどの形態素解析器でもサポートされているわけではありませ
ん。特に異表記・同義語対応については別に辞書を用意してトークンの文字列を正規形に変換
する処理が必要になります。しかし、一般に形態素解析方式での索引の正規化による方法の方
が N-gram方式のクエリー時の展開による方法より広く表記のゆれに対応できます。
3.2. 複合語の分割
形態素解析に使用する単語辞書の中には多数の複合語が含まれています。「形態素解析」「日
本銀行」などです。これらをそのまま索引すると「形態素」や「銀行」ではヒットしません。
こういった不具合を解消するために、多くの形態素解析器では複合語をそれを構成する単語に
分割して出力する機能をもっています。例えば、トークン「形態素解析」にさらに分割した「形態
素|解析」をつけて出力します。また、複合語トークンを出力せず「形態素/解析」と複数のトーク
ンに分けて出力する形態素解析器もあります。
索引も「形態素解析」「形態素」「解析」の3語を索引する方法と「形態素」「解析」のみを索引す
る方法があります。
複合語をさらに分割して索引に加えることは検索漏れを減らすのに大変有効です。
3.3. 未知語と辞書への語彙追加
一般に、形態素解析は辞書の語彙が多いほどテキストを適切な位置で分節できます。例えば、
「婚活相談」は「婚/活/相談」と分節されることがありますが、「婚活」という言葉が辞書にあれ
ば「婚活/相談」と分節されます。また、「ポラロイドカメラ」は「ポラロイド」という言葉が辞書にな
いと「ポラロイド/カメラ」と分かち書きできず「ポラロイドカメラ」という未知語になります。
未知語の部分をどう特定するかは形態素解析器により異なります。また、未知語の部分をどのよ
うに索引するかは検索システムによって異なりますが、未知語が多いとどうしても検索精度は落
ちます。
未知語の問題を解消するために多くの形態素解析器で辞書への語彙追加が可能です。辞書
に追加する語彙をどのように決めるかは検索システムの用途によって異なります。
6
検索システムと形態素解析
索引生成時の形態素解析結果から収集された未知語の中には新語や専門用語が含まれてい
る可能性が高いので、未知語のリストから適当な語句を選んで登録すれば、次の索引生成では
未知語は少なくなります。
また、「婚活」のように未知語にはならないけれど辞書にない言葉も辞書に登録することで正し
く分かち書きできるようになります。こういった言葉は新しい言葉や流行語に多いので、クエリー
の記録から探すことも考えられます。
一般に形態素解析方式では辞書を更新するとすべての索引の作り直しが必要になります。その
ため、頻繁に辞書に語彙を追加することは現実的ではありませんが、適当なタイミングで定期的
に辞書を更新することは多くの用途の検索システムにとって有益です。
3.4. 複合語の追加: 分割位置の指定で曖昧さを解消
形態素解析の単語辞書には複合語も追加できます。また、複合語を分割して出力する機能の
ある形態素解析器では、追加された複合語についても同様に分割結果を出力します。複合語の
分割は、複合語を形態素解析して分割するタイプもありますが、辞書に分割位置を指定できる
ものもあります。
形態素解析では分割位置が曖昧な複合語もあり、そういったものも正しく分割できるようにする
ためには分割位置の指定が不可欠です。例えば「女子大回転」は「女子|大回転」「女子大|回
転」のように分割位置が曖昧ですが、辞書に「女子|大回転」と分割位置を指定できればいつも
正しく分割されます。
3.5. 索引とクエリー
形態素解析方式の索引には句読点や記号は入れないのが一般的です。また、索引の容量を減
らすために、検索対象にならない特定の言葉(ストップワード)や特定の品詞の語句(助詞、助動
詞など)を索引から除外することもあります。
前述した語句の正規化や複合語分割などの処理によって索引を改善し、柔軟な検索機能やよ
りよい検索結果を提供できる可能性がありますが、どういった処理が有効であるかは対象文書
の特性やシステムの用途によって異なります。
トークンの正規化で取り上げたいくつかの変換、特に略語や同意語については、語句の正規形
を索引するのではなく、検索時にクエリーを展開することでユーザによりきめ細かな検索機能を
提供できることもあります。
4. テキスト検索から情報検索、情報解析へ
形態素解析方式の索引は全対象文書の言葉の集合であり、索引生成時に頻度などの付加情
報を収集して記憶することも可能です。索引内のこれらの情報は、検索時の照合だけでなく、よ
り適切な検索結果の順序づけにも利用できます。また、文書自体の解析や文書間の関係づけな
どに利用することもできます。
4.1. 関連度による検索結果表⽰
通常、形態素解析方式の索引の検索システムでは、クエリーの文字列も形態素解析で分節し
て各トークンを正規化し、それらから論理式(AND、OR、フレーズ)を作って検索します。例えば、
「全文検索」は「全文 AND 検索」「全文 OR 検索」「”全文 検索”」となります。検索ノイズを排除
するにはフレーズ検索が適していますが、AND検索では「記事全文の検索」や「全文をくまなく
検索する」もヒットするのでユーザにとっては便利な場合もあります。
検索システムと形態素解析
7
かつての文書検索システムではフレーズ検索もしくは近接のAND検索が一般的でしたが、最
近はOR検索を行うシステムもあります。多くの検索システム、特にウェブ検索のような文書数の
非常に多いシステムでは検索結果をクエリーとの関連度の高いものから順に表示します。検索
ノイズに相当するような文書は関連度の評価が低く検索結果の上位に表示されることはない
ので、ユーザにとってはあまり問題になりません。
関連度の計算にはクエリーの部分文字列(語句)の各文書での出現頻度などが利用されます。
索引生成時の形態素解析によってすでに各語句の出現回数などの情報が得られているので、
多数の文書の関連度の計算も短時間で可能です。特定の品詞の語句のみで関連度を評価す
ることで計算量を減らしながら精度を上げることもできます。語句の正規化も関連度の評価の
精度を高めます。
4.2. 類似⽂書検索・⽂書分類
クエリーと文書との関連度を求めるのと同じように文書どうしの関連度も求められます。これを
利用して、検索結果の文書それぞれについて類似文書(関連度の高い文書)を提示することも
できます。逆に関連度の非常に高い文書は内容が似通っているものとみなして検索結果表示
から除外するという使い方もあります。
文書間の関連度に基づいて検索結果をクラスタリングすることも可能です。また、検索結果の
文書群を互いの関連度によって配置した図を表示すれば、ユーザは検索結果の全体的傾向を
把握することができます。
4.3. キーワードの抽出
形態素解析をベースとして、文書の中からキーになる言葉を取り出す処理に基本名詞句抽出、
固有表現抽出と呼ばれるものがあります。検索システムではすでに索引生成のために形態素
解析を行っているので、これらの機能を導入するコストは小さくてすみます。
名詞句や固有表現は1つもしくは連続する複数のトークン(単語)です。個々の単語より意味が
限定され、数も同じテキスト内の単語の数に比べるとずっと少なくなります。抽出された名詞句
や固有表現は検索結果の優先順の評価や検索ナビゲーションに利用することができます。
どちらの機能も現状ではどんな用途にも十分な精度でキーワードを抽出できるわけではありま
せんが、大量のテキストの膨大な単語列の中からキーワードの候補を選び出すことは、それらの
テキストから情報を取り出す糸口を探しているユーザにとって大きな助けになります。
4.4. キーワードの抽出:基本名詞句
名詞句抽出は形態素解析の結果をもとに、特定のパターンの品詞の並びに合致したトークン列
を名詞句として抽出します。「情報処理システム」などの複合名詞や「最適な検索結果」のような
修飾語を伴う名詞を抽出することができます。「原子力安全委員会」「消費税増税法案」「導電
性樹脂」といった名称・呼称や専門用語も多くは複合名詞なので名詞句として抽出されます。
文書中のあるターム(単語)がその文書をどの程度特徴づけるものであるかを表す指標として
tf-idf が使用されますが、このタームを名詞句にすることで少ない計算量で実情に合った結果
を得やすくなります。同様に前述の関連度の計算にも単語ではなく名詞句を用いることができ
ます。専門的な用語の多い文書などでは個々の単語で評価するよりよい結果がえられます。
抽出された名詞句をユーザにクエリーの候補として、用途に応じた選択(最近頻出の名詞句、
一部の文書でのみ頻出する名詞句など)を行って提示すれば、ユーザは適切なクエリーから情
報解析の作業を始めることができます。
8
検索システムと形態素解析
検索結果の文書リストに、各文書内で特徴的な名詞句(tf-idf値が高いなど)をいくつか付け加
えて表示すれば、ユーザが結果文書の適合性を判断する助けになります。また、それらの名詞句
の1つをクエリーに追加して絞込み検索に利用することもできます。
ファセット機能のある検索システムであれば、文書内で特徴的な名詞句を索引に保存しておき、
検索結果をファセッティングすることもできます。
4.5. キーワードの抽出:固有表現
固有表現抽出は、テキストの中の人名、地名、組織名などの特定の特徴をもつ言葉を抽出しま
す。固有表現抽出によって取り出されるこれら属性の明確な情報は文書の特徴づけに役立ちま
す。
これらの情報を属性別の索引として保存して、検索に利用したり、検索結果をファセッティングし
たりできます。これらの属性は、検索結果を視覚的に表現(地図の上に表示など)するための、
わかりやすい視点となります。
最近では検索システムをベースとする情報解析のアプリケーションが注目されていますが、固
有表現抽出はそういったアプリケーションにも一段と有効な情報を提供できます。人名、地名別
の文書数など統計データの収集も可能です。また、人名、地名、組織名といった事項は、他の
ソースからも情報を取得できる(例えば、地名の地理的な位置や包含関係など)ので、それらと
組み合わせることでより高度な情報解析を行うことができます。
検索システムと形態素解析
9