質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

2回答

3138閲覧

Word2Vecにおけるコサイン類似度とgensimの類似度測定関数について

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2018/07/30 13:45

前提・実現したいこと

Word2Vecにおける類似度測定関数について、
コサイン類似度で測定しているとあるのですが、

コサイン類似度の式に当てはめたときに、
イメージ説明
このコードでは一体分母と分子が何にあたるのかよくわかりません。
コード参照元

Python

1import gensim 2word2vec_model = gensim.models.KeyedVectors.load_word2vec_format('model/model_neologd.vec', binary=False) 3import pprint 4pprint.pprint(word2vec_model.similarity('国王', '王妃'))


また、word2vecでベクトルから単語を出力するコードにおいて、
どのような原理で類似単語が出力され、コサイン類似度による類似度測定はどのように関わっているのかわからず、困っています。
コード参照元2

python

1sentences = gensim.models.word2vec.Text8Corpus(filename) 2model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4) 3vector = model.wv["明智"] 4word = model.most_similar( [ vector ], [], 5)

### 試したこと
どちらの問題も
gensimにおけるsimilarity関数の説明を読みましたが、
よくわかりませんでした。

n_similarity(ws1, ws2) Compute cosine similarity between two sets of words. Parameters: ws1 (list of str) – Sequence of words. ws2 (list of str) – Sequence of words. Returns: Similarities between ws1 and ws2. Return type: numpy.ndarray

most_similar(**kwargs) Find the top-N most similar entities. Possibly have positive and negative list of entities in **kwargs.

他、参考資料

ruby で短い文章の cos類似度を計算してみる

補足情報(FW/ツールのバージョンなど)

python3.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2018/07/30 13:58

コサイン類似度そのものについては理解していますか?
退会済みユーザー

退会済みユーザー

2018/07/30 21:29

ご質問いただきましてありがとうございます。強調フィルタリングにおけるコサイン類似度は、cos(a,b) = a・b / (|a| ・ |b|) = 両方アクセスしたユーザ数 / 商品a, bそれぞれにアクセスしたユーザ数で求められているという理解です。コサイン類似度自体は、コサイン値を求めており2点のベクトルのなす角度によって類似度を測定しているという理解です。
guest

回答2

0

ベストアンサー

http://www.randpy.tokyo/entry/word2vec_skip_gram_model

https://deepage.net/bigdata/machine_learning/2016/09/02/word2vec_power_of_word_vector.html

単語はベクトルになるのですから、cos類似度を計算するのは高校数学じゃないですか。

単語を数値ベクトルに変換する手法がword2vecであることを理解していますか?

投稿2018/07/31 01:42

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/03 05:27

ご回答いただきましてありがとうございます。単語を数値ベクトルに変換する手法がword2vecであることは理解していますが、質問②で書いたように、その値からどのような原理で類似単語が求められるのかわかりません。
mkgrei

2018/08/03 08:41

新しい単語をもってきた時、既存のそれぞれの単語までの距離を計算することができます。 類似単語というのはその距離が短いもののことです。
guest

0

質問1について
あらかじめ学習したモデルから比較対象の単語の特徴ベクトルを抽出し、コサイン類似度の計算式に当てはめて計算しています。

質問2について
原理は上記の回答の応用です。与えられた単語の特徴ベクトルと全ての単語の特徴ベクトルのコサイン類似度を計算して上位のものを抽出しています。

投稿2018/07/31 02:03

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問