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

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

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

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

Q&A

解決済

1回答

13059閲覧

word2vecの「size」につてい

nkt_japan

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/06/14 13:24

word2vecの実装を試みています。
最終的目的は特定の単語に対して、類似語を出すことです。

下記にコードを記載します。
83行目の「model = word2vec.Word2Vec(word_list, size=100,min_count=5,window=5,iter=100)」の箇所でエラーが出てしまいます。
途中までは動くのですが、83行目の「size」につていエラーが出てしまいます。

何卒宜しくお願い致します。

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

Traceback (most recent call last): File "ch05-02.py", line 96, in <module> model = word2vec.Word2Vec(word_list, size=200,min_count=5,window=5,iter=5) TypeError: __init__() got an unexpected keyword argument 'size'

該当のソースコード

# zipファイルダウンロード url = 'https://www.aozora.gr.jp/cards/000148/files/794_ruby_4237.zip' zip = '794_ruby_4237.zip' import urllib.request urllib.request.urlretrieve(url, zip) # ダウンロードしたzipの解凍 import zipfile with zipfile.ZipFile(zip, 'r') as myzip: myzip.extractall() # 解凍後のファイルからデータ読み込み for myfile in myzip.infolist(): # 解凍後ファイル名取得 filename = myfile.filename # ファイルオープン時にencodingを指定してsjisの変換をする with open(filename, encoding='sjis') as file: text = file.read() # ファイル整形 import re # ヘッダ部分の除去 text = re.split('\-{5,}',text)[2] # フッタ部分の除去 text = re.split('底本:',text)[0] # | の除去 text = text.replace('|', '') # ルビの削除 text = re.sub('《.+?》', '', text) # 入力注の削除 text = re.sub('[#.+?]', '',text) # 空行の削除 text = re.sub('\n\n', '\n', text) text = re.sub('\r', '', text) # 整形結果確認 # 頭の100文字の表示 print(text[:100]) # 見やすくするため、空行 print() print() # 後ろの100文字の表示 print(text[-100:]) # Janomeのロード from janome.tokenizer import Tokenizer # Tokenizerインスタンスの生成 t = Tokenizer() # テキストを引数として、形態素解析の結果、名詞・動詞・形容詞(原形)のみを配列で抽出する関数を定義 def extract_words(text): tokens = t.tokenize(text) return [token.base_form for token in tokens if token.part_of_speech.split(',')[0] in['名詞', '動詞']] # 関数テスト # ret = extract_words('三四郎は京都でちょっと用があって降りたついでに。') # for word in ret: # print(word) # 全体のテキストを句点('。')で区切った配列にする。 sentences = text.split('。') # それぞれの文章を単語リストに変換(処理に数分かかります) word_list = [extract_words(sentence) for sentence in sentences] # 結果の一部を確認 for word in word_list[0]: print(word) # Word2Vecライブラリのロード from gensim.models import word2vec # size: 圧縮次元数 # min_count: 出現頻度の低いものをカットする # window: 前後の単語を拾う際の窓の広さを決める # iter: 機械学習の繰り返し回数(デフォルト:5)十分学習できていないときにこの値を調整する # model.wv.most_similarの結果が1に近いものばかりで、model.dict['wv']のベクトル値が小さい値ばかりの # ときは、学習回数が少ないと考えられます。 # その場合、iterの値を大きくして、再度学習を行います。 # 事前準備したword_listを使ってWord2Vecの学習実施 model = word2vec.Word2Vec(word_list, size=100,min_count=5,window=5,iter=100) # 結果の確認1 # 一つ一つの単語は100次元のベクトルになっています。 # 「世間」のベクトル値を確認します。 print(model.__dict__['wv']['世間']) # 結果の確認2 # 関数most_similarを使って「世間」の類似単語を調べます ret = model.wv.most_similar(positive=['世間']) for item in ret: print(item[0], item[1])

試したこと

83行目のsizeをなくして
「model = word2vec.Word2Vec(word_list, min_count=5,window=5,iter=100)」
上記のようにしたところ、次は「iter」につてい全く同じエラーがでてしまいました。

「model = word2vec.Word2Vec(word_list, min_count=5,window=5)」
最終的に上記のようにしたところ、動くことはできましたが、sizeとiterを含めた実装をしたいです。

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

ここにより詳細な情報を記載してください

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

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

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

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

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

quickquip

2021/06/14 23:10

なぜsizeという引数を指定しようとしているのですか? その意図はなんですか?
nkt_japan

2021/06/15 09:31 編集

隠れ層の次元数を表すために「size」を使用しています。
guest

回答1

0

ベストアンサー

sizeiterではなく、vector_sizeepochsだったりしますでしょうか?

https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec

投稿2021/06/16 15:05

編集2021/06/16 15:05
segavvy

総合スコア958

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

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

nkt_japan

2021/06/16 15:12

解決しました!!本当にありがとうございます。
segavvy

2021/06/16 15:24

いえいえ、お役に立てたようで良かったです!
banana.kun

2023/04/04 12:18

これってgensimのバージョンによってかわるんですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問