Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
「巨人の肩の上」で自作ライブラリを作る技術 / pyconjp2024
Search
Shotaro Ishihara
September 22, 2024
Technology
1.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「巨人の肩の上」で自作ライブラリを作る技術 / pyconjp2024
「巨人の肩の上」で自作ライブラリを作る技術 (PyConJP 2024)
https://2024.pycon.jp/ja/talk/CLJQ37
Shotaro Ishihara
September 22, 2024
More Decks by Shotaro Ishihara
See All by Shotaro Ishihara
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
1.2k
大規模言語モデルは誰を覚えているか / Who Do Large Language Models Memorize?
upura
0
170
[ACL 2026 Demo] Fast-MIA: Efficient and Scalable Membership Inference for LLMs
upura
0
120
Fast-MIA: Efficient and Scalable Membership Inference for LLMs
upura
0
82
JAPAN AI CUP Prediction Tutorial
upura
2
1.4k
情報技術の社会実装に向けた応用と課題:ニュースメディアの事例から / appmech-jsce 2025
upura
0
440
日本語新聞記事を用いた大規模言語モデルの暗記定量化 / LLMC2025
upura
0
800
Quantifying Memorization in Continual Pre-training with Japanese General or Industry-Specific Corpora
upura
1
140
JOAI2025講評 / joai2025-review
upura
0
1.8k
Other Decks in Technology
See All in Technology
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
730
omasushiというライブラリを作った
polidog
PRO
0
230
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
890
人間はどの意思決定を手放せるのか
kawasima
14
6.6k
20260912_スクフェス三河
kgnkhkr
0
370
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
3
1.4k
2026_devsumi_ozono.pdf
o3
3
490
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
130
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
190
安心して変更できるWebフロントエンドの作り方
pirosikick
4
2.4k
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
720
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
520
Product Roadmaps are Hard
iamctodd
55
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Bash Introduction
62gerente
615
220k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
A Tale of Four Properties
chriscoyier
163
24k
Claude Code のすすめ
schroneko
67
230k
The Language of Interfaces
destraynor
162
27k
Transcript
「巨人の肩の上」 で自作ライブラリ を作る技術 石原祥太郎 (日本経済新聞社) PyCon JP 2024、2024 年 9
月 28 日
特定の目的に向けて既存 技術を調査し、自作の Python ライブラリを実 装・評価する一連の流れ を紹介 2 「巨人の肩の上」で自作ライブラリ https://speakerdeck.com /upura/pyconjp2024
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 3 開発手順
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 4 開発手順
大学新聞で編集長などを経て、 日本経済新聞社に入社。現在は 研究開発部門で、独自の大規模 言語モデルの構築に従事。 5 現在のお仕事
> 実践:日本語文章生成 Transformersライブラリで学 ぶ実装の守破離 https://2022.pycon.jp/timetable/?id=EEA8FG 6 PyCon JP 2022
7 国際会議 INLG 2024 (9/23-27) で発表 • 日経電子版で学習した大規模 言語モデル (GPT-2)
の暗記を 分析した研究 [論文] • 日本科学未来館で開催
8 大規模言語モデルの構築 事前学習用のテキスト データ (新聞記事) 事前学習・ 事後学習
9 大規模言語モデルの特徴 事前学習用のテキスト データ (新聞記事) 2日の東京市場で日経平均株価の 下落幅が2200円を超え、前日の 米国株に続きアジアや欧州にも 調整が広がった。 日経平均2216円安 下げ幅歴代
2位 米景気下振れ警戒 緩和頼 み脱却へ途上, 日経電子版, 2024 年8月2日. https://www.nikkei.com/article /DGKKZO82545690T00C24A8 MM8000/
10 大規模言語モデルの特徴 事前学習用のテキスト データ (新聞記事) 2日の東京市場で日経平均株価の 下落幅が2200円を超え、前日の 米国株に続きアジアや欧州にも 調整が広がった。 いつ?
11 何が問題? 日経平均株価の下げ幅が歴代2位 だったのはいつ? 2日です ?????????
12 実現したいこと 事前学習用のテキスト データ (新聞記事) 2024年8月2日の東京市場で日経 平均株価の下落幅が2200円を超 え、前日の米国株に続きアジア や欧州にも調整が広がった。 公開日を
用いて復元
新聞記事から時間表現を抽出し 日付を特定し省略を補完 • 入力:テキスト、公開日時 • 出力:補完されたテキスト 13 題材となる自作ライブラリ
大規模言語モデルの事前学習用 のテキストは大量のため、一定 の性能で高速処理できることが 望ましい 14 自作ライブラリの要件
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 15 開発手順
16 要件を踏まえ既存の取り組みを調査 • 社内で共有するなど、有識者に質問 • 一つの文献を起点に、芋づる式に探索 • X などで、定期的に情報収集 •
「車輪の再開発」を避ける 既存ライブラリ・文献の調査
時間情報表現を抽出・規格化 ❯ print(TimexParser().parse("彼は2008 年4月から週に3回のジョギングを、朝8時 から1時間行ってきた")) 17 既存ライブラリ①:ja-timex
時間情報表現を抽出・規格化 ❯ [<TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">] 18 既存ライブラリ①:ja-timex
汎用言語モデルに基づく統合的解析器 ❯ kwja --text "日本サッカー協会は27日、 来年2、3月にホームで開催する男女の日 本代表と北朝鮮代表との試合会場が東京・ 国立競技場に決まったと発表した。" 19 既存ライブラリ②:KWJA
汎用言語モデルに基づく統合的解析器 ❯ + 21D <NE:DATE:27日><体言><修飾><時間> 27 にじゅうしち 27 名詞 6
数詞 7 * 0 * 0 日 にち 日 接尾辞 14 名詞性名詞助数辞 3 * 0 * 0 "代表表記:日/にち 準内容語 カテゴリ:時間" <基本句-主辞> 20 既存ライブラリ②:KWJA
ja-timex の README やドキュメントを起 点に、芋づる式に • 引用している/されている文献を調査 • Connected Papers
などでも関連研究を 調査 21 既存文献の調査
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 22 開発手順
ja-timex の「実装方針」を参考に、時間 情報表現の抽出と、省略の補完の処理を 分けて考えるべきと判断 • 抽出:ja-timex にお任せ • 補完:独自実装のため性能評価が必要 23
方針の策定
24 KWJA (などの大規模言語モデル) は性能 面で優れているが、実行時間や費用がか かるため、今回は不採用に • ChatGPT など商用 API
も同様 • ja-timex はルールベースで軽量 不採択の理由
①要件の確認 ②既存ライブラリ・文献の調査 ③方針の策定 ④実装・性能評価・改善 25 開発手順
26 1. ライブラリとして実装開始 2. いくつかの記事を手動で変換 3. 規則性を見い出しテストケースを作成 4. テストが通るように実装を追加し、必 要に応じて全体をリファクタリング
「テストファースト」で実装・評価・改善
27 ライブラリとして実装開始 • ディレクトリのルートに setup.py • pip install -e .
で編集モードでインス トール https://packaging.python.org/en/latest/gui des/distributing-packages-using-setuptools /
• プロジェクト名を付けると気分が乗る • 最初は入出力だけを定義することに ❯ from jarote import by_rote ❯
… ❯ by_rote(text, reference_datetime) 28 jaROTE (Reproducing Omitted Time Expressions for Japanese)
29 1. 入力のテキストに対して ja-timex を実 行し、時間情報表現を抽出 2. それぞれに対し、入力の公開日時を参 照して、省略があれば書き換えを実施 3.
書き換えを反映したテキストを返す jaROTE の内部処理
30 • 「日本経済新聞記事オープンコーパス」 の 96 記事を対象に Spreadsheet に入 出力の組を列挙 •
泥臭く取り組みながら、要件を精緻化し ていく 最終的に実現したい処理を手動で実行
31 • たとえば、年に関する文字列を具体的 な数値に変換するケースでまとめ上げ • テスト用ライブラリ pytest で、出力 と期待する結果の一致を確認 規則性を見い出し、テストケースを作成
• 当然、最初は不一致でテストが失敗 • テストが通るように実装を進めていく • 必要に応じて全体をリファクタリング 32 テストが通るように実装を追加
33 • 実装と性能評価が同時並行で完了 • テストケースを見ると処理が分かりや すい • 一方、初期の開発コストは大きくなる 「テストファースト」の特徴
• 特定の目的に向けて既存技術を調査し 自作の Python ライブラリを実装・評価 する一連の流れを紹介 • 手順は①要件の確認②既存ライブラリ ・文献の調査③方針の策定④実装・性 能評価・改善ーーから成る
34 本発表のまとめ
35 • 開発論の具体的な議論 (「テスト ファースト」「テスト駆動開発」など) • jaROTE で時刻表現の省略を補完した テキストは、大規模言語モデルにとっ て価値がある?
本発表で話さなかったこと
• 「巨人」の知見 (ja-timex や KWJA、 過去の発表文献など) に改めてお礼申 し上げます • jaROTE
もその一部になれるよう、鋭 意開発を進めていきます 36 謝辞