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

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

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

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

Q&A

解決済

1回答

635閲覧

文字列から数字のみを取り出す

gamdam

総合スコア10

Python 3.x

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

0グッド

0クリップ

投稿2022/12/20 07:06

編集2022/12/20 07:11

前提

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

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

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

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

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

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

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

y_waiwai

2022/12/20 07:07

エラーが出たなら、エラーメッセージを提示しましょう エラーメッセージは、よけいな省略翻訳しないで出たそのママをコピペで提示してください
gamdam

2022/12/20 07:11

申し訳ありません "発生している問題・エラーメッセージ"の欄に記載しているエラー文が出ました
guest

回答1

0

ベストアンサー

print(cos_sim_23.item())

投稿2022/12/20 07:14

ozwk

総合スコア13521

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問