YoJlのポケット

勉強したことや学んだことを記録しています。

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

自然言語処理(Natural Language Processing)とは?

1. 自然言語とは

私たちが普段話している言葉のことです。
なぜ、わざわざ「自然」を付けるかというと、
ただ単純に、プログラミング言語などの形式言語と区別するためです。

2. 自然言語処理とは

私たちが普段話している言葉をコンピュータに処理させることです。

3. 自然言語処理の技術について

理論的には、言葉があるところには必ず自然言語処理を活用することができます。
なぜ、「理論的には」と言うというと、
機械に言語を理解させるにはデータが必要なためです。
要するに、データ化されていない言葉は自然言語処理できません。
当然と言えば、当然ですが...

また、これだけPCのスペックが向上したとはいえ、
何億のデータを処理させ、様々なタスクに適用させるには、
相当な学習時間(1ヵ月以上)がかかります。
それを当たり前のようにやっている人間の脳みそって...

要するに、
人間は、経験的に自然言語を理解できます。
しかし、コンピュータにはそれができません。
そのため、自然言語をコンピュータに処理させるための様々な技術が必要です。
以下でその技術概要を見ていきましょう。

4. 主な自然言語処理の流れ

文書分類にしろ、文書要約にしろ、機械翻訳にしろ、質問応答にしろ、以下のプロセスを踏みます。

f:id:YoJl:20201209221133p:plain:w400
自然言語処理の流れ

  • 文書入力
    まず、文書入力を行います。

    ここで入力される文書を、一般的にはcorpus(コーパス)と呼びますが、
    そのままsentenceやtextなどと呼ぶこともあります。

  • 単語分解
    その次に、文書を単語分解(もしくは、n-gram分解)を行い、分かち書きにします。

    分かち書きとは、文を単語ごと(もしくは、n個ずつ)スペースを空けて表示することです。

    例えば、
    corpus:「私は犬が好きです。」→ 「私 は 犬 が 好き です。」
    となります。

  • 意味解析
    このように分かち書きされた文書を意味解析していきます。

    代表的な手法はベクトル空間を用いた意味解析です。単語(文書)をベクトル空間(n次元)に持っていき、
    単語(文書)間の距離で単語(文書)の意味をコンピュータに理解させます。

余談ですが、、、 ここの意味解析のアルゴリズムは、その後の応用技術(文書分類・文書要約・機械翻訳・質問応答)の精度に大きく関わっていきます。

そのため、もし、あなたが意味解析のアルゴリズムを開発し、しかも精度向上に繋がるとなったら、 自然言語処理会であなたの名前を知らない人はいなくなる、と言っても過言ではないでしょう。

  • 応用技術 (文書分類・文書要約・機械翻訳・質問応答)
    意味解析されたものを機械に入力し、
    世の中にある様々なタスクに落とし込んでいきます。

このように、様々な要素技術を用いて、自然言語処理は成り立っています。

また、今回は、概要のみなので、
実際は、単語分解一つ取ってもすごく深い世界が待っています。
例えば、
「ツイートする」というワードがあったとして、
「ツイート する」と「ツイートする」のどちらだと思いますか?
もしくは、
「巣立つ」というワードは、
「巣 立つ」、「巣立つ」のどちらだと思いますか?

このように、
自然言語処理はあやふやなところが多い分、
画像処理や音声認識とは異なり、課題や限界がある分野です。

だからこそ面白いのですが、、、

以上で、自然言語処理の概要は終わりです。

もし、これから自然言語処理を行う方がいらしたら、
今後、BERT-Finetuningぐらいまで記録に残していく予定ですのでよろしくお願いします。

p.s. 一昨日、論文を無事書き終えました。
約一年間よく自分頑張った...!!これで卒業できるぞ!!
ちなみに、研究内容はBERT-Finetuningによるツイート分類です。
SCDVもやったよ!


参考文献

自然言語処理(wiki)