テクノロジー

3分でわかる!自然言語処理(NLP)とは何かを初心者向けに解説

3分でわかる!自然言語処理(NLP)とは何かを初心者向けに解説

今、画像認識技術のようにAI(人工知能)の技術が活躍していますよね。そのような中、自然言語処理(NLP)という技術も非常に注目が集まっています。

自然言語処理(NLP)という言葉はAI(人工知能)への興味関心が強い皆さんも一度はどこかで聞いたことがあるかもしれません。でも、実際のところ自然言語処理(NLP)って何だろう、聞いたことあるだけでどんなところ技術かよくわからない・・・という人も結構いるはず。実は自然言語処理(NLP)はAI(人工知能)の中でもかなり身近なところで使われて、これから自然言語処理(NLP)はさらに発展するともっと使われる場面が増える可能性があります。

そこで今回は、そんな自然言語処理(NLP)について初心者にもわかりやすく解説しましょう。まずは、自然言語処理(NLP)とは何か、自然言語処理(NLP)そのものについて解説します。

自然言語処理(NLP)とは?

言語のイメージ
自然言語処理(NLP)とは何か、について入るに当たって、そもそも自然言語というものが何なのか気になりますよね。そこでまずは自然言語について解説します。

自然言語とは日本語や英語、中国語などのことで、人工的に作られたプログラミング言語などとは異なり、日常生活でコミュニケーションを取るうえで使われている言語のこと。自然言語は人間がコミュニケーションを取るために自然に発生したと考えられる言語で、あいまいさや文化的・社会的背景を含んでいます。

このため、文字通りにとらえるだけでは解釈が多様になってしまい、ルール化が難しいという特徴があります。例えば、「茶色い足の小さな猫」という文は、茶色い、足の小さな猫とも、茶色い足の、小さな猫とも解釈できますよね。

このようなあいまいさという難しい課題が存在する自然言語をコンピュータで扱うための技術が、自然言語処理(NLP:Natural Language Processing)というものです。自然言語処理は一般的に形態素解析、構文解析(係り受け解析)、意味解析、文脈解析の工程からなります。それぞれの役割は次の通りです。

  • 形態素解析:文字で表記された自然言語の文を、意味を持つ最小単位(形態素)まで解析する
  • 構文解析(係り受け解析):分解した形態素の関係性を解析する
  • 意味解析:コンピュータの持つ「辞書」をもとに正しく意味内容を解析する
  • 文脈解析:文同士の関係を解析する

続いて、自然言語処理(NLP)は一体何ができるのかについてお伝えします。

自然言語処理(NLP)でできること

検索エンジンのイメージ
あいまいさを持つ、日常的に使う自然言語を処理する自然言語処理(NLP)ですが、その技術は次のようなところで活躍しています。

検索エンジン

現在Googleの検索エンジンで使われる自然言語処理(NLP)はBERTと呼ばれるもので、自然言語の文法上の仕組みを分析できるという強みを持っています。これにより、多様で複雑になった検索クエリ(検索する文字列や文)を高度に分析し、ユーザが求める検索結果を、あるいは近いものを提示することが可能となりました。

機械翻訳

機械翻訳とは人によるの差を解釈を最小限に留めた和文英訳などの翻訳で、音声翻訳の一部にも使われています。Google翻訳や音声翻訳のアプリであるNICTを代表とした機械翻訳は近年精度が上がっており、自然言語処理(NLP)がより高度になっていることを象徴しているといえますよね。しかし、人間のように文の意味を理解して翻訳することはまだまだできず、発展途上ともいえます。

かな漢字文字変換

スマホなどでSimejiのようなかな漢字文字変換アプリを使っている方も多いことでしょう。Simejiのようなアプリでは、かな文字を漢字の混じる文字に変換する際に自然言語処理を使用しています。これまでの変換アプリより高度な処理がおこなわれ、ユーザが求めているような結果を提示することが可能です。

対話システム

対話システムとは、Apple社のSiriやマイクロソフト社のりんなのようにコミュニケーションを楽しめるソフトウェアです。コンピュータとの対話を楽しんだり、製品やサービスに対する質問への応対に使われています。

ここに自然言語処理(NLP)を導入し、より人間の思考をソフトウェアに理解させる取り組みが動いているとのこと。まだまだ発展途上で、より高度なシステム作りが期待されているので、今後ますます人間との対話に近いものとなるでしょう。

テキストマイニング

テキストマイニングとは、自由な形式で書かれた文章を分析し、新たな情報を抽出する手法です。未知の情報の探索や文書の分類をテキストマイニングではおこない、SNSでの口コミやアンケートの自由回答欄に書かれている内容の分類に用いられることがあります。

このように自然言語処理(NLP)はさまざまな分野で活躍を見せて、今後ますます発展するに違いありません。

ところで、自然言語処理(NLP)の開発をしたい人は、プログラミング、とくにAI(人工知能)で頻繁に使われるPythonではどのように自然言語処理を実現しているのか気になりますよね。そこで、自然言語処理でよく使われるPythonライブラリを紹介します。

自然言語処理(NLP)のためのPythonライブラリ

翻訳のイメージ
自然言語処理(NLP)をPythonでおこなうためのライブラリは豊富に存在し、さまざまなものをさまざまな環境や用途で使うことができます。主要なライブラリは次の通りです。

GiNZA

GiNZA日本語の自然言語処理オープンソースライブラリで、株式会社リクルートのAI研究機関であるMegagon Labsと国立国語研究所が共同で開発しました。GiNZAのライブラリは、spaCyという自然言語処理フレームワーク(土台となるソフトウェア)を用いて開発されています。形態素解析や文章要約に用いることが可能です。

MeCab

MeCabは京都大学情報学研究科と日本電信電話株式会社の共同研究によって開発されたオープンソースの形態素解析エンジンで、日本語の形態素解析エンジンとしてもっとも有名です。一行一文として形態素解析をする、わかち書き(言葉の区切りに空白を入れる書き方)をする、出力フォーマットを変更する、などを基本的な使い方としており、文字コードの変更や未知語の推定もおこなうことができます。また、他の形態素解析エンジンでよりも素早く分析できるのもポイント。

JUMAN++

JUMAN++は京都大学大学院情報学研究科の黒橋・村脇研究室が開発した形態素解析システムで、従来の形態素解析システムより単語の並びの意味的自然さを意識した解析が可能です。MeCabに比べると速度は劣りますが、話し言葉や表記ゆれに強く、エラー率の低い高精度な解析ができます。

Janome

Janomeは他のライブラリに依存せずに使える形態素解析ライブラリで、手軽に使えるという特徴を持っています。MeCabのデフォルトシステム辞書を使用しているため、解析結果の精度はMeCabと同等レベルになります。主に数百文字程度の短い文章を対象にした場合や、形態素解析がどんなものかやってみたい場合にはJanomeで十分力を発揮するでしょう。

StanfordNLP

StanfordNLPはスタンフォード大学の自然言語処理グループが提供するPythonで可能な自然言語処理のパッケージで、日本語にも対応しています。形態素解析や構文解析が可能です。

このように、Pythonの自然言語処理(NLP)ライブラリはさまざまなものがあり、精度や速度に応じて使い分けられています。

ここまで自然言語処理(NLP)の用途やライブラリについて解説をしましたが、実際に自然言語処理(NLP)をしてみたいところ。そこで最後にAI(人工知能)や機械学習を通じて自然言語処理(NLP)をやってみたい入門者におすすめの書籍を紹介します。

自然言語処理(NLP)に関するAI・機械学習を入門したい人におすすめの書籍

本のイメージ
自然言語処理(NLP)に関するAI(人工知能)や機械学習、ディープラーニングを勉強するための書籍は数多くありますが、とくに入門者におすすめなのは次の通りです。

自然言語処理〔改訂版〕(放送大学教育振興会)

自然言語処理(NLP)の実装のための書籍ではなく、概要を掴み基礎知識を付けるための書籍で、歴史からニューラルネットワークのような最先端の技術までわかりやすくまとまっているのが特徴です。主だった数式についてもしっかりと解説されており、自然言語処理(NLP)の教科書として「自然言語処理」は非常に優秀でしょう。

ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装(オライリージャパン)・ゼロから作るDeep Learning 2 ――自然言語処理編(オライリージャパン)

「ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装」は自然言語処理を直接取り扱ったものではありませんが、これからディープラーニングを自然言語処理(NLP)に用いていく以上、勉強に使っておいて損はしない一冊です。そして何より、「ゼロから作るDeep Learning 2 ――自然言語処理編」で勉強する下地となる知識や技術を身につけることができます。外部のライブラリを用いず、まさに「ゼロ」から作ることでディープラーニングへの理解を深めるという点が特徴です。

「ゼロから作るDeep Learning 2 ――自然言語処理編」では自然言語処理(NLP)に焦点を当ててディープラーニングの勉強をする一冊になります。「ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装」と同様「ゼロ」から作り、ディープラーニングと自然言語処理の最先端の技術を実装レベルで習得できる一冊でしょう。

現場で使える!Python自然言語処理入門(翔泳社)

自然言語処理について勉強したい理工系の学生やエンジニア向けの一冊で、自然言語処理の概念がわかりやすく解説されています。自然言語処理でよく使われるIBM Cloud(クラウドの一種)や商用サービスのIBM Watson(IBMの手がけたAI(人工知能))の話が多いのが特徴です。無償で公開されているオープンソースソフトウェアに関する話題も言及しています。

機械学習・深層学習による自然言語処理入門(マイナビ出版)

前半が機械学習、後半がディープラーニングに関する内容となり、対象となる読者は何らかのプログラミング言語を使ったことのある開発者のうち、今まで自然言語処理を学んだことのない人です。理論よりは実装寄りの内容となっており、Pythonを使って実装しながら理解する形式となっています。

まとめ
さて、今回は自然言語処理(NLP)について初心者にもわかりやすく解説しました。自然言語処理とは、日本語や英語のように私たちが日常的に使う言語のことで、あいまいさが存在します。このあいまいさが残る自然言語をコンピュータで扱う技術が自然言語処理(NLP)で、次のような工程からなります。

  • 形態素解析:自然言語の文を形態素まで解析する
  • 構文解析(係り受け解析):分解した形態素の関係性を解析する
  • 意味解析:正しく意味内容を解析する
  • 文脈解析:文同士の関係を解析する

自然言語処理(NLP)でできることの主なものは次の通りでした。

  • 検索エンジン:多様で複雑になった検索クエリ(検索する文字列や文)を分析し、ユーザが求めているだろう検索結果を提示する技術
  • 機械翻訳:文の意味解釈の差を最小限にし、ぶれのない翻訳技術
  • かな漢字文字変換:かな文字をユーザの意図通りにかな文字と漢字の混じった文に変換する技術
  • 対話システム:ユーザとソフトウェアをテキストや音声で対話させる技術
  • テキストマイニング:文章から新たな知見を得る分析技術

自然言語処理(NLP)に使われるPythonライブラリは次のようなものがありました。

  • GiNZA:日本語の自然言語処理オープンソースライブラリ。形態素解析や文章要約に用いることが可能。
  • MeCab:オープンソースの形態素解析エンジン。日本語の形態素解析エンジンとしてもっとも有名なもので、形態素解析やわかち書きができる。
  • JUMAN++:従来の形態素解析システムより単語の並びの意味的自然さを意識した解析が可能。MeCabに比べると速度は劣るものの、エラー率の低い高精度な解析が可能。
  • Janome:他のライブラリに依存せずに使える。解析結果の精度はMeCabのそれと同等になると見込まれ、速度に関してはMeCabより10倍程度遅いと考えられる。
  • StanfordNLP:スタンフォード大学の自然言語処理のパッケージで、日本語にも対応。形態素解析や構文解析が可能。

自然言語学習(NLP)とAI(人工知能)や機械学習と関連した入門書はいくつかありますが、次のものを読むと良いでしょう。

  • 自然言語処理〔改訂版〕(放送大学教育振興会):自然言語処理(NLP)の実装寄りも、概要や基礎知識を付けたい人向けの書籍。
  • ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装(オライリージャパン)、ゼロから作るDeep Learning 2 ――自然言語処理編(オライリージャパン):ディープラーニングを自然言語処理(NLP)に用いていくに当たって必読の2冊。「ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装」でディープラーニングの基礎を学び、「ゼロから作るDeep Learning 2 ――自然言語処理編」で自然言語処理(NLP)への応用を学ぶ流れ。
  • 現場で使える!Python自然言語処理入門(翔泳社): IBM CloudやIBM Watsonを使う予定の人にとくにおすすめ。
  • 機械学習・深層学習による自然言語処理入門(マイナビ出版):理論は一旦置いといて、実装をしたいというエンジニアにおすすめ。

自然言語処理(NLP)は奥の深い技術で、まだまだ発展途上です。この記事を足掛かりに自然言語処理(NLP)について更に知識や技術を深めましょう。

参考文献
今さら聞けない「自然言語処理(NLP)」とは?
自然言語処理(NLP)とは | 意味・仕組み・活用事例・今後の課題を解説
【事例付き】自然言語処理とは!仕組みやライブラリを解説
BERTとは?Googleの最新アップデートと対策方法について
Googleが導入したBERTとは?誰でもわかるBERTの特徴を解説
徹底解説!自動翻訳と機械翻訳の違いとは
Google翻訳はなぜ話題に?機械翻訳は万能?
対話システムを構成する2つの仕組みと、フレームワークとは?
テキストマイニングとは | 自然言語処理・種類と活用法・おすすめツール4選
リクルートのAI研究機関、国立国語研究所との共同研究成果を用いた日本語の自然言語処理ライブラリ「GiNZA」を公開
日本語NLPライブラリGiNZAのすゝめ
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
PythonでMeCabを利用する方法を現役エンジニアが解説【初心者向け】
MeCabより高精度?RNNLMの形態素解析器JUMAN++
新形態素解析器JUMAN++を触ってみたけど思ったより高精度でMeCabから乗り換えようかと思った話
Janome v0.3 documentation (ja)
Python, Janomeで日本語の形態素解析、分かち書き(単語分割)
StanfordNLP 0.2.0 – Python NLP Library for Many Human Languages
https://dev.classmethod.jp/articles/python-stanford-nlp/
PythonによるStanfordNLP入門
自然言語処理の独学でおすすめの本・書籍4冊【初学者OK】
自然言語処理を学びたい人におすすめの良書、10冊はこちらです
東京都立大学 自然言語処理研究室(小町研)
トップへ戻る
タイトルとURLをコピーしました