自然言語処理の手法と応用技術

自然言語処理とは

普段、何気なく使われている検索などの技術ですが、どのような仕組みで動いているか簡単にまとめてみました。

自然言語

普段のコミュニケーションに必要であり、自然発生をした言語の事。
コンピュータ言語等(人工言語) との対比に用いられる。

自然言語処理(NLP:Natural Language Processing)

自然言語をコンピュータ等を利用し、処理・解析させる技術の事。

※よく使われるものは下記の図を参照

種別 手法
文字分解 N-gram 解析
単語・構文分解 形態素解析
意味解析 シソーラス解析・ベクトル空間解析

基礎的な自然言語処理

今回はCJK 言語(中国語、日本語、韓国語) での基本的な手法である『N-gram 解析』と『形態素解析』について取り上げてみます。

1. N-Gram 解析

処理対象の文章(文字列) を指定の文字数で区切る解析法
※ N == 区切り文字数となる

1文字区切りをUni-gram(ユニグラム)、2文字区切りをbi-gram(バイグラム)、3文字区切りをtri-gram(トニグラム)。
処理対象の言語や利用用途にて、上記を使い分ける。

例)bi-gram を用いた文字列処理の結果

株式会社アイスタイル
株式
式会
会社
社ア
イル

単語の意味や役割に関わらず、処理対象の文字列を指定文字数で解析・分解

日本語の場合、二文字、もしくは三文字区切りを用いるのが適している

メリット

 1. 処理時間が短い

デメリット

 1. 処理結果のデータ量が大きい
   ※ CJK 言語の場合、意味をなさない結果が多く含まれる
   ※ CJK 言語の場合、別の意味を持つ結果に処理される場合がある
    例)
     東京都 → 『東京』と『京都
     ルパン → 『ルパ』と『パン
 2. latin 系語族の処理手法の為、CJK 言語の処理には適していない

2. 形態素解析

処理対象の文章を特定の辞書に則り、解析を行う手法

例)

株式会社アイスタイル
株式会社
アイ
スタイル

辞書に登録されている単語・品詞等を元に文字列を解析・分解
※辞書によっては、”株式” と”会社” に処理される場合もあり

メリット

 1. 使用した辞書に記載されている単語・意味等を考慮した処理が行われる
   ※ CJK 言語の特性に適している

デメリット

 1. 使用した辞書により、期待する処理が適切に行われない場合がある
   例)
    「北浦和」を処理した場合

No. 結果 内容
1 北浦和 一単語(地名) として処理
2 北 + 浦和 二単語(名詞 + 名詞) として処理
3 北浦 + 和 二単語(名詞(姓) + 名詞(名)) として処理

利用用途として適切な辞書の作成を行い、目的に沿った処理結果となるよう調整が必要
 2. 処理時間が長い

有名な形態素解析器

1. MeCab(和布蕪)
  URL: http://taku910.github.io/mecab/
  日本人の工藤氏による国内産形態素解析器
  命名は好物の和布蕪(めかぶ)
  辞書はIPADIC が一般的
2. JUMAN
  URL: http://nlp.ist.i.kyoto-u.ac.jp/index.php?JUMAN
  京都大学研究室にて開発された形態素解析器
  ChaSen(Mecab の前身) の元
  Wikipedia から作成した辞書等が使えるのがメリット
3. Janome(蛇の目)
  PurePython で書かれた形態素解析器
  辞書はmecab-ipadic が内包されている
4. Kuromoji
  Apach Lucene/Solr(Elasticsearch) の形態素解析辞書

有名な形態素解析辞書

1. IPAdic
2. NAIST-jdic
3. UniDic

自然言語処理を使った応用技術

1. Web 検索

各種ドキュメントの内容を自然言語処理・解析を行い、検索キーワードを含むドキュメントを見つけ出す
検索キーワードのゆらぎ、カテゴリー検索、類似語検索等が応用技術として用いられている。

2. AI の統計学習

AI に学習させる内容を事前言語処理の結果を用いて、効率的に行われている
文字列の意味や前後の言葉を統計的な分布を学習データとして用いる。

まとめ

これらの技術を使い、ユーザに優しいものを作るにはサイトの特性に合わせたチューニングが必須になってきます。
そのあたりはまた別の機会にかけたらと思います。