Programming Serendipity

気まぐれに大まかに生きるブログ

読書メモ2025-1

.

pandas & matplotlib Excelファイルの集計と可視化をやってみよう

逆引きPython標準ライブラリ (2018/2)

  • python 3.6
  • strip(): 文字列内から指定した文字種の削除
  • partition(): セパレータで3分割(前、セパレータ、後ろ)。セパレータが見つからなければ、(全体、空、空)
  • startswith(), endswith() はtupleで指定してもよく、どれかがヒットすればTrue
  • ljust(), center(), rjust(): 左寄せ、中央寄せ、右寄せ
  • zfill(): 0詰め
  • ord(): 文字コード取得
  • リピート連結 * strでもlistでもtupleでもこれでよい
  • リストの拡張には、append(), extend()のほか、スライスによる指定も可能
a=[35,36]
a[len(a):]=[37,38] # a == [35,36,37,38]
  • リストへの挿入についても、insert()のみならずスライスが使える(ただし、挿入する場合は)
a=[35,36]
a[1:1]=[37,38] # a == [35,37,38,36]
# a[1:1]=39 # "TypeError"
a[1:1]=[39] # a == [35,39,37,38,36]

PyTorch自然言語処理プログラミング (2021/3)

  • サンプルコード
  • pythonの標準リストは数値以外も入れられるので高速演算に向かない。numpyは数値に限定することで高速演算に対応
  • しかし、numpyでもGPU演算や微分の機能がない。そこでpytorchではそれらを持つTensorクラスを使う
  • tensor * tensorはelement-wise演算。行列演算がしたい場合matmul()を使う
  • mv() = matrix * vector
  • mm() = matrix * matrix
  • bmm() = batch of matrix * matrix
  • sin, logなどはtorch内の関数を利用(torch.sin()など)
  • 型はdtype or type()(str)で確認
  • numpy() や from_numpy() で相互変換
  • tensor(n, require_grad=True) で微分の情報を付与できる。ただしnumpyに変換するときはdetachが必要 t.detach().numpy()
  • cat(): 行列の縦連結。横連結の場合はdim=1
  • GPUで演算するには、tensorとモデルを to.('cuda:0')GPUに移動させる
  • word2vec, gensim, vocab, 分散表現, doc2vec,
  • word mover distance: 2つの文章間の距離。単語ごとの近さの合計が基準だが、文章の長さの違いに対応するため、重みづけ和とし、距離が最小になるための最適化問題の解を距離として採用する
  • fastText: facebookが開発したword2vecの改良版
  • janome.tokenizer, import pickle,
  • LSTM, multi layered LSTM, Bi directional LSTM,
  • seq2seq: 系列データから系列データへの変換。文章から文章、画像から画像、音声から音声などなど
  • NMT = neural machine translation
  • 田中コーパス => small parallel enja
  • attention NMT が標準(執筆時点)
  • 未知語はsubwordに分解していけば、いずれかの時点で未知語はなくなる
  • BPE(byte per encoding): subwordの標準
  • SentencePiece: BPEは英語など空白で単語を区切る言語に最適化されていて、日本語で上手く動作しない。そこで日本語に対応させたものがこれ
  • BERT (Bidirectional Encoder Representations from Transformer): pre trained model for NLP。文脈依存の多義語対応とfine-tuning対応
  • BERTはSelf-Attentionを12回行うことで特徴量を抽出している。
  • Self-Attention: 内積のsoftmaxの重みづけ和を行う固定処理。学習対象ではない
  • 公開されているBERTモデル:京大版、東北大版、stockmarks, nict, laboro.
  • BertJapaneseTokenizer: transformersに標準装備された、bert + jpn + mecabの全部入りクラス
  • masked language model
  • パラメータ凍結
  • distilBERT (ex.) distilbert base japanese
  • sentenceBERT
  • 含意関係認識