Open6

文字レベルのtext-to-textをしたい (char-level text-to-text)

ruiiixiiiruiiixiii

背景

通常の翻訳タスクでは単語レベルで分割されたデータを学習すると思う
だが、それが適当でないような文字列を扱いたいので、文字レベルで処理をするモデルを作りたい

該当するドメインの事前学習モデルがhuggingfaceで見つからなかったので、近いタスクを行っているモデルからfine-tuningしたい

ruiiixiiiruiiixiii

とはいえ機械学習、自然言語処理に関する知識が浅いので、とりあえずhuggingfaceの使い方、前提知識をつける

以下の記事がわかりやすかった
https://zenn.dev/ttya16/articles/ce89dcab833d32cadb39
これ以降のpartで詳しい話や、transformerそのものに関する話もあって理解が深まった

今回の場合part5で詳しい話の出ているtokenizerが特殊になりそう
tokenizerは文字列を分けたりしてベクトルを与える処理という認識
数値化してモデルに与える
https://zenn.dev/ttya16/articles/0e3e1bff645f161fb4d7

だが該当するtokenizerはなかった

ruiiixiiiruiiixiii

ByT5について調査したところ、
utf-8のbyteを使って学習するらしい(byte版のt5ってことですね)
https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part17.html
0~255+αくらいのパターンですべての文字を表せるのが強み
ただ、英語より日本語の方が不利とのこと
日本語の方が使われるByte数が多いからではとのこと

(今回自分が扱いたいのが自然言語そのままって感じでもないのでもしかしたらByT5でもいけるかも)