Portfolio - Yumiko Sawa
AI & Language Learning Apps

自然言語処理と教育工学の知見を活かし、AI × フランス語学習に特化したアプリケーションを開発しています。

I develop AI-powered French learning applications, leveraging expertise in natural language processing and educational technology.

🎓 学習歴・修了講座 - Learning History

学習プログラム詳細 / Learning Program Details

キカガク「DXを推進するAI・データサイエンス人材育成長期コース」

Kikagaku Co., Ltd. - AI & Data Science Professional Development Program

  • Python基礎(文法・関数・データ型・モジュール)

    Python Fundamentals (Syntax, Functions, Data Types, Modules)

  • データサイエンス(多変量解析・データ分析・前処理・特徴量エンジニアリング)

    Data Science (Multivariate Analysis, Data Analysis, Preprocessing, Feature Engineering)

  • 機械学習(scikit-learn・XGBoostで分類・回帰・評価)

    Machine Learning (Classification, Regression, Evaluation with scikit-learn & XGBoost)

  • 画像処理(OpenCV・Pillow/画像前処理・CNN基礎)

    Computer Vision (OpenCV, Pillow, Image Preprocessing, CNN Fundamentals)

  • ディープラーニング(PyTorch入門/理論・演習基礎)

    Deep Learning (PyTorch Introduction, Theory & Hands-on Practice)

  • 自然言語処理(基礎理論)

    Natural Language Processing (Fundamental Theory)

  • API開発(FastAPI/基礎・演習)

    API Development (FastAPI Fundamentals & Practice)

東京大学 松尾研究室「大規模言語モデル(LLM)講座 2024」

University of Tokyo - Matsuo Lab "Large Language Models (LLM) Course 2024"

  • 言語モデルの概要・仕組み

    Overview of Language Models

  • プロンプト設計・RAG

    Prompt Engineering & RAG (Retrieval-Augmented Generation)

  • 事前学習・拡張学習

    Pre-training & Advanced Pre-training

  • Scaling Law(モデル規模の法則)

    Scaling Laws

  • 半導体エコシステムとLLMの発展基盤

    Semiconductor Ecosystem & LLM Development Infrastructure

  • Supervised Fine-Tuning(教師ありファインチューニング)

    Supervised Fine-Tuning (SFT)

  • RLHF & Alignment(報酬付き学習・整合性)

    RLHF (Reinforcement Learning from Human Feedback) & AI Alignment

  • 安全性・LLMの理論と分析

    AI Safety & LLM Analysis and Theory

  • LLM応用

    LLM Applications (Domain-Specific LLM, LLM for Control)

  • 最終課題:LLMのコンペティション型課題

    Final Project: LLM Competition Challenge

東京大学 松尾研究室「AI Business Insights AI経営講座 2025」

University of Tokyo - Matsuo Lab "AI Business Insights - AI Management Course 2025"

  • AIトレンド・ビジネスユースケース・業界別動向

    AI Trends, Business Use Cases & Industry-Specific Insights

  • 生成AIの技術進化と未来展望

    Generative AI Technology Evolution & Future Prospects

  • AIガバナンス・法規制・リスク管理・サステナビリティ

    AI Governance, Legal Regulations, Risk Management & Sustainability

  • 顧客体験・マーケティング/バックオフィス改革・ロボティクス

    Customer Experience, Marketing/Back-office Innovation & Robotics

  • 人材育成・AI共創戦略・AI経営のあり方

    Talent Development, AI Co-creation Strategy & AI-driven Management

  • 各業界の実務者による最新事例とケーススタディ

    Case Studies & Latest Industry Examples by Business Practitioners

  • (この講義では、AIの社会実装インサイトに基づき、業界・ソリューション別のビジネス動向とAI活用のポテンシャルとリスク、企業戦略における攻めと守りの両側面を学習)

    Focus: AI implementation insights, industry-specific business trends, AI potential & risks, and comprehensive corporate strategy (both offensive & defensive approaches)

東京大学 松尾研究室「AIと半導体講座 2025」

University of Tokyo - Matsuo Lab "AI and Semiconductor Course 2025"

  • LLMなどの先端AIモデル、機械学習、NN基礎、最適化

    Advanced AI Models such as LLMs, Machine Learning, Neural Network Basics, and Optimization

  • 画像認識

    Image Recognition

  • 半導体エコシステムの外観

    Overview of the Semiconductor Ecosystem

  • CUDA/GPUライブラリ

    CUDA and GPU Libraries

  • CPUとコンピュータの構成

    CPU and Computer Architecture

  • GPUのアーキテクチャについて

    GPU Architecture and Design Principles

  • 組み合わせ回路、順序回路、HW設計論やFPGAとは?

    Combinational and Sequential Circuits, Hardware Design Theory, and Introduction to FPGA

  • 【演習】FPGA設計演習のチュートリアル(FPGAの基礎、設計方法、AWSクラウドを使ったFPGA設計体験、AIプロセッサ開発)

    [Workshop] FPGA Design Tutorial: Basics of FPGA, Design Methods, FPGA Design on AWS Cloud, and AI Processor Development

  • 【演習】FPGA設計演習の実施(ハンズオン・クラウド演習)

    [Workshop] Practical FPGA Design Exercises (Hands-on and Cloud-based Sessions)

東京大学 松尾研究室「GCI 東京大学グローバル消費インテリジェンス寄付講座 2025」

University of Tokyo - Matsuo Lab "Global Consumer Intelligence Endowed Course 2024"

  • Pythonコーディング(NumPy, Pandas, Matplotlib)

    Python Coding (NumPy, Pandas, Matplotlib)

  • データ分析(特徴量エンジニアリング・教師なし学習・時系列・モデル検証とチューニング)

    Data Analysis (Feature Engineering, Unsupervised Learning, Time Series, Model Validation & Tuning)

  • ビジネス応用(SQL・マーケティング基礎応用・ゲスト講義)

    Business Applications (SQL, Marketing Fundamentals & Applications, Guest Lectures)

  • 実践演習(Python宿題・データ分析コンペティション・最終課題)

    Practical Exercises (Python Assignments, Data Analysis Competition, Final Project)

🛠 技術スキル - Technical Skills

💻 プログラミング言語

🔧 フレームワーク・ライブラリ

🌐 API・外部サービス

⚙️ 開発環境・ツール

🎯 AI技術・手法

🪄 AIクリエイティブツール

🏢 業務自動化・データ基盤

🚀 プロジェクト経験・挑戦したこと - Project Experience

💻 制作実績 - Portfolio Projects

1. 💫 French Flashcard Study App

効率よく単語を記憶できるよう、復習タイミングにこだわったフランス語学習アプリです。
Streamlitで開発し、ユーザーの記憶状況に合わせて最適なタイミングで単語を出題。忘却曲線の理論を応用し、着実な語彙定着をサポートします。

A French vocabulary learning app focused on maximizing retention through smart review scheduling. Built with Streamlit, it adapts to users' memory status and presents words at optimal times, applying the forgetting curve theory for solid vocabulary acquisition.

技術的チャレンジ:

FastAPI・Streamlit・OpenAI APIを連携し、ChatGPT APIの翻訳出力を最適化するためのプロンプト設計・パラメータ調整を工夫。効率的かつ高品質な翻訳機能を実装しました。

Technical Challenge: Integrated FastAPI, Streamlit, and OpenAI API, and engineered prompt design and parameter tuning to optimize ChatGPT translation output, achieving efficient and high-quality translations.

将来の展望:

音声再生や学習進捗の可視化、個別最適化された復習タイミングなど、より学びやすいAI学習アプリを目指して拡張予定です。

Future Vision: Plans for features like audio playback, progress visualization, and personalized review intervals to create an even more effective AI-powered language learning app.

使用技術:

Python, Streamlit, FastAPI, OpenAI API, Pandas, GitHub

🔗 GitHubでコードを見る

🎥 DEMO

2. 🕵️‍♀️ French Level Predictor App

フランス語単語の難易度を機械学習で予測する学習支援Webアプリケーション。
Scikit-learnを用いた分類モデルと、StreamlitによるインタラクティブなUIを組み合わせて開発しました。

A web application that predicts French word difficulty using machine learning. Developed with Scikit-learn classification models and an interactive Streamlit interface.

技術的チャレンジ:

データ前処理から機械学習モデルの構築・評価まで、MLプロジェクトの全工程を実装。精度向上に向けた試行錯誤を通じて、実践的なスキルを習得しました。

Technical Challenge: Implemented the complete ML pipeline from data preprocessing to model evaluation, gaining practical skills through iterative accuracy improvements.

将来の展望:

現在は単語の難易度予測のみに対応していますが、今後は文章全体のレベル予測も行い、French Flashcard Study App と統合する予定です。
学習者の語彙レベルに合わせて、最適な教材や例文を自動で出題できるような設計を目指しています。

Future Outlook: Currently, the app supports only word-level difficulty prediction. In the future, it is planned to integrate this app with the French Flashcard Study App, enabling sentence-level difficulty assessment and automatic suggestion of appropriate materials and example sentences tailored to each learner's level.

使用技術:

Python, Scikit-learn, Pandas, Streamlit

🔗 GitHubでコードを見る

🎥 DEMO

3. 🤖 Japanese Instruction-following LLM

東京大学 松尾研究室主催「大規模言語モデル講座」最終課題として開発。
日本語ベンチマークである ELYZA-tasks-100 および Ichikara instruction を学習データとして使用し、その改変版である ELYZA-tasks-100tv を用いて、 命令応答能力(instruction-following)を強化するファインチューニングを実施しました。  ファインチューニングしたモデルは Hugging Face にて公開しています。

Developed as the final project for the "Large Language Models Course" hosted by the Matsuo Laboratory at the University of Tokyo. Fine-tuned for enhanced Japanese instruction-following capabilities using ELYZA-tasks-100 and Ichikara instruction datasets, with evaluation on ELYZA-tasks-100tv. The fine-tuned model is publicly available on Hugging Face.

技術的チャレンジ:

日本語特化ベンチマークであるELYZA-tasks-100とIchikara instructionを学習データとし、ELYZA-tasks-100tvで評価することで日本語の命令理解能力を体系的に強化しました。 Unsloth + LoRA による軽量ファインチューニングを Google Colab 上で実施し、4bit量子化(QLoRA)によって GPU メモリ使用量を削減することで、限られた計算リソースでも安定した推論を実現し、未学習のタスクに対しても一定の応答性能を確認しました。
また、推論コードや JSONL 形式の出力フォーマットを整備し、再現性のある成果として公開しています。

Systematically enhanced Japanese instruction-following capabilities using ELYZA-tasks-100 and Ichikara instruction for training with ELYZA-tasks-100tv evaluation. Implemented lightweight fine-tuning using Unsloth + LoRA on Google Colab, achieving stable inference with limited computational resources through 4-bit quantization (QLoRA) for reduced GPU memory usage and confirmed reliable performance on unseen tasks. Established reproducible results by organizing inference code and JSONL output formats for public release.

学習成果:

本プロジェクトを通じて、PEFTによる効率的なファインチューニング手法と、 日本語LLMの評価手法について実践的な経験を積むことができました。

Through this project, I gained practical experience in efficient fine-tuning methods using PEFT and evaluation approaches for Japanese LLMs.

使用技術:

Python, Transformers, Hugging Face, Google Colab, Unsloth, LoRA, JSONL

🔗 Hugging Faceでモデルを確認する


4. 🎤 音声認識 × ChatGPT 対話型チャットボット

WhisperとChatGPTを組み合わせた音声対話AI「ミライミミ」を試作しました。 Gradio UIをGoogle Colab上で動作させ、ブラウザだけで音声入力・応答確認・読み上げまで可能な構成にしています。

MiraiMimi is a prototype combining Whisper and ChatGPT for voice-based interaction. The Gradio interface runs on Google Colab, enabling in-browser speech input, response, and audio playback.

技術的チャレンジ:

音声入力のテキスト変換からChatGPTによる応答生成までの処理を組み合わせ、簡易的な対話パイプラインを試作しました。

Technical Challenge: Built a complete pipeline from speech input to text conversion, ChatGPT response generation, and speech synthesis. Focused on character design through prompt engineering and leveraging speech recognition variations for natural conversation flow.

将来の展望:

教育分野での語学練習、観光案内での音声ガイドなど、音声AIの幅広い応用可能性を検証していきたいです。
そしてより高精度な音声認識と、感情表現豊かな音声合成の実装も目指しています。

Future Vision: Exploring applications in language learning and voice-guided tourism. Planning to implement higher-accuracy speech recognition and emotionally expressive speech synthesis.

使用技術:

Python, OpenAI Whisper, OpenAI GPT-3.5, Gradio, Google Colab, gTTS, pyttsx3

🎥 DEMO

5. 🚢 Titanic Survival Prediction (Kaggle - GCI)

東京大学松尾研究室主催のGCI講座にて、Kaggle「Titanic: Machine Learning from Disaster」に参加。 データ前処理・EDA(探索的データ分析)・特徴量エンジニアリング・モデル構築・評価までの一連の流れを実践しました。 特徴量エンジニアリングでは、名前から敬称を抽出・カテゴリ化、家族人数の作成、Cabin 欠損の有無フラグ化、年齢の欠損を中央値で補完するなどの工夫を行い、予測精度向上を図りました。 さらに、ランダムフォレスト・ロジスティック回帰・MLP など複数モデルを構築し、GridSearchCV によるハイパーパラメータ調整を通じて性能を改善しました。

Participated in Kaggle's "Titanic: Machine Learning from Disaster" competition through the GCI program hosted by the University of Tokyo's Matsuo Lab. Implemented the data science pipeline from preprocessing, EDA (Exploratory Data Analysis), feature engineering, model building, to evaluation. For feature engineering, extracted and categorized titles from names, created family size features, flagged missing Cabin data, and imputed missing age values with medians to improve prediction accuracy. Built multiple models including Random Forest, Logistic Regression, and MLP, and improved performance through hyperparameter tuning with GridSearchCV.

使用技術:

Python, Pandas, Scikit-learn, Matplotlib, Seaborn, Random Forest, Logistic Regression, MLPClassifier, GridSearchCV

将来の展望:

今後は XGBoost を導入し、さらに精度向上を図る予定です。 また、Kaggle の Titanic コンペに改めて参加し、より良いスコアを目指したいと考えています。

In the future, I plan to implement XGBoost to further improve prediction accuracy. I also aim to rejoin the Kaggle Titanic competition and strive for a higher score.

6. 📊 AirREGI アカウント獲得予測プロジェクト(GCI最終課題)

AirREGI Account Acquisition Prediction Project (GCI Final Assignment)

東京大学松尾研究室主催「GCIグローバル消費インテリジェンス」寄附講座の最終課題として、AirREGIのアカウント獲得数を外部要因から予測するモデルを開発しました。

Developed a predictive model for AirREGI account acquisition based on external factors as the final assignment for the University of Tokyo's "Global Consumer Intelligence" endowed course.

目的:

Objectives:

使用技術・手法:

Technologies & Methods:

分析結果:

Analysis Results:

学びと工夫:

ただ精度の高い予測モデルを作るのではなく、そこからビジネスに役立つ気づきを得ることを目標にしました。 そのために、XGBoostとOptunaを組み合わせてモデルの精度を高めつつ、SHAPを使ってブラックボックスになりがちなモデルを分かりやすく解釈する工夫をしました。 その結果、営業通話数とCMのかけ合わせが大きな要因になることや、特定の季節に需要が高まる傾向があることなど、単なる数値だけでは見えなかった発見を得られました。 モデル構築を“ゴール”ではなく“ビジネス戦略の起点”と捉える姿勢を学べたのが最大の成果です。

Through this project, my goal was not just to build a highly accurate predictive model, but also to extract insights that could be useful for business. To achieve this, I combined XGBoost with Optuna to improve model performance, while using SHAP to make the often “black box” nature of the model more interpretable. Through this process, I discovered that the interaction between sales calls and TV commercials played a major role, and that demand tended to rise in certain seasons—findings that wouldn’t have been visible from the numbers alone. The most valuable outcome was learning to see predictive modeling not as the “end,” but as a starting point for business strategy.

🔗 関連リンク

Related Links:

7. 🎨 AI Creative Content

MidjourneyとCanvaを活用し、AIで生成した画像素材を元に動画コンテンツを制作。
プロンプト設計から動画編集、YouTubeでの公開まで一貫して手掛けています。

Creating video content using AI-generated images from Midjourney combined with Canva editing. Handling the complete workflow from prompt design to video editing and YouTube publication.

使用技術:

Midjourney, Canva, ChatGPT (prompt engineering)

🎥 Showcase

8. 📩 実務PoC:反響メール集計業務の生成AI活用

AI活用支援を行う事業会社にて、住宅会社のマーケティング部門における反響対応業務(来場予約・資料請求などの反響メール集計)を題材に、会場名の自動判定PoCを設計・実装しました。
Google Apps Script(GAS)でGmail受信メールを取得し、必要項目を抽出してGoogleスプレッドシートへ構造化して記録。会場名の判定には、既存の会場マスタを候補リストとしてGoogle Gemini APIに渡し、候補の中から正式名称を選ばせる設計としました。

While working on AI adoption support at a business services company, designed and implemented a PoC for automatically identifying venue names in inquiry emails, focused on the marketing department's lead-response workflow at a housing company client. Using Google Apps Script (GAS), inquiry emails received via Gmail were parsed, structured, and logged into Google Sheets. Venue identification was handled by passing an existing venue master list as candidates to the Google Gemini API, which selected the matching official name from that list.

技術的チャレンジ:

Geminiには候補リストの中から一字一句そのまま選ぶよう指示し、候補外の場合は「該当なし」と判定させる完全一致検品ロジックを実装。Gemini無料枠のレート制限(1分あたり5回、1日20回)に対応するため、リクエスト間に約13秒の待機時間を設け、エラー発生時には自動で最大3回リトライする仕組みも組み込みました。
また、全件をAIに通すのではなく、パターンが固定的な問い合わせ(資料請求など)はGAS側のルール処理のみで完結させ、AI呼び出しを会場特定が難しいケースに絞ることで、不要なAPI呼び出しを抑える設計としました。
検証は128件の会場候補リストに対して20件のテストを実施し、概念的に妥当な候補を選択できたものは17件(85%)、文字列として完全一致したものは14件(70%)でした。

Technical Challenge: Implemented a strict validation function that only accepted exact matches from the candidate list, falling back to "no match" otherwise. To handle the Gemini free tier's rate limits (5 requests/minute, 20/day), I added a ~13-second wait between requests and automatic retry (up to 3 attempts) on errors. Rule-based logic in GAS handled clearly patterned inquiries (e.g., brochure requests) without invoking the AI, reserving API calls for genuinely ambiguous cases. Testing against a 128-item candidate list across 20 cases showed conceptually reasonable matches in 17 cases (85%) and exact string matches in 14 cases (70%).

学びと工夫:

検証を通じて、会場候補リスト自体が固定的な正解マスタではなく、運用上随時追加・調整されているものであることが判明しました。この事実と、AIの判定精度(完全一致70%)を踏まえ、AI単独を本番の確定方式とするには課題が残ると判断。本番運用ではルールベースの数式・対応表方式を提案しました。
一方で、対応表だけでは拾いきれない例外パターン(新イベント、表記ゆれの大きいケースなど)にはAIによる曖昧マッチングが補助的に有効という可能性も見えたため、「基本はルール、例外はAI」という役割分担の視点を得ました。AIに任せる部分と、ルール・人間確認で担保する部分を切り分ける設計判断の重要性を学びました。

Testing revealed that the venue candidate list was not a fixed master but an evolving, manually maintained list. Combined with the AI's exact-match accuracy (70%), I concluded that AI alone was not yet reliable enough to serve as the production source of truth, and recommended a rule- and mapping-table-based approach for production instead. At the same time, AI-based fuzzy matching showed promise for handling exception cases the mapping table couldn't cover — new events, cases with significant notation variance — leading to a "rules for the common case, AI for exceptions" design perspective, and a broader lesson in separating what to delegate to AI versus what to secure with rules and human review.

処理フロー:

  1. Gmailで反響メールを受信
    HPの問い合わせフォーム等からの反響メールを受信。
  2. Google Apps Scriptで件名・本文・受信日時を取得
    メール受信をトリガーにGASが起動し、必要項目を抽出。
  3. Gemini APIで会場候補とのマッチングを検証
    メール本文の表現と会場候補リストの名称が完全一致しないケースがあったため、AIによる意味理解を活用したマッチングを検証。20件のテストのうち17件で概念的に妥当な候補を選択できた一方、日付表記・表記ゆれ・類似会場名の誤選択といった精度面の課題も確認した。
  4. 判定結果をGoogleスプレッドシートへ構造化して記録
  5. 会場候補リストの運用実態を確認
    候補リストは固定の正解マスタではなく、運用上随時追加・調整されているものであることが判明。AI単独を本番の確定方式とするには課題が残ると判断した。
  6. 対応表・数式・人間確認を組み合わせて最終会場名を補正
    この検証結果をもとに、本番運用ではsubject列と数式・対応表を軸にした方式を提案した。
  7. 整理済みデータをLooker Studioで可視化する想定でデータ構造を検討

💡 このPoCの成果は、「AIを導入したこと」自体ではなく、AI検証を通じて会場データが固定マスタではなく変化するものだと明らかになった点、そしてその検証結果をもとに、実運用にはルール・数式ベースの方が適していると判断できた点にあります。

入力・出力データのイメージ(ダミー):

受信日時 問い合わせ種別 来場希望場所(本文記載) Gemini判定結果 検品ステータス
2026/03/05 10:12 来場予約 〇〇展示場(第一希望) 〇〇モデルハウス ✅ マスタ一致
2026/03/05 14:40 資料請求 △△会場希望 該当なし ⚠️ 人間確認へ
2026/03/06 09:03 来場予約 (本文に会場記載なし) 未判定 ⚠️ 対応表で補完予定

※ 表内の日時・会場名・件数はすべて架空のサンプルです。実際の顧客データは含まれていません。

使用技術:

Google Apps Script (GAS), Gmail, Google Gemini API, Googleスプレッドシート, Looker Studio

※社内業務のPoCのため、ソースコードは非公開です。