自然言語をコンピュータで処理する自然言語処理技術について。
目次
テキストデータ処理
- 「単語n-gram」→文字列を複数個の単語を並べたものとして表現したもの
※文字であれば”文字gram”、音声であれば”音素gram” - n=1→「ユニグラム(uni-gram)」
n=2→「バイグラム(bi-gram)」
n=3→「トライグラム(tri-gram)」 - 「Bag-of-Words(BoW)」→文や文章を、そこに出現する単語の集合として表現
- 「Bag-of-n-grams」→n-gramとBoWを組み合わせたもの
- ID化→ワンホットベクトルへと変換(単語も数値列(ベクトル)として入力)
※BoWとして表現された文章も、各次元の値がその次元に相当する単語の文章中の出現頻度である1つのベクトルとして表現できる - 「TF-IDF」→単語の重要度のようなものを計算する手法
(TFとIDFという2つの値を掛け合わせたもの)
※TF→1つの文章内での単語の出現割合(単語の頻度/文章内の全単語数)
※IDF→ある単語が出現する文章の割合(ある単語が出現する文章の数/全文章数)の逆数を取り、対数を取ったもの
単語の埋め込み
- 「局所表現」→ワンホットベクトルは値が0か1しかなく、情報が疎であり、非常に高次元な単語表現
→単語の同士の意味の近さを考慮することができない
→局所表現を連続的で、情報が密で、次元数の低いベクトルに変換する - 「分散表現(distributed representation)」「単語埋め込み(word embedding)」
→単語を分散表現で表すことで、ベクトル間の距離や位置関係から単語の意味を表現できる - 「word2vec」(単語の分散表現を得る代表的な手法)
→「分布仮説」(単語の意味はその周辺の単語によって決まる)をニューラルネットワークで実現したもの
①「スキップグラム(skip-gram)」→ある単語から周辺の単語を予測するモデル
②「CBOW(Continuous Bag-of-Words)」→周辺の単語からある単語を予測するモデル
→いずれも、中間層の表現をその単語の意味表現とみる - 「主成分分析(PCA:Principal Component Analysis)」を用いて、2次元に「次元圧縮(dimensionality reduction)」した値を表示
- 「fastText」→word2vecの延長線上にあるライブラリで、単語埋め込みを学習する際、単語を構成する部分文字列の情報も含める
→訓練データには存在しない単語であっても単語埋め込みを計算できる/活用する単語の語幹と語尾を分けて考慮できる
→word2vecやfastTextで得られる分散表現は各単語1つだけ - 「ELMo(Embeddings from Language Models)」→文脈を考慮した分散表現を得る手法
(その単語が出現した文の他の単語の情報から、その文において適切な意味となる分散表現を得ることができる)