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

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

ただいまの
回答率

90.51%

  • Python

    7947questions

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

  • 機械学習

    682questions

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

  • アルゴリズム

    408questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • 自然言語処理

    118questions

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

自然言語処理における単語間類似度計算アルゴリズムについて

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 423

tenjin

score 214

 前提・実現したいこと

概念辞書WordNetのsimilarity関数と
Word2Vec(gensim)のsimilarity関数の
ちがいを理解した上で、単語間の類似度計算をしようとしています。

WordNetの類似度計算に関する記事
WordNet Interface(WordNetにおける複数の類似度計算関数が紹介されている)
Word2Vec(gensim)の類似度計算に関する記事

 発生している問題・エラーメッセージ

問題としては、概念辞書WordNetのsimilarity関数と
Word2Vec(gensim)のsimilarity関数を用いるには
それぞれ概念辞書WordNetとコーパスのWikipediaの学習済みモデルが必要という
ちがいは理解できています。

しかしながら、概念辞書WordNetのsimilarity関数(複数あるので、仮にPath Similarityとする)とWord2Vec(gensim)のsimilarity関数の
アルゴリズムがどのように異なるのかコードでは関数化されてしまっているのでわからず、
困っています。

どのようにそれぞれの関数において類似度を求めているのか知りたいです。

 試したこと

WordNetの類似度計算に関する記事
Word2Vec(gensim)の類似度計算に関する記事のコードは
ローカル環境化で実行して、どちらの方法でも単語間の類似度計算ができることは
わかりました。

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

Python 3.6
Pc OS High Sierra

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

具体的な話は調べて頂ければ出てくるはずなので、概念的な話を。


WordNetとWord2Vecが、それぞれ単語をどのように表現しているか考えてみると良いでしょう。

WordNetは基本的に、単語や概念、カテゴリなどの木構造です(それだけではないが)。

木構造で、要素同士が「似ている」か「似ていない」かをどう決めるか、という問題です。

最短パスを見つけて長さを測るとか、共通の根までの距離を見るとか、そういうのが思いつきます。だいたいそんな方針でやっているのがWordNetの類似度計算手法です(それだけではないと思うが)。

手法はWu,Palmerのとか、Leacock,Chodorowのとか色々あります。どれも比較的単純な数式なので、じっくり読めばわかります(英語なら解説してくれてるサイト、論文は幾らでもある)。どれが良いとかは、まあ一概には言えない世界だと思います。

一応、参考になりそうなのを貼っておきます。

http://www.cartagena99.com/recursos/alumnos/ejercicios/Article%201.pdf


Word2Vecは、ベクトルの類似度だからいわゆるコサイン類似度です。説明することは特になし。ググれば日本語の解説がとてもたくさんヒットします。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/07 12:07

    ご丁寧にご回答いただきましてありがとうございます。WordNetの類似度計算に関しては、こちらも調べましたが、日本語での情報がないのですね。論文はGoogle翻訳にかけてもよく理解できなかったので、英語の問題だけでなく数式の理解が及んでいないためだと思います。
    何か手助けになる資料をご存知でしたら、教えて頂けますと有難いです。

    キャンセル

  • 2018/07/07 16:45

    網羅的な情報は日本語圏にはほぼないはずです(書籍含めて)
    断片的な情報もあまりないんですが、奥村さんの赤い本(自然言語処理の基礎)の2章にちょっとだけ載ってた記憶が。今本が手元にないので、確認できません。もしかしたら記憶違いかも
    日本語Web圏にはほとんど何も期待できないかと

    キャンセル

  • 2018/07/07 20:55

    お返事いただきましてありがとうございます。
    奥村さんの赤い本でも数式に関する言及はありませんでした。

    キャンセル

0

誤って、自己解決欄に書き込んでしまいました。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    7947questions

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

  • 機械学習

    682questions

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

  • アルゴリズム

    408questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

  • 自然言語処理

    118questions

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