サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
kento1109.hatenablog.com
今日は以下の論文についてまとめます。 BERTによる日本語構文解析の精度向上(柴田ら 2019) 昨年の「言語処理学会」で発表されたものです。 日本語で分かりやすいのですが、整理もかねてまとめます。 BERT自体の解説はググれば分かりやすい説明があります。 また、以前にまとめましたので、詳細は割愛します。 kento1109.hatenablog.com なにがスゴい? 「BERTを使って既存の構文解析器の精度を大幅に上回った」という点です。 ここでは、既存の構文解析器として「KNP, Cabocha, J.depP」と比較しています。 従来Shift-Reduce 法やチャンキング段階適用により、係り受け関係を特定する手法が知られています。 「SVMを用いた 統計的日本語係り受け解析」の手法では「係り元(A)」と「係り先(B)」の素性を利用して、 「(A)が(B)に係るか」という二値分類
はじめに 前回はfine tuningということで、GLUEタスクのSST-2に取り組みました。 kento1109.hatenablog.com また、GLUEタスクのfine tuningを実行するためのスクリプト(run_glue.py )のコードを眺めました。 今回は、CoNLL(NERの共通タスク)のためのfine tuningにチャレンジします。 BERT-NERですが、以下の内容が参考となりました。 https://www.depends-on-the-definition.com/named-entity-recognition-with-bert/ BERT-NER/run_ner.py at experiment · kamalkraj/BERT-NER · GitHub GitHub - kyzhouhzau/BERT-NER: Use Google's BERT f
今更ながら、pytorch-transformersを触ってみます。 このライブラリはドキュメントが充実していて、とても親切です。 なので、今回はドキュメントに基づいて触ってみただけの備忘録です。 以下、有名どころのBERTで試してます。 詳しいことはここなどを参照してください。 huggingface.co はじめに 以下で、入手できます。簡単です。 pip install pytorch-transformersインストールしたら、以下でimportします。 import torch from pytorch_transformers import BertTokenizer, BertModel pytorch-transformersの基本は以下の3つのクラスで構成されます。 model classes モデル本体 configuration classes モデルのパラメータを設
はじめに 前回はの入門ということで、QuikStartの内容を触ってみました。 kento1109.hatenablog.com 前回は英語でしたが、日本語のテキストを扱う場合はそのまま使うことは出来ません。 ということで、今回はpytorch-transformersで日本語のテキストを扱ってみようと思います。 Pretrained model 日本語でのPretrained modelとしては、京大の黒橋・河原研究室が公開しているものが有名です。 BERT日本語Pretrainedモデル - KUROHASHI-KAWAHARA LAB このリソースを利用した既存のやってみたシリーズとしては以下などが参考となります。 Pytorchで日本語のbert学習済みモデルを動かすまで - Qiita pytorchでBERTの日本語学習済みモデルを利用する - 文章埋め込み編 - Out-of
やりたいこと 事前にWord2Vecなどで学習した分散表現をネットワークの重みとして用いる。 結論としては、Embedding層の重みにテンソル型に変換した分散表現行列をセットするだけで良かった。 備忘録としてコードを残しておく。 (ここでは、Googleの学習済みの分散表現ベクトルを用いた。) これのハンドリングが良く分からったので、いったんgensimで読み込んだ。 import torch import torch.nn as nn import numpy as np import gensim model_dir = './GoogleNews-vectors-negative300.bin' model = gensim.models.KeyedVectors.load_word2vec_format(model_dir, binary=True) syn0にnumpy.nda
今日も少し前に流行ったモデルの復習。 今日はBERTに関してまとめる。 https://wikiwiki.jp/animegameex/%E3%83%90%E3%83%BC%E3%83%88 これもまた既に素晴らしいまとめがあるのでそちらを参考にしながら復習した。 jalammar.github.io towardsdatascience.com BERTとは 「Bidirectional Encoder Representations from Transformers」の略。 BERT自体は事前学習モデルではあるが、これを利用することで様々なタスクのSOTAを達成している。 「A new era of NLP」なんて言われるほど、色々なところで騒がれている。 さて、以下の内容としては BERTのモデルについて どうやって目的のタスクに適用するか の2つを中心にまとめようと思う。 ※きっ
はじめに 前にgensimによる単語の類似度について書きました。 kento1109.hatenablog.com この手の記事はググればいっぱい出てくるので、gensimでモデルを作って単語の類似度を計算するのは難しくないと思います。 ただ、LSTMなどで学習した後の単語の分散表現の類似度を測定したい場合に、そのためだけにわざわざgensimのモデルを構築するのは面倒ですし、無駄かなと思います。 ある単語と別の単語の類似度を測定するだけの場合、そのベクトル同士で測定すれば良いですが、gensimのmost_similar関数のような「ある単語のベクトルに近いベクトルの単語をN個取ってくる」機能を実現する場合は少し実装が必要です。 1単語ずつループで回してコサイン類似度を計算する、なんてしていては計算速度が遅くなります。 そこで、scipyとnumpyのライブラリを活用した関数を考えました
機械学習の分類問題は、識別モデルと生成モデルに大別される。 (識別関数によるアプローチもあるがここでは言及しない。) 自分の頭の整理のために、これらの違いをまとめる。 識別モデル(Discriminative model) サンプルデータがクラスに分類する条件付き確率を直接モデル化する。 分類時は、を選択する。 分類問題で求めたいのは、個々のデータがどのクラスに所属するかであり、識別モデルは所属確率を直接求めるモデルである。この考え方は最もシンプルで理にかなっており、機械学習で分類問題を解く場合、識別モデルによるアプローチが一般的な手法となっている。 生成モデル(Generative models) 観測データを生成する確率分布を想定し、観測データからその確率分布を推定する方法。 識別モデルと同様に条件付き確率をモデル化するがその方法が異なる。 (生成モデルでは直接これをモデル化しない。)
はじめに Pytorchの処理で学習済みの単語分散表現(Word2Vec, Glove等)を使いたい場合がある。 直接、Embedding層にセットする場合が以下の方法で問題ない。 kento1109.hatenablog.com 前処理として、torchtextを利用する場合はそうはいかない。 torchtextはコーパスから単語の辞書作成、インデックス化、バッチ化、パディングなど色々と便利なことが出来る。この利便性を享受するためには、torchtextで作成する辞書の単語とインデックスのマッピング情報を利用しなければならない。 つまり、このマッピング情報に従い、学習済みの単語分散ベクトルもマッピングさせる必要がある。 調べたところ、fasttext,Gloveなどの単語分散表現をロードする方法と、独自で作成した単語分散表現をベクトルにセットする方法の2つのがあった。 事前準備 まず、テ
はじめに 今回は隠れマルコフモデルをStanで実装する。 隠れマルコフモデル自体は以前に書いた。 kento1109.hatenablog.com 今回は教師ありモデルを考える。 教師あり「隠れ状態」が既知のモデル。 前回の例で考えると、「晴れ→雨」などの遷移状態が与えられているモデル。 その状態から、「遷移行列」と「出力行列」を推定する。 モデル コードは以下のようにシンプル。 data { int<lower=1> K; // カテゴリーの数 int<lower=1> V; // 単語(word)の数 int<lower=0> T; // 時点の数 int<lower=1,upper=V> w[T]; // 単語(word) int<lower=1,upper=K> z[T]; // カテゴリー vector<lower=0>[K] alpha; // 推移(transit)確率の事前
隠れマルコフモデル(HMM) 直前の結果のみから次の結果が確率的に求まるという「マルコフ性」を仮定して、事象をモデル化。 隠れマルコフモデル(以降HMM)では、過去の状態の遷移は不明(隠れている)な状態であり、その状態の出力結果より事象をモデル化する。 例題 下記ブログの例が分かりやすかったので、引用させて頂く。 satomacoto: 隠れマルコフモデルの例 ある友達が遠くに住んでいて、毎日何をしたかをあなたに電話で話します。友達は「散歩」「買物」「掃除」の3つのことにしか関心がありません。友達が何をするかはもっぱらその日の天気で決めます。あなたは友達が住んでいるところの天気の明確な情報は持っていません。 友人が初日に「散歩」二日目に「買い物」三日目に「掃除」という順で行動したら、その観測結果が得られる確率はいくらでしょうか、そして、このような観測結果が得られたとき三日間の天気はどのよう
Doc2Vecとは Doc2Vecは、任意の長さの文書をベクトル化する技術。 文書やテキストの分散表現を獲得することができる。 *ベクトル同士の類似度を測定して、文書分類や似た文書を探すことができる。 Word2VecのCBoWにおける入力は、単語をone-hot表現した単語IDだけだったが、 Doc2Vecは、単語IDにパラグラフIDを付加した情報を入力とする。 下図のイメージ 下記、論文より抜粋 [1405.4053] Distributed Representations of Sentences and Documents 日本語での要約記事としてはこちらが分かりやすい。 【論文紹介】Distributed Representations of Sentences and Documents from Tomofumi Yoshida www.slideshare.net Word
このページを最初にブックマークしてみませんか?
『機械学習・自然言語処理の勉強メモ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く