自然言語処理
定義
自然言語処理natural language processing, NLPとは、コンピュータが人間の言語を理解し、解釈し、処理できるようにするための技術、またはそれを研究する学問を意味する。一般に英語の略称であるNLPと呼ばれる。
説明1
自然言語natural languageとは、韓国語や英語のように人が日常的に用いる言語を指し、プログラミング言語のように厳密な規則に従って人工的に設計された形式言語formal languageと対比される概念である。自然言語処理の代表的な課題には次のようなものがある。
- 機械翻訳machine translation: ある言語の文を別の言語の文に移す作業
- テキスト分類text classification: 文書を定められたカテゴリに分ける作業。スパムメールのフィルタリング、感情分析などがこれに属する。
- 質問応答question answering: 質問を入力として受け取り、それに対する答えを出す作業
- 言語モデリングlanguage modeling: 与えられた文脈の次に来る単語の確率分布を推定する作業。大規模言語モデルlarge language model, LLMの根幹となる。
自然言語が扱いにくい理由は、それが定まった枠を持たず長さがまちまちな非定型データであり、文字と単語という離散的な記号の並びであるため、それ自体では足し算や掛け算のような演算が定義されないからである。ニューラルネットワークは結局ベクトルを入力として受け取りベクトルを出力する関数であるため、ニューラルネットワークで自然言語を扱うにはまずテキストを数値データに変換しなければならない。そのため今日の自然言語処理は概ね次のパイプラインに従う。
$$ \text{텍스트} \overset{\text{토큰화}}{\longrightarrow} \text{토큰열} \overset{\text{임베딩}}{\longrightarrow} \mathbb{R}^{d}\text{의 벡터열} \overset{\text{모델}}{\longrightarrow} \text{출력} $$
まずテキストをトークンtokenと呼ばれる小さな単位に分割し、各トークンを埋め込みembeddingを通じてベクトルに変換する。こうして得られたベクトルの列をリカレントニューラルネットワークやトランスフォーマーのようなモデルに入力し、翻訳文、分類結果、次の単語の確率分布など、望む出力を得る。
歴史的に初期の自然言語処理は、言語学者が手作業で作成した文法規則と辞書に依存する規則ベースrule-basedの方法が主流であった。1990年代に入ると、コーパスから単語の出現確率を推定する統計的statistical方法がこれを置き換え、2010年代にはリカレントニューラルネットワーク、LSTMなどニューラルネットワークベースの機械翻訳が良い成果を出し、標準として定着した。その後、アテンションからなるアーキテクチャであるトランスフォーマー(2017)が登場し、これを巨大なコーパスで学習させた大規模言語モデルが現在(2026年時点)自然言語処理の中心にある。
