文書分類の精度・速度・導入コストの三重苦をFasttextで一気に解決する戦略

文書分類で直面する三重苦

文書分類プロジェクトに取り組む際、以下のような問題に直面していませんか?

1. 精度の問題

  • 既存の手法では十分な精度が出ない
  • 複雑なディープラーニングモデルでも期待した結果が得られない
  • データセットによって性能が大きく左右される

2. 速度の問題

  • 学習時間が長すぎてイテレーションが回せない
  • GPUリソースが必要で開発コストが高い
  • 本格的なモデル訓練に数時間〜数日かかる

3. 導入コストの問題

  • 複雑なモデルの構築・運用が困難
  • 環境構築が複雑で他のメンバーに共有できない
  • プロトタイプ作成に時間がかかりすぎる

実際に遭遇した文書分類の課題事例

失敗事例:複雑なモデルでの挫折

# NeuralClassifierを使った事例
# 複雑な設定ファイルが必要
# GPU環境の準備が必要  
# 結果:精度が期待値以下、学習時間が長い

このような状況で、Facebook Researchが公開するFasttextライブラリが解決策として注目されています。

[Read More]

機械学習実験が管理できず再現性がない問題をMLflowで体系的に解決する方法

機械学習実験で直面する再現性の課題

機械学習の実験を繰り返していると、以下のような問題に直面することがありませんか?

  • 良い結果が出たモデルのパラメータを忘れてしまう
  • 過去の実験結果を比較できず、改善が進まない
  • チームメンバーと実験結果を共有できない
  • 同じ実験を再実行しても結果が再現できない

これらの問題は、機械学習の実践が「ある種の黒魔術」となってしまう原因でもあります。

[Read More]

キーワード検索では見つからない関連文書を発見する方法

セマンティック検索で解決する文書検索の限界

問題:なぜキーワード検索では欲しい文書が見つからないのか

社内の膨大な文書データベースから「機械学習の性能向上に関する文書」を探しているとします。キーワード検索で「機械学習」「性能向上」と入力しても、本当に必要な文書が見つからない経験はありませんか?

[Read More]

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

データ不足という現実的制約下での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]

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]