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

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

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

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

Q&A

1回答

537閲覧

グラフの文字化けを治したい

gamdam

総合スコア10

Python 3.x

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

0グッド

0クリップ

投稿2022/10/17 01:47

前提

pythonを用いて、類義語を出力することを目指しています。
出力されるグラフが文字化けしてしまいます。

実現したいこと

https://qiita.com/thmd9726/items/5b096a32183247c6e35e
上記のサイトを参考に日本語版の作成をしたいと考えています。

該当のソースコード

python

1import torch 2from transformers import ( 3 BertJapaneseTokenizer, 4 BertForMaskedLM, 5) 6import matplotlib.pyplot as plt 7 8# Build model 9tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking') 10model = BertForMaskedLM.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking') 11 12 13def get_synonym_with_bert(text, masked_idx): 14 15 text_length = len(text.split()) 16 masked_idx = masked_idx + text_length + 2 17 segments_ids = [0] * (text_length + 2) + [1] * (text_length + 1) 18 text = " ".join(["[CLS]", text, "[SEP]", text, "[SEP]"]) 19 20 # Tokenize a text 21 # tokenized_text = tokenizer.tokenize(text) 22 tokenized_text = text.split() 23 24 # Mask a complex token which should be substituted 25 complex_word = tokenized_text[masked_idx] 26 tokenized_text[masked_idx] = '[MASK]' 27 28 # Convert inputs to PyTorch tensors 29 tokens_ids = tokenizer.convert_tokens_to_ids(tokenized_text) 30 tokens_tensor = torch.tensor([tokens_ids]) 31 segments_tensors = torch.tensor([segments_ids]) 32 33 34 # Predict a masked token 35 model.eval() 36 if torch.cuda.is_available(): 37 tokens_tensor = tokens_tensor.to('cuda') 38 segments_tensors = segments_tensors.to('cuda') 39 model.to('cuda') 40 41 with torch.no_grad(): 42 outputs = model(tokens_tensor, token_type_ids=segments_tensors) 43 predictions = outputs[0] 44 45 46 # Output top 10 of candidates 47 topk_score, topk_index = torch.topk(predictions[0, masked_idx], 10) 48 topk_tokens = tokenizer.convert_ids_to_tokens(topk_index.tolist()) 49 50 # Visualize output probabilities 51 plt.bar(topk_tokens, torch.softmax(topk_score, 0).tolist()) 52 plt.xticks(rotation=70) 53 plt.ylabel('Probability') 54 plt.show() 55 return topk_tokens 56 57 58text = "私は人間です" 59for i in range(6): 60 get_synonym_with_bert(text=text , masked_idx = i)

試したこと

東北大学が作成したBERTを用いています。

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

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

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

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

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

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

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

guest

回答1

0

Matplotlib 日本語の表示方法 厳選3選|最適な方法選んで!などを参考に日本語を表示できるように設定するとよいです。

投稿2022/10/17 02:02

can110

総合スコア38262

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問