自然言語処理とは
普段、何気なく使われている検索などの技術ですが、どのような仕組みで動いているか簡単にまとめてみました。
自然言語
普段のコミュニケーションに必要であり、自然発生をした言語の事。
コンピュータ言語等(人工言語) との対比に用いられる。
自然言語処理(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 に学習させる内容を事前言語処理の結果を用いて、効率的に行われている
文字列の意味や前後の言葉を統計的な分布を学習データとして用いる。
まとめ
これらの技術を使い、ユーザに優しいものを作るにはサイトの特性に合わせたチューニングが必須になってきます。
そのあたりはまた別の機会にかけたらと思います。