NLP勉強会 #2 参加メモ
NLP勉強会 #2に参加してきた。
NLP本読み進めシリーズ 「入門 自然言語処理」第1回 (@nezuq)
1章 言語処理とPython
- 日本語を使うための設定
# MeCabとそのPythonバインディングをインストールする。
$ sudo apt-get install libmecab-dev
$ sudo apt-get install mecab mecab-ipadic-utf8
$ pip install mecab-python3
# Plotのフォントで日本語フォントを指定する
import matplotlib
import matplotlib.font_manager
- NLP関数
#NLTKパッケージ(ex.コーパス)をダウンロードする。
nltk.download()
#文書内から指定単語が使われている文を探す。
text1.concordance("単語")
#文書内から指定単語と同じ文脈で使われている文を探す。
text1.similar("単語")
(再)入門自然言語処理 #02 (@yamano357)
- 文とテキストのベクトル表現
- 出現頻度(頻度ベクトル)
- 出現したかどうかの二値(二値ベクトル)
- TF-IDF:最も有名
- TF:単語頻度。単語がテキスト内で出現する頻度(『何度も繰り返し言及される概念は重要な概念』)
- DF:文書頻度。単語が出現するテキスト数。出現するテキスト数が少ない単語により大きい重みを与えるように(特徴的な単語は重要)、逆数を取ったIDFが用いられる
- 類似度や距離
- ユークリッド距離
- コサイン類似度
- マハラノビス距離
- マンハッタン距離
- Jaccard係数
- 素性前処理
- 内容語(名詞、動詞、形容詞、副詞など、主に語彙的意味を表す語)のみに限定、重み(例えば、TF-IDFの値)の小さい単語を削除
- 不要語(stop word)リストをあらかじめ用意
- 活用されている語を基本形に戻す
- トピックモデル
- PythonではLSA, PLSA, LDAは gensim で実装されている
- Latent Semantic Analysis/Indexing (LSA/LSI)
- Probabilistic Latent Semantic Analysis/Indexing (PLSA/PLSI)
- LSAのいくつかの問題点を解決するためにモデルを確率化
- 問題点
- 最適なトピック数が不明
- Latent Dirichlet Allocation (LDA)
- PLSAをベイズモデルにより一般化したもの
- 単語の分散表現
- word2vecでは、(Continuous) Skip-gram や Continuous Bag-of-Words により分散表現を学習し、出現単語を予測したりテキスト間の距離を計算したりできる