0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自然言語 学習メモ

Posted at

学習内容まとめ

使用した教材

  • Udemy : 【初心者向け】自然言語処理をPythonで学ぼう!
  • ChatGPT

学習期間

3時間ほど、計2日

学習内容メモ

形態素解析

  • 文章を形態素に分解し、各形態素に品詞などの属性を付与する。
    • 形態素 : 意味を持つ最小の単位
  • 例)「私は学校へ行きます。」を形態素解析する
    • 私(名詞)
    • は(助詞)
    • 学校(名詞)
    • へ(助詞)
    • 行き(動詞)
    • ます(助動詞)
  • 形態素解析ツールが複数存在する
    • MeCab ←今回使用」
    • JUMAN

文章の類似度

TF-IDF

  • TF
    • 単語の出現頻度
    • 特定の文書内での単語の出現回数を示す値
  • IDF
    • 逆文書頻度
    • 特定の単語がどれだけ多くの文書に出現するかを示す値
    • 出現率が低い単語はIDFが高くなる(レアな単語を検出する)

コサイン類似度

2つのベクトルの向きで類似度を測る

コサイン類似度の関数

$$
Cos類似度 = \frac{a_1b_1 + a_2b_2}{\sqrt{a_1^2+a_2^2}\sqrt{b_1^2+b_2^2}}
$$

Pythonで実装①(要Numpy)

import numpy as np

def cos_sim(vec_a, vec_b):
    dot = np.dot(vec_a, vec_b)
    norm_a = np.linalg.norm(vec_a)
    norm_b = np.linalg.norm(vec_b)
    return dot / (norm_a * norm_b)

Pythonで実装②(要sklearn)

# TFIDF行列をそのまま渡すだけで1行で計算できる
from sklearn.metrics.pairwise import cosine_similarity

cos_sim_matrix = cosine_similarity(tfidf_matrix)

Word2Vec

  • 単語をベクトルに変換する
  • 単語の意味や文脈的な関係性を反映している
  • ベクトル間の演算によって単語間の関係性を表現できる
    $$
    king - man = woman \approx queen
    $$
  • 文書分類、機械翻訳、感情分析などに利用
  • 主にCBOWSkip-gramという2つのモデルがある

CBOW

  • 周辺単語から中心となる単語を予測するモデル。
  • 例)私 は xx が 好き ➡ xxに入る単語を予測する
    • 猫 70%
    • 犬 20%
    • 魚 5%

Skip-gram

  • 中心となる単語から周辺の単語を予測するモデル
  • 例)xx xx 猫 xx xx ➡ xxに入る単語を予測する

Doc2Vec

  • 文章や段落単位でベクトルに変換する
  • W2Vの拡張版で、文書全体の意味や内容を捉えるのに使う
  • 文書分類、情報検索、レコメンデーションなどに利用

W2V、D2VどちらもPythonでライブラリを用いて簡単に実装することができる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?