【受講メモ】Natural Language Processing with Classification and Vector Spaces Week1

自然言語処理領域も理解を深めようと思い、Coursera の Natural Language Specialization コースに登録しました。

これまで、いくつかのコースを Coursera で受講してきましたが、特に Deeplearning.ai の「Machine Learning」と「Deep Learning Specialization」はとっても良かったです。NLPコースも同じところが出しているので期待大です。

なにより、また Andrew 先生に教えてもらえるのが最高です。(今回はAndrew先生じゃなかった、、けど、動画には出てきます!)

今までの受講ではあまりメモを残していなかったのですが、今回は簡易ながらも学んだ内容をブログにアウトプットしていこうと思います。

Specialization は全部で4つのパートで構成されていて、そのうちの1つめが「Natural Language Processing with Classification and Vector Spaces」です。とりあえず2日で駆け足で week1を終えたので、記憶が新しいうちにメモを残しておきます!

 

Week1 : Sentiment Analysis with Logistic Regression

 

ざっくりメモ

 

week1は、ツイッターデータセットのポジネガ判定タスクを、ロジスティック回帰で解きましょう、というテーマでした。

・ツイートの文字列のデータをどのように数値に置き換えるか → BoW

・BoW だと特徴量の数が膨大になる & スパースなデータになる

・感情分析のタスクであれば、特徴量の作成を工夫できる

・前処理で Vocab の量も大幅に削減できる

・アルファベットにさいしてのデータの前処理として、表記ゆれ、ステミング、ストップワードを紹介。

・課題は、gradient descent の実装(←おなじみ!)や、ツイートを特徴量ベクトルに変換する関数の作成など。

 

感情分析のための特徴量作成

・ユニーク単語辞書つくる(Vocab)

・Positive ラベルのついている文章全体で、辞書に登録されてる単語の出現頻度をカウントする(pos_freq)

・Negative ラベルのついている文章全体で、辞書に登録されてる単語の出現頻度をカウントする (neg_freq)

・各文章ごとに、[bias, sum(pos_freq), sum(neg_freq)] と3次元のベクトルとして表現する。

 

技術メモ

 

Twitter データセットについて

ツイッターデータセットは、posツイート、negツイートがそれぞれ 5000 サンプルずつのデータセット

 

NLTK でのアルファベットの前処理について

・ステミングは、[learn, learning, learned, learnt] などとあったときに、全部 learn にするような処理。

・[happy, happiness, happier] とあるときは、happ と思いがちだが、happi になる。happen みたいな単語と区別するため。

 

おわり