StreamlitでChatGPTのUIを作る—LangChain ReActエージェントとGoogle検索の組み合わせ

Streamlit と LangChain を組み合わせて、Google検索・Wikipedia検索ツールを持つ ChatGPT エージェントのWebUIを作りました。LangChain の ReAct(Reason + Act)エージェントが自律的にツールを選択して質問に答えます。 [Read More]

EasyOCRで日本語画像をテキスト化—セットアップから実運用まで

EasyOCRを使ってJPEG画像から日本語テキストを抽出するスクリプトを作りました。フォルダにまとめて置いた画像を一括処理し、テキストファイルに書き出します。日本語OCRの精度と前処理のコツも解説します。 [Read More]

GradioでAI水平思考クイズを作ってHugging Face Spacesにデプロイした話

水平思考クイズ(海亀スープ)のAI GMをGradioで作りました。Cohere の command-r-plus モデルが「はい」「いいえ」「わからない」で答えるGMを担当し、CSVで問題を管理します。Hugging Face Spacesに無料でデプロイしています。 [Read More]

Xのタイムラインを自動要約!FastAPI + LLMで作るトピックダイジェストシステムの設計

関心のあるトピック(キーワード)を登録すると、X(Twitter)の関連ツイートを収集しLLMで要約するWebアプリ「TopicDigestX」の設計を紹介します。FastAPI + SQLAlchemy + React + Viteの構成で、Docker Composeで手軽に起動できます。 [Read More]

Apple SiliconでLLMをファインチューニング!MLX + LoRAで日本語読解モデルを自作する方法

LiquidAI の LFM2.5-1.2B-JP モデルを Apple Silicon の MLX フレームワークで LoRA ファインチューニングするパイプラインを構築しました。JsQuAD(日本語読解)データセットで学習し、カスタム Chunked Loss と早期停止も実装しています。 [Read More]

バンドのセットリストをAIで自動生成!OR-Tools TSPで転換コストを最小化する方法

バンド「Luke Avenue」のセットリスト作成を自動化するスクリプトを開発しました。OR-ToolsのTSP(巡回セールスマン問題)ソルバーで、メンバー交代によるパート転換コストを最小化した最適な曲順を自動生成します。YouTube APIで曲の長さも自動取得します。 [Read More]

声を学習してテキスト読み上げ!TADAで作る日本語ボイスクローンTTSシステム

HumeAIのTADA(Text-Acoustic Dual Alignment)を使って、参照音声の声質でテキストを読み上げるボイスクローンTTSシステムを構築しました。FastAPIサーバーとCLIツールで構成し、日本語の読み上げに対応しています。 [Read More]

配信録画を自動で分割!FFmpegのsilencedetectで作る動画分割Webアプリ

FFmpegのsilencedetect フィルターを使って動画を無音区間で自動分割する Webアプリ「JamSlicer」を開発しました。従来の librosa/moviepy 実装と比べてメモリ使用量を 1/100 以下に抑えつつ、分割速度を10〜20倍に向上させた実装を解説します。 [Read More]

How to Efficiently Solve Low Accuracy and High Cost Issues in Japanese Text Generation with T5

Challenges in Japanese Text Generation

When working on Japanese text summarization, title generation, and document classification tasks, do you face these problems?

1. Accuracy Issues

  • Traditional rule-based methods cannot generate natural Japanese text
  • English-oriented models cannot handle Japanese grammar and expressions
  • Need to build separate models for multiple tasks

2. Development Cost Issues

  • Time and resources required for task-specific model development
  • Different approaches needed for document classification, summarization, and title generation
  • Enormous effort required for preparing training data and building models

3. Operational Complexity

  • Need to manage and operate multiple models
  • Different APIs and interfaces for each task
  • Complex model updates and maintenance

Real-world Text Generation Challenge Cases

Failure Case: Limitations of Task-specific Individual Development

# Traditional approach
classification_model = load_bert_classifier()      # For document classification
summarization_model = load_summarization_model()   # For summarization
title_generation_model = load_title_model()        # For title generation

# Problems:
# - Managing 3 separate models
# - 3x memory usage
# - High development and maintenance costs

The solution to this problem is Japanese T5 (Text-To-Text Transfer Transformer).

[Read More]

日本語文書の意味的類似度計算が遅い・精度が低い問題をSentence BERTで解決する方法

文書類似度計算で直面する課題

日本語の文書検索や推薦システムを構築する際、以下のような問題に直面していませんか?

1. 精度の問題

  • 単語レベルの一致だけでは文書の意味的類似度を正確に測れない
  • 同じ意味でも表現が異なる文書を関連文書として発見できない
  • 従来のTF-IDFやBM25では意味的な類似度が取得できない

2. 計算速度の問題

  • BERTモデルで毎回文書をエンコードすると時間がかかりすぎる
  • 大量の文書との類似度計算がリアルタイムで実行できない
  • 文書検索のレスポンス時間が数秒〜数十秒かかる

3. 日本語対応の問題

  • 英語向けのモデルでは日本語の意味的類似度が正確に取得できない
  • 日本語特有の表現や文法構造に対応していない
  • カスタムモデルの構築が困難

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

失敗事例:従来手法での限界

# TF-IDFによる類似度計算の例
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 以下のような文書では類似度が正しく計算されない
doc1 = "機械学習の精度を向上させる方法"
doc2 = "AIモデルの性能を改善する手法"
# 結果: 低い類似度(単語が異なるため)

# BERTの直接利用も計算コストが高い
# 毎回エンコードが必要で、大量データに不向き

この問題を解決するのが**Sentence BERT**です。

[Read More]