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
860
生成 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
4
checked_bookmark.pdf
pokutuna
0
100
Other Decks in Programming
See All in Programming
イベント駆動で成長して委員会
happymana
1
340
Modular Monolith Monorepo ~シンプルさを保ちながらmonorepoのメリットを最大化する~
yuisakamoto
7
710
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
200
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
140
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
610
Contemporary Test Cases
maaretp
0
140
Remix on Hono on Cloudflare Workers
yusukebe
1
310
Tauriでネイティブアプリを作りたい
tsucchinoko
0
380
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.8k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
Quine, Polyglot, 良いコード
qnighy
4
650
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
12k
A Philosophy of Restraint
colly
203
16k
Music & Morning Musume
bryan
46
6.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
4 Signs Your Business is Dying
shpigford
180
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Language of Interfaces
destraynor
154
24k
A better future with KSS
kneath
238
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
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