テキスト前処理の導入

PyTorch で学ぶテキストの Deep Learning

Shubham Jain

Data Scientist

学習内容

  • テキスト分類
  • テキスト生成
  • エンコーディング
  • テキスト向け深層学習モデル
  • Transformer アーキテクチャ
  • モデルの保護

ユースケース:

  • 感情分析
  • 要約
  • 機械翻訳

感情分析

PyTorch で学ぶテキストの Deep Learning

事前知識

前提コース: Intermediate Deep Learning with PyTorch

  • PyTorch による深層学習モデル
  • 学習・評価ループ
  • 畳み込みニューラルネットワーク(CNN)と再帰型ニューラルネットワーク(RNN)
PyTorch で学ぶテキストの Deep Learning

テキスト処理パイプライン

 

 

Pytorch 処理パイプライン

PyTorch で学ぶテキストの Deep Learning

テキスト処理パイプライン

 

 

Pytorch 処理パイプライン

 

  • テキストをクリーンアップして準備
PyTorch で学ぶテキストの Deep Learning

PyTorch と NLTK

PyTorch ロゴ

NLTK ロゴ

  • Natural Language Toolkit(NLTK)
    • 生テキストを処理済みテキストに変換
PyTorch で学ぶテキストの Deep Learning

前処理手法

  • トークナイズ
  • ストップワード除去
  • ステミング
  • 低頻度語の除去
PyTorch で学ぶテキストの Deep Learning

トークナイズ

  • テキストから単語(トークン)を抽出
  • torchtext によるトークナイズ
from torchtext.data.utils import get_tokenizer

tokenizer = get_tokenizer("basic_english")
tokens = tokenizer("I am reading a book now. I love to read books!") print(tokens)
["I", "am", "reading", "a", "book", "now", ".", "I", "love", "to", "read", 
"books", "!"]
PyTorch で学ぶテキストの Deep Learning

ストップワード除去

  • 意味に寄与しない一般的な語を除去
  • 例: "a", "the", "and", "or" など
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

stop_words = set(stopwords.words('english'))
tokens = ["I", "am", "reading", "a", "book", "now", ".", "I", "love", "to", "read", "books", "!"] filtered_tokens = [token for token in tokens if token.lower() not in stop_words]
print(filtered_tokens)
["reading", "book", ".", "love", "read", "books", "!"]
PyTorch で学ぶテキストの Deep Learning

ステミング

  • 単語を語幹(基底形)に縮約
  • 例: "running", "runs", "ran" → run
import nltk
from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
filtered_tokens = ["reading", "book", ".", "love", "read", "books", "!"]
stemmed_tokens = [stemmer.stem(token) for token in filtered_tokens]
print(stemmed_tokens)
["read", "book", ".", "love", "read", "book", "!"]
PyTorch で学ぶテキストの Deep Learning

低頻度語の除去

  • 価値の低い低頻度語を除去
from nltk.probability import FreqDist
stemmed_tokens= ["read", "book", ".", "love", "read", "book", "!"]  
freq_dist = FreqDist(stemmed_tokens)

threshold = 2
common_tokens = [token for token in stemmed_tokens if freq_dist[token] > threshold] print(common_tokens)
["read", "book", "read", "book"]
PyTorch で学ぶテキストの Deep Learning

前処理手法

トークナイズ、ストップワード除去、ステミング、低頻度語除去により

  • 特徴量を削減
  • データを簡潔・代表的に
  • 他の手法も多数あり
PyTorch で学ぶテキストの Deep Learning

練習に進みましょう!

PyTorch で学ぶテキストの Deep Learning

Preparing Video For Download...