1. 前提・実現したいこと
BERTを使ってcsvファイルを文章ベクトルに変換し,tsvファイルとして出力する.
2. 発生している問題・エラーメッセージ
下記に記しているサイトの手順に従ってコードをGoogle Colaboratoryで実行したが,最後の「ツイートを文章ベクトルに変換する」という章のコードが上手く,出力されていない状態.
https://qiita.com/yuki_uchida/items/09fda4c5c608a9f53d2f
実行はされるが,空のtsvファイルが出力されている状態で上手くファイルが読み込めていないのかも.
また,コードを調べたところ,juman_tokenizerという変数が定義されていないことは分かったが,解決策が分からない状態.
サイト上では下記のコードを実行することで変数を定義していることは分かるが,どのタイミングでこのコードを実行すればよいのかが分からない状態.
Python
1def compute_vector(text, model, bert_tokenizer, juman_tokenizer): 2 use_model = model 3 tokens = juman_tokenizer.tokenize(text) 4 bert_tokens = bert_tokenizer.tokenize(" ".join(tokens)) 5 ids = bert_tokenizer.convert_tokens_to_ids( 6 ["[CLS]"] + bert_tokens[:126] + ["[SEP]"]) 7 tokens_tensor = torch.tensor(ids).reshape(1, -1) 8 use_model.eval() 9 with torch.no_grad(): 10 all_encoder_layers, _ = use_model(tokens_tensor) 11 pooling_layer = -2 12 embedding = all_encoder_layers[0][pooling_layer].numpy() 13 # embedding = all_encoder_layers[0].numpy() 14 # return np.mean(embedding, axis=0) 15 return embedding
3. 該当のソースコード
Python
1import pandas as pd 2import re 3tweets_df = pd.read_csv("読み取るcsvファイル") 4tweets_df["text"] = tweets_df["text"].astype(str) 5vectors = [] 6tweets = [] 7for tweet in tweets_df["text"]: 8 tweet = re.sub('\n', " ", tweet) 9 strip_tweet = re.sub(r'[︰-@]', "", tweet) 10 try: 11 if len(strip_tweet) > 3: 12 vector = compute_vector( 13 strip_tweet, model, bert_tokenizer, juman_tokenizer) 14 vectors.append(vector) 15 tweets.append(tweet) 16 except Exception as e: 17 continue 18pd.DataFrame(tweets).to_csv('./tweets_text.tsv', index=False, header=None) 19pd.DataFrame(vectors).to_csv('./tweets_vector.tsv', sep='\t', index=False, header=None)
4. 自分で調べたことや試したこと
該当するソースコードに加えてサイト上に記載されている def~ から始まるコードを挿入したが,正しい挿入位置が分かっておらず,空のtsvファイルが出力されている状態.
5. 使っているツールのバージョンなど補足情報
- Google Colaboratory上でコードを実行している
- 変換前のcsvファイルの中身は正しく出力されることを確認済み
あなたの回答
tips
プレビュー