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

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

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

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

解決済

word2vecの「size」につてい

nkt_japan
nkt_japan

総合スコア1

Python

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

1回答

0評価

0クリップ

4894閲覧

投稿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/ツールのバージョンなど)

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

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

quickquip

2021/06/14 23:10

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

2021/06/15 09:31 編集

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

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python

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