とあるエンジニアの作業ブログ

Analytics Python コンサル ビジネス書要約 自然言語処理

様々な言語モデルを箇条書きで解説

投稿日:

本やWebで調べた自然言語処理における言語モデルやアルゴリズムに関する知識を箇条書きまとめ。

文章の確からしさ 5-gram言語モデル(n-gram言語モデル)

  • n-gram言語モデルは単語の出現確率がその直前のn-1個の単語で決まる
  • 例えば、「私は本を買った」の出現確率は以下で求められる。
    $$P(私は本を買った) = P(私|文頭) \times P(は|私) \times P(本|は) \times P(を|本) \times P(買った|を)$$
  • 日本語のある種の傾向を捉えている。「私」の後に主題を表す「は」は現れやすいし、「本」は物なので対象を表す「を」が続きやすいといった具合
  • 実際は、大規模なコーパス(事前に形態素解析されたもの)から直前のn単語を考慮した場合の語の出現確率が計算される
  • 文章の確からしさがわかれば、音声認識において「私和音多かった。」と「私は本を買った」のどちらが確からしいのか判定できる
  • 5-gramはGoogleが大規模なWebコーパスから計算したもの。英語5-gramや日本語5-gramなどが有効であることが知られている
  • ちなみに、この直近n回を考慮するという性質をマルコフ性と呼び、n階マルコフモデルという

文書中の語の重要度 TF-IDF法

  • TF(Term Frequency) ··· 文書中における語の出現頻度
  • IDF(逆文書頻度:Inverted Document Frequency) ··· 文章が「言語 問題」である場合、”言語”の方が検索においてより重要度が高いと考えられる。このような違いを表現する尺度のこと。
  • TF-IDF法 ··· ある語の文書中の重要度をTFとIDFの積で求める方法

最新の汎用言語表現モデル BERT

  • 2018年10月にGoogleが発表
  • SOTA(State of the Art)で最高得点を出し注目を浴びている
  • 事前学習済のモデルに対してファインチューニング(最終層の入れ替え+パラメタチューニング)で新たなモデルを生成
  • 従来は単語の組合せ(n-gram)を特徴量として用いてきたが、組合せの種類が膨大になり十分な訓練サンプルが確保できなくなるなどの問題があった
  • 「表現学習」は特徴量を自動的に学習させる手法。大規模なデータを元に表現学習を行うと汎用的な特徴量抽出器となることが期待される(事前学習:Pre-Training
  • 一般的な依存関係が事前に与えられていれば、あるタスクを解くために必要な特徴が入力に出現していなくとも事後学習でそれを補うことができる
  • BERTは大規模コーパスから事前学習させたモデルに対して、タスクごとに事後学習を行わせる
  • あらゆる自然言語処理タスクはこのBERTを土台にして取り組めるのではという機運が高まっている
  • https://qiita.com/Kosuke-Szk/items/4b74b5cce84f423b7125
  • https://qiita.com/neonsk/items/27424d6122e00fe632b0

-Analytics, Python, コンサル, ビジネス書要約, 自然言語処理
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

Python3.7.1で文章間の類似度判定

python3.7.1でMeCabとWord2Vecを使い文章間の類似度判定を行います。 結構類似の記事があったんですが、pythonのバージョン互換の問題かなんかでそのままだと動かなかったので自分な …

MacのPython環境最適解!? 〜pyenv+venv+pipenvでPython環境構築〜

Macにpyenv+venvでPython環境構築をした時のメモ。 Anacondaを使うか迷ったが、色々調べたところAnacondaは環境を破壊するとか、Homebrewとコンフリクトするとか色々問 …

kintoneで予算管理アプリを作るまで 〜ユーザー・権限管理編〜

仕事でkintoneを使って予算管理を行えないか!?的な話に巻き込まれた。 kintoneなんて使ったこともないし、今後も使うつもりはないが、一応フィジビリティしたのでメモ。 ユーザ・権限管理とアプリ …

Kubernetes入門 ~Kubernetes完全ガイドを読んで~

Kubernetesを学ばないとだんだん話についていけなくなってきたので止む無く勉強を始めた。 とりあえずKubernetes完全ガイドという、今のところ日本語だと一番良いと聞いたのでそいつで勉強。 …

【初心者向け】Pythonで初めてのスクレイピング

Python学習中のためスクレイピングをやってみる。 すでに山ほど参考サイトがあるが、以下がソースも短くライトそうなので拝借し、本家はBeautifulSoupを使っているところをpyqueryに改造 …