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.1k
生成 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
はてな広告配信システムクラウドネイティブ化への道のり / Cloud Native Migration: Evolution of Hatena's Ad Delivery System
pokutuna
0
8
checked_bookmark.pdf
pokutuna
0
110
Other Decks in Programming
See All in Programming
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
160
Spatial Rendering for Apple Vision Pro
warrenm
0
150
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
810
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
130
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
960
useSyncExternalStoreを使いまくる
ssssota
6
1.4k
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
360
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
300
GitHubで育つ コラボレーション文化 : ニフティでのインナーソース挑戦事例 - 2024-12-16 GitHub Universe 2024 Recap in ZOZO
niftycorp
PRO
0
120
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
350
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Become a Pro
speakerdeck
PRO
26
5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Code Review Best Practice
trishagee
65
17k
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