u++の備忘録

自然言語処理

言語処理100本ノック 2020「89. 事前学習済み言語モデルからの転移学習」

問題文 nlp100.github.io 問題の概要 BERT から転移学習します。この章のこれまでの実装と繋がりがなくなりますが、Transformers ライブラリの Trainer を使います。 import os import datasets import evaluate import numpy as np import pandas as pd fro…

言語処理100本ノック 2020「88. パラメータチューニング」

問題文 nlp100.github.io 問題の概要 何かしらのパラメータをチューニングします。 # ref: https://www.shoeisha.co.jp/book/detail/9784798157184 import re from collections import defaultdict import joblib import pandas as pd import torch from gen…

言語処理100本ノック 2020「87. 確率的勾配降下法によるCNNの学習」

問題文 nlp100.github.io 問題の概要 RNN で確率的勾配降下法を用いて学習した 言語処理100本ノック 2020「82. 確率的勾配降下法による学習」 - u++の備忘録 と同様です。 # ref: https://www.shoeisha.co.jp/book/detail/9784798157184 import re from coll…

言語処理100本ノック 2020「86. 畳み込みニューラルネットワーク (CNN)」

問題文 nlp100.github.io 問題の概要 CNN を実装します。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)のサンプルコードを一部流用しました。 # ref: https://www.shoeisha.co.jp/book/detail…

言語処理100本ノック 2020「85. 双方向RNN・多層化」

問題文 nlp100.github.io 問題の概要 RNN を双方向しました。具体的には bidirectional=True にし、続く層の hidden_size を 2 倍にしています。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)…

言語処理100本ノック 2020「84. 単語ベクトルの導入」

問題文 nlp100.github.io 問題の概要 Google Newsデータセットの学習済み単語ベクトルで単語埋め込みを初期化して学習します。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)のサンプルコード…

言語処理100本ノック 2020「83. ミニバッチ化・GPU上での学習」

問題文 nlp100.github.io 問題の概要 ミニバッチでの処理を追加します。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)のサンプルコードを一部流用しました。 # ref: https://www.shoeisha.co.…

言語処理100本ノック 2020「82. 確率的勾配降下法による学習」

問題文 nlp100.github.io 問題の概要 確率的勾配降下法による学習の処理を追加します。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)のサンプルコードを一部流用しました。 # ref: https://ww…

言語処理100本ノック 2020「81. RNNによる予測」

問題文 nlp100.github.io 問題の概要 RNN を実装します。なお実装時には『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装』(翔泳社)のサンプルコードを一部流用しました。 import re from collections import defaultdict…

言語処理100本ノック 2020「80. ID番号への変換」

問題文 nlp100.github.io 問題の概要 指示通りに愚直に実装します。 from collections import defaultdict import joblib import pandas as pd def text2id(text): return [word2token[word] for word in text.split()] X_train = pd.read_table('ch06/train…

言語処理100本ノック 2020「79. 多層ニューラルネットワーク」

問題文 nlp100.github.io 問題の概要 ネットワークを 3 層に変更しています。 import joblib import matplotlib.pyplot as plt import numpy as np import torch from torch import nn, optim from torch.utils.data import DataLoader, TensorDataset from …

言語処理100本ノック 2020「78. GPU上での学習」

問題文 nlp100.github.io 問題の概要 .to('cuda:0') で GPU に転送します。 import joblib import matplotlib.pyplot as plt import numpy as np import torch from torch import nn, optim from torch.utils.data import DataLoader, TensorDataset from tq…

言語処理100本ノック 2020「77. ミニバッチ化」

問題文 nlp100.github.io 問題の概要 ミニバッチ化の処理を追加しました。 import joblib import matplotlib.pyplot as plt import numpy as np import torch from torch import nn, optim from torch.utils.data import DataLoader, TensorDataset from tqd…

言語処理100本ノック 2020「76. チェックポイント」

問題文 nlp100.github.io 問題の概要 エポックごとにモデルを保存します。 import joblib import matplotlib.pyplot as plt import numpy as np import torch from torch import nn, optim X_train = joblib.load('ch08/X_train.joblib') y_train = joblib.l…

言語処理100本ノック 2020「75. 損失と正解率のプロット」

問題文 nlp100.github.io 問題の概要 損失と正解率をプロットします。 import joblib import matplotlib.pyplot as plt import numpy as np import torch from torch import nn, optim X_train = joblib.load('ch08/X_train.joblib') y_train = joblib.load(…

言語処理100本ノック 2020「74. 正解率の計測」

問題文 nlp100.github.io 問題の概要 正解率を計算します。 import joblib import numpy as np import torch from torch import nn, optim X_train = joblib.load('ch08/X_train.joblib') y_train = joblib.load('ch08/y_train.joblib') X_train = torch.fro…

言語処理100本ノック 2020「73. 確率的勾配降下法による学習」

問題文 nlp100.github.io 問題の概要 確率的勾配降下法で 100 エポック学習します。 import joblib import numpy as np import torch from torch import nn, optim X_train = joblib.load('ch08/X_train.joblib') y_train = joblib.load('ch08/y_train.jobli…

言語処理100本ノック 2020「72. 損失と勾配の計算」

問題文 nlp100.github.io 問題の概要 損失と勾配を計算します。 import joblib import numpy as np import torch import torch.nn as nn X_train = joblib.load('ch08/X_train.joblib') y_train = joblib.load('ch08/y_train.joblib') X_train = torch.from_…

言語処理100本ノック 2020「71. 単層ニューラルネットワークによる予測」

問題文 nlp100.github.io 問題の概要 単層ニューラルネットワークを定義し、予測します。 import joblib import numpy as np import torch import torch.nn as nn X_train = joblib.load('ch08/X_train.joblib') X_train = torch.from_numpy(X_train.astype(…

言語処理100本ノック 2020「70. 単語ベクトルの和による特徴量」

問題文 nlp100.github.io 問題の概要 SWEM *1と呼ばれる特徴量を生成します。 import joblib import numpy as np import pandas as pd from gensim.models import KeyedVectors from tqdm import tqdm def culcSwem(row): global model swem = [model[w] if …

言語処理100本ノック 2020「69. t-SNEによる可視化」

問題文 nlp100.github.io 問題の概要 t-SNEで可視化する以外は 言語処理100本ノック 2020「67. k-meansクラスタリング」 - u++の備忘録 と同様です。 import matplotlib.pyplot as plt import numpy as np import pandas as pd from gensim.models import Ke…

言語処理100本ノック 2020「68. Ward法によるクラスタリング」

問題文 nlp100.github.io 問題の概要 Ward法による階層型クラスタリングを実行・可視化する以外は 言語処理100本ノック 2020「67. k-meansクラスタリング」 - u++の備忘録 と同じです。 import matplotlib.pyplot as plt import numpy as np import pandas a…

言語処理100本ノック 2020「67. k-meansクラスタリング」

問題文 nlp100.github.io 問題の概要 最初に questions-words.txt から国名を取得します。続いて、国名に関する単語ベクトルを抽出し,k-meansクラスタリングをクラスタ数k=5として実行します。 import numpy as np import pandas as pd from gensim.models …

言語処理100本ノック 2020「66. WordSimilarity-353での評価」

問題文 nlp100.github.io 問題の概要 言語処理100本ノック 2020「61. 単語の類似度」 - u++の備忘録 と 言語処理100本ノック 2020「64. アナロジーデータでの実験」 - u++の備忘録 の組み合わせです。 import numpy as np import pandas as pd from gensim.m…

言語処理100本ノック 2020「65. アナロジータスクでの正解率」

問題文 nlp100.github.io 問題の概要 pandas で読み込み、正解率を計算します。いくつか方法はありますが、ここでは列ごとに一致しているか否かの bool 値を得た後、sum() で true の個数を数えています。この値を列数で割ると、確率に変換できます。 import…

言語処理100本ノック 2020「64. アナロジーデータでの実験」

問題文 nlp100.github.io 問題の概要 言語処理100本ノック 2020「63. 加法構成性によるアナロジー」 - u++の備忘録 の処理を繰り返すのみです。for 文で回しても良いですが、ここでは pandas の progress_apply を使いました。時間がかかるので、tqdm で実行…

言語処理100本ノック 2020「63. 加法構成性によるアナロジー」

問題文 nlp100.github.io 問題の概要 most_similar の引数*1を活用します。 from gensim.models import KeyedVectors model = KeyedVectors.load_word2vec_format('ch07/GoogleNews-vectors-negative300.bin', binary=True) result = model.most_similar(pos…

言語処理100本ノック 2020「62. 類似度の高い単語10件」

問題文 nlp100.github.io 問題の概要 most_similar *1 を使います。topn で上位何件を返すかを指定できます。デフォルトで topn=10 となっていますが、分かりやすさのために敢えて明示的に指定しています。 from gensim.models import KeyedVectors model = …

言語処理100本ノック 2020「61. 単語の類似度」

問題文 nlp100.github.io 問題の概要 コサイン類似度を計算します。 from gensim.models import KeyedVectors model = KeyedVectors.load_word2vec_format('ch07/GoogleNews-vectors-negative300.bin', binary=True) print(model.similarity("United_States",…

言語処理100本ノック 2020「60. 単語ベクトルの読み込みと表示」

問題文 nlp100.github.io 問題の概要 本章では、単語の意味を実ベクトルで表現する単語ベクトル(単語埋め込み)を扱います。最初に、学習済みモデルをダウンロードし、単語ベクトルを表示します。 from gensim.models import KeyedVectors model = KeyedVec…