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

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

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

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

Q&A

1回答

1749閲覧

学習済みword2vecモデル実行時にエラーが出る

tako15

総合スコア11

Python 3.x

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

0グッド

0クリップ

投稿2022/12/07 06:06

前提

Google Colabを使用しています.
学習済みword2vecモデルを実行したいです.
使用しているのは,東北大学の乾・岡崎研究室(http://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/)
で配布されている20170201.tar.bz2を解凍したものです.

実現したいこと

エラーメッセージで,配列のサイズが合っていないということは分かったのですが,この方法以外でモデルを読み込み,どう実行できるか分かりません.
この方法以外で実行できる方法はありますでしょうか?
またソースコードに間違いがあれば教えていただきたいです.

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

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-22-fc9c6d2fe55a> in <module> 1 from gensim.models import KeyedVectors 2 model_dir = './entity_vector.model.bin' ----> 3 model = KeyedVectors.load_word2vec_format(model_dir, binary=True) 4 results = model.most_similar(u'[人生]') 5 for result in results: 2 frames /usr/local/lib/python3.8/dist-packages/gensim/models/keyedvectors.py in load_word2vec_format(cls, fname, fvocab, binary, encoding, unicode_errors, limit, datatype) 1434 """ 1435 # from gensim.models.word2vec import load_word2vec_format -> 1436 return _load_word2vec_format( 1437 cls, fname, fvocab=fvocab, binary=binary, encoding=encoding, unicode_errors=unicode_errors, 1438 limit=limit, datatype=datatype) /usr/local/lib/python3.8/dist-packages/gensim/models/utils_any2vec.py in _load_word2vec_format(cls, fname, fvocab, binary, encoding, unicode_errors, limit, datatype) 211 word = utils.to_unicode(b''.join(word), encoding=encoding, errors=unicode_errors) 212 weights = fromstring(fin.read(binary_len), dtype=REAL).astype(datatype) --> 213 add_word(word, weights) 214 else: 215 for line_no in xrange(vocab_size): /usr/local/lib/python3.8/dist-packages/gensim/models/utils_any2vec.py in add_word(word, weights) 193 logger.warning("vocabulary file is incomplete: '%s' is missing", word) 194 result.vocab[word] = Vocab(index=word_id, count=None) --> 195 result.vectors[word_id] = weights 196 result.index2word.append(word) 197 ValueError: could not broadcast input array from shape (194,) into shape (200,)

該当のソースコード

python

1from gensim.models import KeyedVectors 2 3model_dir = 'entity_vector.model.bin' 4model = KeyedVectors.load_word2vec_format(model_dir, binary=True) 5results = model.most_similar(u'[人生]') 6for result in results: 7 print(result)

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

python 3.8.15

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

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

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

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

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

jbpb0

2022/12/07 06:49

当方のmacで、 https://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/ から「20170201.tar.bz2」を落として解凍して、pythonにgensim 3.8.3を入れて、質問のコードをそのまま実行したら、エラーは出ずに実行できました gensimは、学習時とバージョンが大きく違うと、エラーがよく出ますので、今回のもそれかもしれません
quickquip

2022/12/07 08:03 編集

私もマシンローカルの python 3.8.13 + gensim 3.8.3 と python 3.8.13 + gensim 4.2.0 とでそのままのコードが動きました。 ファイルの置き方などをスクリーンショットで追加した方がいいかもしれません。
jbpb0

2022/12/07 08:26

gensim 4.2.0でも動いたのですね なんでしょうね 質問者さんが使ってるgensimのバージョンが、かなり古いとか
tako15

2022/12/12 08:39

コメントありがとうございます.連絡が開いてしまいすみません. gensimは3.6.0を使用しており,pythonは3.8.16を使用しています. マシンローカルで動かすことも検討し,windowsにpipをダウンロードしてからpip install gensimとダウンロードを試みましたがエラーが出たためダウンロードできませんでした. 出力結果だけ得られれば良いので,googlecolabでもローカルでもなんでもいいです
tako15

2022/12/12 08:42

出力結果というのはこのプログラムの結果ではなくて,これをもとに特定の2つの単語のコサイン類似度を得たいと考えているので,そのコサイン類似度のことを指しています.分かりにくくてすみません
quickquip

2022/12/12 08:56

> マシンローカルで動かすことも検討し,windowsにpipをダウンロードしてから このPythonのバージョンはなんですか? 3.11とか使ってたりしませんよね?
tako15

2022/12/12 09:13

まさに3.11.1を使っています.良くなかったでしょうか? コマンドプロンプトからgensimを入れようとすると,Visual Studioが必要だからインストールしてとエラーが吐かれたので,今インストールしているところです
tako15

2022/12/12 09:18

そうなんですね.ではひとまず3.11はアンインストールして,3.10とかをインストールし直したらいいでしょうか?
quickquip

2022/12/12 09:21

colabがもはや関係ないなら3.10系でいいと思います
jbpb0

2022/12/12 11:46 編集

google colabで、 !wget https://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/data/20170201.tar.bz2 !tar xf 20170201.tar.bz2 !mv ./entity_vector/entity_vector.model.bin . を実行してから、質問のコードをそのまま実行したら、エラーは出ずに実行できました > gensimは3.6.0を使用しており は同じです (そのバージョンが、もともとgoogle colabにインストール済みでした)
quickquip

2022/12/12 15:30

> そのバージョンが、もともとgoogle colabにインストール済みでした 納得です。2022/12/12 18:02 のコメントはやはり完全に見当違いでした。失礼しました。 ということはコードを実行前に20170201.tar.bz2を取得して解凍した手順が明らかにされる必要がありそうです。 そこに勘違いがあるとWindowsでも同じ間違いをしそう。(colabで上手くいくやり方が示されていますが同じ結果になる作業が正しくできる必要があります。普通に心配になります)
guest

回答1

0

google colabで、

python

1!wget https://www.cl.ecei.tohoku.ac.jp/~m-suzuki/jawiki_vector/data/20170201.tar.bz2 2!tar xf 20170201.tar.bz2 3!mv ./entity_vector/entity_vector.model.bin .

を実行してから、質問のコードをそのまま実行したら、エラーは出ずに実行できました

投稿2022/12/12 11:51

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問