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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

Q&A

0回答

587閲覧

Google Colaboratoty上でBERTを使用してcsvファイルを文章ベクトルに変換し,tsvファイルとして出力する方法

Leo-It

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

0グッド

0クリップ

投稿2022/06/09 02:08

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ファイルの中身は正しく出力されることを確認済み

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問