少ないデータで高精度な文書分類を実現する戦略

データ不足という現実的制約下でのFew-shot学習とTransfer Learning活用法

問題:なぜ実際のプロジェクトでは十分なデータが集まらないのか

「ニュース記事を『政治・経済・スポーツ・エンタメ』に自動分類したい。でも各カテゴリ30件ずつしかラベル付きデータがない…」

機械学習の教科書では数万件のデータセットが当たり前ですが、実際のビジネス現場では全く異なります。

[Read More]

日本語自然言語処理で直面する現実的な課題と解決策

文字化け、分かち書き、敬語処理など、日本語特有の問題を技術的に克服する方法

問題:なぜ日本語のテキスト処理は難しいのか

「英語のNLPライブラリを日本語に適用したら、全然うまくいかない…」

日本語の自然言語処理は、英語中心に設計されたツールでは対応できない独特な課題が多数存在します。

[Read More]

機械学習実験の混乱を解決する:再現できない結果との戦い

パラメータ管理とMLflowによる実験追跡の実践的解決法

問題:なぜ機械学習の実験結果が再現できないのか

「先週良い結果が出たモデルがあったんだけど、どのパラメータを使ったか覚えてる?」

機械学習プロジェクトでこんな会話を聞いたことはありませんか?多くのチームが直面する典型的な問題です。

[Read More]

ctranslate2でpytorchがimportできないエラーが出たので回避方法メモ

公式のインストール方法

pip install ctranslate2

CTranslate2(GitHub)

Macでは上手く動作しない

segmentatioin faultになった。

しかしlinuxでは動作するとの情報を得た。 なのでまずはMacの中でDocker環境を構築して問題を回避できないか確認しようとした。

[Read More]

pysenをインストールするとmypy周りで他のライブラリがエラーになる

pysenが入っていたらLangChainと依存関係がバッティングする?

環境

Mac OS poetry python == 3.9

LangChainのインストールに失敗する

poetry add langchain

が失敗する

CLANG 

C言語関係のエラーかと思われた。

なんだっけ

xcode-toolsのインストールとアップデート

pip install --update pip
pip install --upgrade setuptools

mypyのバージョンによるエラーらしい

[Read More]

Dockerfileでasdfを実行できないことについて

Dockerfile でsource ~/.bashrc ができない

  • Dockerfile ではデフォルトのシェルはsh
  • shではsourceは実行できない

対策1:デフォルトのシェルをbashに変更

  • デフォルトのシェルをbashに変更した SHELL [/bin/bash,-lc]

Dockerfile でasdfが実行できない

  • RUN asdf に失敗する
    • asdfが見つからない
  • しかしDocker内部ではasdfを実行できる

原因

  • DockerfileではRUNごとに異なるシェルが実行される

効果がなかったこと

  1. 同一のRUNでsource ~/.bashrcasdf install を実行
    1. asdfが実行できない
  2. bash/execでbashを再起動
    1. asdfが実行できない

最終的な対処

  • apt install python3

感想

  • Dockerとasdfと何重にも仮想環境を重ねることにどれだけの意味があるだろうか?

関連記事

参考資料


関連書籍

[Read More]

poetry環境でpytorchをインストールしても失敗したのでその対処法

poetry add torch でパスが通らない

  • Dcokerfile+Poetryで環境構築をしていた
  • poetry add torchでpytorchをインストールした
  • import torchでエラー
  • cuda周りのパスが通っていないらしい

対処法

  • poetry run python -m pip install torch
  • poetry.tomlに記述することもできるらしい

機械学習の基礎からモデルの仕組みまで体系的に学びたい方へ

[Read More]

日本語要約の手法・サービスのまとめ

  • 日本語文章の自動要約について調べたのでまとめておく
  • 原文から一部を選択的に抜粋する抽出型と機械翻訳のように対応する要約文を生成する生成型がある
  • またウェブで公開されている要約サービスもある

生成型要約

モデル

  • DNN 言語モデル
    • BERTの文脈から派生した要約手法が多い
    • BART
    • T5
      • 学習をすべて自然言語で設定して行うことで複数のタスクへと柔軟に対応する、というコンセプトのモデル
      • T5がhugging face で公開されたモデルをファインチューニングして使うことが割と手軽にできた
      • 要約だけでなく単語の分散表現を得ることにも使える
  • 整数計画問題
    • ソルバーで厳密に解くことができる
      • 無償のソルバーはpythonだとpulp, Python-MIPが選択肢になる
      • 式を記述する際の挙動の軽さから私はPython-MIPを勧める
    • 制約条件として文の数、文字数を指定できる
    • 計算時間が短いというわけではない
      • 定式化の問題か?
    • 各モデル
      • 文全体が一つのトピックを扱っていると仮定して、その代表的な文を拾ってくるイメージ
      • McDonaldモデル
      • 最大被覆モデル
      • 施設配置モデル
        • 劣モジュラ最適化問題に帰着できる
        • 文の類似度を計算する必要がある
        • 原論文では単語の重複をスコアとしている
          • ROUGEみたいな
          • 2022年現在では文の分散表現を求めることもできるのでそこはケースバイケースで特徴量を選択する
  • LexRank
    • 文間の類似度からグラフ関係を計算して、重要な文をランキングする
    • 文字数の指定はできない
    • Sentence Transformersのサイトに実装例がある
      • 日本語に適用するには多少の修正が必要になる
    • 別に文の間の類似度が出せるならSBERTでなくてもいい
      • ROUGE, USEなど

サービス

  • イライザダイジェスト
    • 3文に要約
    • 割と内容を理解した出力をする印象
    • 生成型特有のゆらぎが見られる
      • 不自然な箇所に句読点など
  • タンテキ(サービス終了)
    • 3文に要約
    • 抜粋型か?

関連記事


機械学習の基礎からモデルの仕組みまで体系的に学びたい方へ

[Read More]