🗣️

自然言語処理への第一歩

2022/05/12に公開

はじめに

自然言語処理は、人が使っている言葉をコンピュータで分析するもので、NLP(Natural Language Processing)とも呼ばれています。

検索エンジンなど身近なところでも使われており、「近くのレストラン」など文章で検索しても意味を理解して結果を表示してくれます。

最近では、マネージドサービスやOSSでも自然言語処理を簡単に使用することができるようになっています。そこで、今回は自然言語処理への導入として自然言語処理の概要をまとめていきたいと思います。

自然言語処理とは

自然言語処理は以下の流れで文章を解析します。

1. 形態素解析:文章を最小単位の単語に分割する
2. 構文解析:単語同士の関係性を、つなぎ合わせる
3. 意味解析:辞書を使って単語同士の意味から最適なものを選出する
4. 文脈解析:前後の文章を解析し、文脈を明らかにする

形態素解析

形態素解析は、文章を最小単位の単語のリストに分割します。
「私は記事を書く」という文章は、「私・は・記事・を・書く」という単語にわけられます。
分割された単語(=形態素)はトークンと呼ばれます。

また、このときトークンに、動詞や形容詞といった品詞のタグが割れ当てられます。
品詞タグには以下のようなものがあります。

品詞タグ 意味
ADJ 形容詞
ADP 接置詞
NOUN 名詞
PROPN 固有名詞
PUNCT 句読点
VERB 動詞

「私は記事を書く」は、以下のような品詞タグが振られます

私 PRON(代名詞)
は ADP(接置詞)
記事 NOUN(名詞)
を ADP(接置詞)
書く VERB(動詞)

構文解析

構文解析では、形態素解析で分割したトークン間の依存関係を解析します。
このとき、どういう依存があるかを表した係り受けタグとうものが割れ当てられます。

係り受けタグには以下のようなものがあります。

係り受けタグ 意味
acl 名詞の節修飾語
amod 形容詞修飾語
aux 助動詞
case 格表示
compound 複合名詞
nsubj 主語名詞
obj 目的語
obl 斜格名詞

品詞タグと係り受けタグの一覧は、以下でまとめられていますので、こちらを参照ください。
https://qiita.com/kei_0324/items/400f639b2f185b39a0cf

「私は記事を書く」は、以下のような係り受けタグが振られ、依存関係が表現されます。

意味解析

意味解析は、辞書を使って単語同士の意味を解析し、最適なものを選出します。

例えば、「ナイフで、切ったりんごを食べる」という文を解析してみます。


ナイフは切るという目的で使用されるように解析されました。

次に「フォークで、切ったりんごを食べる」という文を解析してみます。

こちらは、フォークは食べるという目的で使用されるように解析されました。

文脈解析

文脈解析は、複数の文章で形態素解析/構文解析、意味解析を行い、文章間の関係性を解析します。
こちらは、現在研究段階のようです。

ここまで、自然言語処理の概要について記載しました。
次回は、自然言語処理ライブラリのspaCyとGiNZAについて記載し、実際に自然言語処理に触れてみたいと思います。

Discussion