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
fs2-io を試してたらバグを見つけて直した話
chencmd
0
240
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
2
440
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
340
情報漏洩させないための設計
kubotak
4
840
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
300
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
810
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
Cloudflare MCP ServerでClaude Desktop からWeb APIを構築
kutakutat
1
570
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
530
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
160
Haze - Real time background blurring
chrisbanes
1
520
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Mobile First: as difficult as doing things right
swwweet
222
9k
KATA
mclloyd
29
14k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Scaling GitHub
holman
459
140k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
A Tale of Four Properties
chriscoyier
157
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
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