本記事ではhuggingfaceのtransformersAutoModelを使って独自クラスを利用する方法を紹介します。 transformersはAutoModelによって、事前学習済みモデルがどのモデルの実装なのかを意識せずに利用できます。 たとえばモデルのアーキテクチャや事前学習済みのパラメータを変えて実験をするプログラムははモデル名をmodel_name_or_pathとした場合 model = AutoModel.from_pretrained(model_name_or_path) とだけ記述すれば事前学習済みパラメータで初期化されたモデルを読み込めます。 このAutoModelで独自クラスを利用できればtransformersで実装されている他のモデルと同様に利用が容易になります。

続きを読む

本記事はhuggingfaceのdatasetsを利用してサンプリングの割合を考慮しながら複数のデータセットを混ぜて扱う方法を紹介します。 紹介する方法を知っておくと、例えば言語モデルの事前学習など、複数のテキストコーパスを組み合わせて利用する際に便利です。

続きを読む

本記事ではpre-commitを使ってコミット前にPythonプログラムを自動検査する方法を紹介します。 モジュールのインポート順序や行あたりの文字数を始め、人が意識せずに標準化したいルールは多くあります。 このようなルールをコミット前に自動で検査・修正することでより簡単にきれいなプログラム開発を進められます。

続きを読む

以前setup.pyを使って自作パッケージをライブラリ化する記事を書きました。 setup.pyを代替するツールにPoetryというものがあります。 Poetryを使うことでパッケージが依存するライブラリの依存関係を自動で解消してくれます。 本記事ではPoetryの基本的な利用方法についてまとめました。

続きを読む

pybind11を使うことでC++で書いたライブラリをPythonから利用できるようになります。 例えばDeep LearningフレームワークのPyTorchもコア部分をC++で実装し、pybind11を使ってPythonから利用できるようになっています。 pybind11の公式リファレンスを読むことで基本的なことはわかったのですが、Pythonモジュールをサブモジュールごとにファイルに分割する方法がわからなかったので本記事を作成しました。 特にプログラムが複雑になってきたときにファイルを分割してサブモジュールを作成したいことが出てくると思います。 ベストプラクティスなのかわかりませんが、本記事が同じ疑問を持っている方の解決策になれば幸いです。

続きを読む

scikit-learnのTfidfVectorizerではテキストを単語分割するためのtokenizerを与えることができます。 日本語テキストを対象とする場合、日本語の形態素解析器であるMeCabのPythonラッパーが提供するTaggerを利用したオブジェクトをtokenizerと指定することがあるのではないでしょうか。 tokenizerにTaggerオブジェクトを指定したTfidfVectorizerをpickleで保存するとエラーが出てしまい、ファイルに書き出すことができません。 本記事ではMeCabのTaggerオブジェクトを活用したtokenizerによってテキストを単語分割するTfidfVectorizerをpickle化するための方法を紹介します。 本記事を読むことで独自に定義したクラスをpickleするための方法について理解できます。

続きを読む

本記事ではscikit-learnを用いて自然言語処理モデルを構築する際に、tfidfに加えてそれ以外の特徴量を利用する方法をサンプルコード付きで紹介します。 scikit-learnで自然言語処理モデルを構築する際は、scikit-learnで用意されているクラスを用いて簡単にテキストをtfidfベクトルに変換することができます。 さらにscikit-learnでは種類の異なる特徴を容易に組み合わせるためのAPIも提供しています。 このAPIを用いることでtfidfに加えて、独自で実装した特徴量を考慮できます。 本記事を読むことで、独自の特徴を抽出するクラスを定義する方法に加えて、複数の特徴を組み合わせて利用するための方法を理解できます。

続きを読む

プロフィール画像

Takuya Makino

自然言語処理の研究開発に従事しています。自然言語処理に関する研究から製品化に向けた開発に興味を持っています。本ブログでは自然言語処理、機械学習、プログラミング、日々の生活について扱います。詳細はプロフィールを御覧ください。

自然言語処理の研究開発に従事

Kanagawa, Japan