文章ベクトル化とは
初めまして、みずぺーといいます。
このnoteを機に初めて私を知った方のために、箇条書きで自己紹介を記述します。
年齢:28歳
出身:長崎
大学:中堅国立大学
専門:河川、河川計画、河道計画、河川環境
IT系の資格:R5.4基本情報技術者試験合格💮、R5.5G資格
本日は自然言語処理を行ううえで必須である言語のベクトル化の方法について解説します。
文章のベクトル化
自然言語処理は文章をコンピューターが読み取れるように変換を行うことです。これは普段使うGoogleやアレクサにも使用されている。
つまりは人間の言葉を機械が理解できるようにするルールづくりということです。
そのためには単語理解と文脈理解が必要辞書が必要となります。
ベクトル化の精度を決めるのは学習データがどれだけリッチでたくさんのデータを読み込ませたかに依存します。
以下にベクトル処理を行うために必要なことを記載します。
前処理1:クリーニング処理
前処理2:形態素解析
前処理3:正規化
前処理4:ストップワードの除去
ベクトル化1:単語のベクトル表現
ベクトル化2:応用処理の実施
①Bag of words
1.TF-IDF
2.n-gram
3.LSI
4.LDA
②分散表現
1.word2vec
2.Retrofitting
3.Glove
4.FastText
5.BERT
一つづつ解説します。
前処理①:クリーニング処理
インターネット上に表示されるコードを削除
前処理②:形態素解析
文章を単語単位で区切りそれぞれに対して情報を付与する
前処理③:正規化
表記の揺れを統一する
前処理④:ストップワードの除去
自然言語などで活用できないなどの理由で除去される単語のこと。
Bag of wards
文章の並びは気にせず、どれだけ文章中に単語が出現したのかを数値化して重要かどうかを判断します。
しかしそれでは大きく二つの問題がおきます。
どの文章にも出てくる単語「です」「ます」等は高くなってしまう
「本当に綺麗な」なのか、「少し綺麗な」なのか
そしてBag of wordsの具体的な手法が
1.TF-IDF
2.n-gram
3.LSI
4.LDA
この4つとなります。
TF-IDF
Term-Frequency
これはBag of wordsの定義通り、どのくらいの頻度で出てきたのかを表しています。
Inverse Document Frequency
こちらが肝となっております。
ある単語が全文章中のどの文章で出てきたのかで数値が変わってきます。
どの文章にも出てくる単語「です」「ます」等は高くなってしまう
先程1つ目に挙がったこちらの接続語はTerm Frequencyでは大きいものの、IDFにおいては小さくなります。
それは全文章で出てくるため重要と判断できないためです。
分散表現
分散表現とは一つの単語を低次元のベクトル空間に入れ込むことです。
分散表現としては50〜768次元を利用します。
word2vec
word2vecは分散表現の手法の一つであり、「単語の意味とはその周辺に現れる単語で形成される」という仮説のもとに作られてます。
2層のニューラルネットワークで構成されているにも関わらず、高い精度を残したことで有名になりました。
自然言語処理の今後
このように
単語を重み付けしてベクトル空間を作成する処理である、Bag of words
単語を近しい意味から作成する分散表現
これらを使用しても解決できない課題があり、それが、前後の文脈を意識したベクトル化手法です。
あくまで数と類似度というどちらも相対で計算しているので絶対的な物差しがありませんでした。
そこで登場したのがBERTです。
BERT
単語の中には、異なる文脈上で異なる意味となる場合がありますが、BERTは文脈を考慮することで、「Apple」がりんごを意味する表現に変換するのか、テクノロジー企業を指す表現に変換するのかを決定することができます。
BERTはきわめて高い単語の意味表現を獲得できることから、多くの自然言語処理のタスクにおいて高い性能を発揮しています。
自然言語処理の活用事例
かな漢字変換
機械翻訳
対話システム
チャットボット
これらの中に自然言語処理は利用されています。
前後の文脈や単語から、変換したり、絵文字をピックアップしたりすることができますよね。
最後に
いかがでしたでしょうか。
自然言語処理におけるベクトル化は必ず行う道であり、理解しておくべき事項となります。
私はこれまで自然言語処理に関して記事を書いてきているので、是非ご覧いただければと思います。
ありがとうございました!
この記事が気に入ったらサポートをしてみませんか?