前提
windows10
google colab
実現したいこと
出力結果がtensor(0.5662, grad_fn=<SumBackward1>)のようになり,0.5662のところのみ毎回変わるようになっています。
この数値のみ数値として取り出したいです。
実行結果が
tensor(0.5662, grad_fn=<SumBackward1>)
このようになるのですが
0.5662
このように出力したいです
発生している問題・エラーメッセージ
TypeError: expected string or bytes-like object
該当のソースコード
pythion
1!apt install aptitude swig 2!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y 3!pip install mecab-python3==0.996.5 4!pip install unidic-lite 5!pip install transformers 6 7!pip install unidic-lite 8 9!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git 10!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a 11 12import subprocess 13 14cmd='echo `mecab-config --dicdir`"/mecab-ipadic-neologd"' 15path_neologd = (subprocess.Popen(cmd, stdout=subprocess.PIPE, 16 shell=True).communicate()[0]).decode('utf-8') 17 18import MeCab 19 20m=MeCab.Tagger("-d /var/lib/mecab/dic/ipadic-utf8 -Ochasen") 21 22text = "私は機械学習が好きです。" 23 24text_segmented = m.parse(text) 25print(text_segmented) 26 27!pip install transformers==2.9.0 28 29import torch 30from transformers.modeling_bert import BertModel 31from transformers.tokenization_bert_japanese import BertJapaneseTokenizer 32 33tokenizer = BertJapaneseTokenizer.from_pretrained('bert-base-japanese-whole-word-masking') 34 35model = BertModel.from_pretrained('bert-base-japanese-whole-word-masking') 36from transformers import BertConfig 37 38# 東北大学_日本語版の設定を確認 39config_japanese = BertConfig.from_pretrained('bert-base-japanese-whole-word-masking') 40print(config_japanese) 41 42text2 = "テレワークばかりでクビが痛い。" 43text3 ="会社を解雇された。" 44 45# 分かち書きをして、idに変換 46input_ids2 = tokenizer.encode(text2, return_tensors='pt') # ptはPyTorchの略 47#input_ids1 = tokenizer.encode(text1) # ptはPyTorchの略 48 49print(tokenizer.convert_ids_to_tokens(input_ids2[0].tolist())) # 文章 50print(input_ids2) # id 51 52# 分かち書きをして、idに変換 53input_ids3 = tokenizer.encode(text3, return_tensors='pt') # ptはPyTorchの略 54#input_ids1 = tokenizer.encode(text1) # ptはPyTorchの略 55 56print(tokenizer.convert_ids_to_tokens(input_ids3[0].tolist())) # 文章 57print(input_ids3) # id 58 59# 日本語BERTモデルに入力 60result2 = model(input_ids2) 61result3 = model(input_ids3) 62 63word_vec2 = result2[0][0][5][:] # 2つ目の文章の”クビ”(5番目) 64word_vec3 = result3[0][0][3][:] # 3つ目の文章の”解雇”(3番目) 65 66cos = torch.nn.CosineSimilarity(dim=0) 67cos_sim_23 = cos(word_vec2, word_vec3) 68 69print(cos_sim_23)
試したこと
コードの67行目と68行目の間に(https://codechacha.com/ja/python-extract-integers-from-string/#1-%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E6%95%B0%E5%AD%97%E3%82%921%E3%81%A4%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%AB%E6%8A%BD%E5%87%BA) のサイトを参考に
str = cos_sim_23 pattern = "tensor(([0-9]+), grad_fn=<SumBackward1>)" score = re.search(pattern, str) print(score.group(1))
上記のコードを入れてみましたが"発生している問題・エラーメッセージ"の欄に記載しているエラー文が出てしまいました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー