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

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

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

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

Q&A

解決済

2回答

1506閲覧

word2vecで求められる類義語の意味について

unity3dbigginer

総合スコア65

Python

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

0グッド

0クリップ

投稿2020/01/18 18:03

##初めに
単語の意味的な類似度を、ベクトル表現で表したいと考えて調べていたところ、word2vecがよく目に付きました。
##知りたいこと
word2vecで得られるベクトル値は、文章内に、似た使われ方をしている単語の類似度を求めるのでしょうか。
それとも、意味的に似ている単語の類似度を求めているのでしょうか。

意味を考慮せず、ただ単語の使われ方の類似度で求めていると理解しているのですが、よろしいでしょうか。
ご教授よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

意味を考慮せず、ただ単語の使われ方の類似度で求めている

「意味」と「単語の使われ方」の何が違うか説明できますか?
「意味的に似ている」とはどういう現象か定義できますか?
どういう基準をクリアしたら「意味的に似ている」ということになりますか?

定義できるならそれを実装すれば話は終了です。
が、それはできないわけです。

大量のテキスト中で、ある単語の周辺に現れる単語の頻度を数えて、頻度を高次元のベクトルだとみなす。あるいはそれを次元削減するのはナイーブなやり方です。
word2vecはそのようなベクトルを近似的に高速に取得する実装です。

word2vecでいう類義語(most similar)は、単純にベクトル間の「距離が小さい」語を指すかと思います。


(追記)

文章内に、似た使われ方をしている単語の類似度を求めるのでしょうか。

それとも、意味的に似ている単語の類似度を求めているのでしょうか。

ここは文がちょっとおかしいかと。

単語間の類似度を求めるための方法として、似た使われ方をしている単語を近似的に探索している、というのは合ってます。

「似た使われ方をしている単語は意味も似ている(大意)」という仮説が1950年代からあって、word2vec以前でも「頻度情報をベクトルだと思ったもの」でそこそこ問題は解けることはわかっていて、そのことからこの仮説は(ある程度は)正しいと考えられていました。

word2vec の登場で大規模な文書から現実的な時間で学習できるようになって、ベクトルの質が一気に向上したという感じでしょうか。

投稿2020/01/19 00:07

編集2020/01/19 14:19
quickquip

総合スコア11038

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

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

unity3dbigginer

2020/01/19 02:31

quiquiさん 頻度のベクトル値の差が小さいと類義語になるということは、意味は考慮していないと考えてしまいます。 よく、 「王様」ー「男」+「女」=「王女」 みたいな例があるのですが、王様に男の意味を持つ等の意味的解釈をword2vecで得られるベクトルにあるとは考えられません。 quiquiさんは、このword2vecで得られる類似度に、意味の類似度も考慮されていると考えますか?
quickquip

2020/01/19 03:03

> 「王様」ー「男」+「女」=「王女」 この例、英語で学習したベクトルの king , queen の話です、 日本語の「王様」「女王」ではないことに注意してください。(女王を王女と書いたのは凡ミスだとおもいますが) king は間違いなく男です。 > word2vecで得られるベクトルにあるとは考えられません あなたが(あるいは誰かが)どう考えようが、word2vecで得られるベクトルを観察したらこういう例が**見つかった**という事実に影響を与えません。 なにかの交絡では? というような指摘でしたら理解できますが。 > word2vecで得られる類似度に、意味の類似度も考慮されていると考えますか? いろんな問題に使ってみたらなんかうまく解けるようになった(=word2vec以前の手法に比べてスコアが上昇した)という工学的な話としてしか捉えていません。 人間が「これがこの言葉の意味だ」と捉えている概念の**ある一部分**をそれまでの手法よりもうまく捕まえて学習できるようになったというだけと思ってます。 そのことを称して「word2vecで得られるベクトルに意味の情報が考慮されている」と言っていいなら、考慮されていると思いますよ。 word2vecが語の意味を**すべて**捉えているなんて考えている人は誰もいないでしょう。 実際今はもっとずっとよい(=問題がうまく解ける)手法が考案され使われています。
quickquip

2020/01/19 04:08 編集

> 頻度のベクトル値の差が小さいと類義語になるということは、意味は考慮していないと考えてしまいます。 「差」ではなくて「距離」です。 ("差の大きさ"とは限らない、ぐらいの意図で) ベクトルの中に意味からくる情報が入っていないという状況で、 ベクトルの距離が小さいものを拾うと類義語がそこそこ出てくる という現象が起こりえるんでしょうか? この話は順番が逆で こういう学習したらこういう性質が表れた。ということは、ベクトルの中に意味情報がうまく入っているようだと考えるのが自然 ということでしかないかと。
guest

0

word2vecが出力する単語ベクトルは、単語の特徴量を示しています。よって特徴量同士が近似しているということは単語として似ていることになり、これを単語間の類似度と表現します。
この単語ベクトルですが、若干乱暴な言い方をするとその単語がどのような文脈のなかで使われるかを表したものです。ここでいう文脈とは、ある単語は、前後にどのような単語が出現しやすいかという意味合いです。例えば、リンゴという単語の前後には食べるは出現しやすいが走るはめったに出現しないという関係性を学習させたものということができます。
つまり、単語ベクトルが近似しているということは似た文脈のなかで使われる単語であり、前後に出現しやすい単語が似ている単語ということになります。

以上を踏まえて質問に回答すると、word2vecの単語ベクトルは単語の特徴量を表したものであって類似度ではありません。また、単語の使われ方の類似度を求めたものではなく、前後に出現しやすい単語との関係性を学習させたものとなります

投稿2020/01/19 12:25

R.Shigemori

総合スコア3376

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

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

tama33

2022/03/06 02:55

大変よくわかりました!ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問