自然言語処理 (NLP)
人間が日常的に使う言語 (自然言語) をコンピュータで処理・理解・生成する技術の総称。形態素解析、構文解析、意味解析、機械翻訳、感情分析などを含む。
自然言語処理 (Natural Language Processing、NLP) は、人間の言語をコンピュータで扱うための技術分野です。「自然言語」とはプログラミング言語のような人工言語に対する概念で、日本語、英語、中国語など、人間が自然に発達させた言語を指します。検索エンジン、音声アシスタント、機械翻訳、チャットボット、スパムフィルターなど、日常的に使うサービスの多くが NLP 技術に支えられています。
NLP の処理は階層的に構成されます。最下層の形態素解析はテキストを単語に分割し品詞を付与します。構文解析は単語間の文法的な関係 (主語-述語、修飾-被修飾) を解析します。意味解析は文の意味を理解し、語義の曖昧性を解消します。談話解析は文を超えた文脈 (指示語の解決、文間の論理関係) を処理します。各層が下位層の結果に依存するため、この構成では形態素解析の精度が全体の品質を左右します。ただしこれは規則や統計に基づく古典的な構成で、現在主流の大規模言語モデルは、こうした段階を明示的に踏まずに入力から出力を直接学習します。それでも階層の区別は、処理のどこで何を取り違えたのかを切り分ける見方として有用です。
日本語の NLP には英語にはない固有の課題があります。第一に、単語間にスペースがないため、単語を数えたり検索用の索引を作ったりするには形態素解析が必要です (大規模言語モデルは形態素とは一致しない部分文字列の単位で入力を区切るため、この工程を持ちません)。第二に、主語の省略が頻繁で、文脈から補う必要があります。第三に、敬語体系が複雑で、同じ意味でも「食べる」「召し上がる」「いただく」のように多様な表現があります。第四に、漢字の読みが文脈依存 (「生」は「なま」「いきる」「うまれる」など) で、読み仮名の推定が困難です。
2017 年の Transformer アーキテクチャの登場以降、NLP は劇的に進化しました。Google が 2018 年に公開した BERT は文脈を考慮した単語表現を学習し、同じ年に始まる GPT シリーズは大規模なテキスト生成を実現しました。この 2 系統は役割が異なります。BERT は入力を読み取る符号化器だけを持つ構成で、それ自体は文章を生成できず、分類や抽出といった目的に合わせて追加学習して使います。指示を与えて文章を書かせる使い方ができるのは GPT 系の生成モデルで、翻訳・要約・質問応答という従来のタスクに加えて、プログラミングや創作のように以前は自然言語処理の範疇外だった領域にも応用が広がりました。
自然言語処理は、文章の量を数える作業にも直接関わります。日本語で「単語数」を数えるには、どこを 1 単語と見るかを決める形態素解析が前提になります。「文数」を数えるには、句点が本当に文末なのか、数値や略語の一部なのかを判定する文境界の検出が必要です。読了時間の見積もりも、単語数と一文の長さをもとに算出します。数えた結果を比べるときは、どの解析器のどの辞書で区切ったのかまで揃えてください。同じ文章でも、解析器や辞書が違えば単語数は変わります。