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.4k
生成 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
3
新規事業 toitta の立ち上げを 加速させた Google Cloud の活用
pokutuna
0
25
はてなインターン2024 AI 講義
pokutuna
0
3
はてな広告配信システムクラウドネイティブ化への道のり / Cloud Native Migration: Evolution of Hatena's Ad Delivery System
pokutuna
0
11
checked_bookmark.pdf
pokutuna
0
110
Other Decks in Programming
See All in Programming
Lambda(Python)の リファクタリングが好きなんです
komakichi
4
230
The Implementations of Advanced LR Parser Algorithm
junk0612
1
1.3k
The New Developer Workflow: How AI Transforms Ideas into Code
danielsogl
0
100
Bedrock×MCPで社内ブログ執筆文化を育てたい!
har1101
7
1.4k
読書シェア会 vol.4 『ダイナミックリチーミング 第2版』
kotaro666
0
110
Laravel × Clean Architecture
bumptakayuki
PRO
0
130
[NG India] Event-Based State Management with NgRx SignalStore
markostanimirovic
1
190
Fiber Scheduler vs. General-Purpose Parallel Client
hayaokimura
1
280
実践Webフロントパフォーマンスチューニング
cp20
45
9.9k
Instrumentsを使用した アプリのパフォーマンス向上方法
hinakko
0
230
Носок на сок
bo0om
0
1.1k
GitHub Copilot for Azureを使い倒したい
ymd65536
1
300
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
The Cult of Friendly URLs
andyhume
78
6.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Scaling GitHub
holman
459
140k
Six Lessons from altMBA
skipperchong
28
3.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.5k
Site-Speed That Sticks
csswizardry
6
530
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Done Done
chrislema
184
16k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
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