Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's ...
Search
pokutuna
October 24, 2024
Programming
0
1.5k
生成 AI を活用した toitta 切片分類機能の裏側 / Inside toitta's AI-Based Factoid Clustering
はてな 生成AI×新規事業 の挑戦 〜生成AIを学びながら技術とチームを磨いた事業立ち上げの道のり〜
https://hatena.connpass.com/event/333037/
pokutuna
October 24, 2024
Tweet
Share
More Decks by pokutuna
See All by pokutuna
コーディング AI と暮らしの変化
pokutuna
0
10
新規事業 toitta の立ち上げを 加速させた Google Cloud の活用
pokutuna
0
53
はてなインターン2024 AI 講義
pokutuna
0
10
はてな広告配信システムクラウドネイティブ化への道のり / Cloud Native Migration: Evolution of Hatena's Ad Delivery System
pokutuna
0
32
checked_bookmark.pdf
pokutuna
0
110
Other Decks in Programming
See All in Programming
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
270
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
730
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
480
AI Ramen Fight
yusukebe
0
120
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
2
1.3k
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
660
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
710
Go製CLIツールをnpmで配布するには
syumai
0
760
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
8
360
リッチエディターを安全に開発・運用するために
unachang113
1
270
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
24
10k
AIのメモリー
watany
11
1.1k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Site-Speed That Sticks
csswizardry
10
720
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
390
Bash Introduction
62gerente
613
210k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Transcript
高性能な AI を使うだけじゃない! 生成 AI を活用した toitta 切片分類機能の裏側 id:pokutuna 2024/10/24
はてな 生成AI×新規事業 の挑戦 1
id:pokutuna • toitta の AI 周辺担当 • 2013 新卒入社 ➡
受託開発 ➡ 広告配信・データ基盤 ➡ 新規事業 アイコン 2
アジェンダ • 切片分類(グルーピング)機能とは • グルーピング処理の流れ • 生成 AI を利用する上での工夫 3
4 toitta の機能
5
書き起こし & 話者分離 6 話者判定と分離 話者の判定と分離を⾃動で⾏い ます。 段落分割で⻑時間のインタ ビューによる書き起こしも⾒や すくします。
佐々木さん 佐藤さん
切片の抽出 7 インタビュイーの発話を中心に切片化
切片グルーピング 8 佐々木さん 佐藤さん
toitta の機能 • 書き起こし & 話者分離 音声認識技術・言語モデルを利用 • 切片の抽出 生成
AI による抽出・要約・加工 • 切片グルーピング 生成 AI による要約・クラスタリング 9
toitta の機能 • 書き起こし & 話者分離 音声認識技術・言語モデルを利用 • 切片の抽出 生成
AI による抽出・要約・加工 • 切片グルーピング 👈 ここの話 生成 AI による要約・クラスタリング 10
11 切片グルーピング
12 佐々木さん 佐藤さん "近い"切片をまとめる
13 佐々木さん 佐藤さん タイトル & サマリを付加
親和図法を支援 • 切片を付箋に書く • 似た切片をまとめる • まとまりの 関係性を可視化 14 羽山祥樹.
"KA法(本質的価値抽出法)の手順と実例「資格試験を受ける人のモチベーションの価値マップ」". https://www.figma.com/community/file/1142124393231568930 , (2024-10-18)
15 佐々木さん 佐藤さん
16 佐々木さん 佐藤さん 切片まとめるところまで • 特定手法に特化しない • 次の分析ステップを楽にする ◦ 分析作業は慣れたツールで
17 どのように グルーピングするか?
全体の流れ 18
AI にお願い • 「これらを分類してまとめて」 • 一見よさそうな出力は得られるが... ◦ 入出力の一貫性・網羅性がいまいち ◦ 粒度の調整が効かない
◦ トップダウン的分類になりがち 19
「近い」切片とは? • 定義が難しい • 作業者・状況によって違う • 切片テキストを 利用しようとしたが... 20
21 例: 引っ越しインタビュー
22 例: 引っ越しインタビュー 収納に関する話
切片の拡張 • 前後の発話から分類用の拡張切片を生成 • 意図・感情・行動・ニーズを拾って短く作文 • 各切片に対して実行 (100~200回/インタビュー) 23 話者は、収納スペースが不足していると感じ
壁面を活用している。キッチンに突っ張りで フェンスを作りフライパンをかけている。 拡張
Text Embedding 24 • 文章の意味を反映したベクトル表現 ◦ 意味が近いテキストは近くなる • 拡張した切片の Embedding
表現を得る ◦ Vertex AI のクラスタリングに適した Emb を利用 話者は、収納スペースが不足 していると感じ... [0.179, 0.187, … 0.205]
次元削減&クラスタリング 25 • UMAP で低次元へ削減 ◦ 高次元だとクラスタリングが働きにくい • HDBSCAN でクラスタリング
◦ 今回の用途に使いやすい ◦ 密度ベース・形状の変化に柔軟 ◦ クラスタ数決めなくて良い
切片のクラスタリング 26 :クラスタなし 使い始めたきっかけ ブコメについて あとで読む機能 通知機能 はてなスター エンジニアの情報収集
拡張切片の出力の調整 27 • 良いクラスタリングができるように調整 • 文の体裁を統一 ◦ ❌「インタビューでは」「〜と言っていました」 ◦ ⭕「話者は
(背景や理由) (行動) をした。」 に統一 • 固有名詞を避ける ◦ 共通すると過剰に類似度が高くなる ◦ キーワードでグルーピングしたいわけではない
タイトル & サマリ 28 • クラスタごとにタイトル & サマリを生成 ◦ 切片
& 拡張した切片を入力 ◦ 話者の行動に着目した説明を生成
全体の流れ 29
30 生成 AI を 利用する上での工夫
活用の工夫 31 • 切片の拡張 ◦ 簡単なタスクに落とし込む・必要な情報だけ与える • グループ化 ◦ 従来からある手法の活用
• タイトル & サマリの生成 ◦ 多段階の処理でユーザに見せる品質に整える
簡単なタスクに分解する 32 • 高度な推論能力がなくてもいい形に分解 ◦ 明確なタスク & 必要な情報だけ与える • 切片拡張では切片ごとに実行
◦ 1インタビューで 100~200 回実行 ◦ モデルの賢さ依存を下げる・出力を安定させる • モデルを使い分ける ◦ コスト・速度に優れる Gemini 1.5 Flash を利用
Gemini 1.5 Flash 33 Artifact Analysis "Gemini 1.5 Flash (Sep
'24): API Provider Benchmarking & Analysis" https://artificialanalysis.ai/models/gemini-1-5-flash/providers , (2024-10-18)
既存手法と組み合わせる 34 • Embedding & クラスタリング ◦ 昔からある手法 ◦ 結果も(相対的に)安定する
◦ 実装を見れる・説明性もある
多段処理で品質を保つ 35 • ユーザーに見せるテキスト品質 ◦ 敬体に統一・テキストの長さの調整 ◦ デザイン意図から特定の文字数に収めたい • 一度にまとめてやらない
◦ タイトル&サマリの生成 → 敬体に統一・文字数調整 • Gemini 1.5 Pro を利用
例: テキスト長の調整 36 グループ サマリ文字数 指示:110文字程度
課題 37 • 評価の難しさ ◦ 求めるグルーピング結果が定まっていない ◦ 定量的な指標に落ちていない • 調整を繰り返し定性的に評価
◦ 一対比較「A と B のどっちがいい?」
38 まとめ
39 ✅ 切片分類機能とは ✅ グルーピング処理の流れ ✅ 生成 AI を利用する上での工 夫
• 簡単なタスクに落とし込む • 従来からある手法と組み合わせる • 多段階の処理で品質をコントロール
hatena.co.jp/recruit 40 40
ご質問や感想は #hatenatech にお願いします 発表後ご質問をピックアップする場合がございます #hatenatech 41