logo

Timetable

Timetable
Timetable background1Timetable background3Timetable background3
10:00
Opening
20F #pyconjp_1
Opening Relay
20F #pyconjp_2
Opening Relay
4F #pyconjp_3
Opening Relay
4F #pyconjp_4
10:20
10:20
30min
【招待講演】PythonのUTF-8化
稲田 直哉
日本語
20F #pyconjp_1
10:20
30min
Re:PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト【増補改訂版】
Ryosuke Tanno
Data Science, AI
日本語
20F #pyconjp_2
10:20
30min
Pythonで 日本語処理 入門 〜フリガナプログラムを作ろう〜
Takanori Suzuki
Data Science, AI
日本語
4F #pyconjp_3
10:20
30min
Streamlining Testing in a Large Python Codebase
Jimmy Lai
DevOps, Testing, Documentation, Packaging
EN
4F #pyconjp_4
11:10
11:10
30min
Cloudflare Workers in Pythonでサーバーレスアプリケーションを作ろう
Ryuji Tsutsui
Web Applications
日本語
20F #pyconjp_1
11:10
30min
データフレームライブラリ徹底比較
桂川大輝
Others
日本語
20F #pyconjp_2
11:10
30min
Pythonの数学機能を学ぼう!その仕組みも学ぼう!
curekoshimizu
Python Features and Development
日本語
4F #pyconjp_3
11:10
30min
Unlocking Python's Core Magic
Wei Lee
Python Features and Development
EN
4F #pyconjp_4
11:40
Lunch Break
20F, 4F Track 1~4
12:40
12:40
30min
実例から学ぶ型ヒントの活用手法
Rei Suyama
Development Practices Using Python
日本語
20F #pyconjp_1
12:40
30min
「巨人の肩の上」で自作ライブラリを作る技術
石原祥太郎
Development Practices Using Python
日本語
20F #pyconjp_2
12:40
30min
Pythonを活用したLLMによる構造的データ生成の手法と実践
柴内一宏
Data Science, AI
日本語
4F #pyconjp_3
12:40
30min
Sleuthing in Cython: Wrapping and Debugging Legacy C Libraries for Python
Maryanne Wachter
Development Practices Using Python
EN
4F #pyconjp_4
13:30
13:30
30min
SQLModel入門 〜クエリと型〜
Mizuki Sato
Web Applications
日本語
20F #pyconjp_1
13:30
30min
Rustを活用したPythonライブラリの開発
Shota Kokado
DevOps, Testing, Documentation, Packaging
日本語
20F #pyconjp_2
13:30
30min
データサイエンスのフルサイクル開発を実現する機械学習パイプライン
Cristian Kamiya
Data Science, AI
日本語
4F #pyconjp_3
13:30
30min
Playing games in the browser with WASM
Neeraj Pandey, Manoj Pandey
Video, Music, Games, Illustration
EN
4F #pyconjp_4
14:20
14:20
30min
実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用
Shinichi Nakagawa(@shinyorke)
Web Applications
日本語
20F #pyconjp_1
14:20
30min
Pythonによるイベントソーシングへの挑戦と現状に対する考察
Masanobu Naruse
Development Practices Using Python
日本語
20F #pyconjp_2
14:20
30min
PythonとOpenCVで楽しむ物体検出!
Lina Katayose
IoT, Hardware, Network
日本語
4F #pyconjp_3
14:20
30min
The Wheelhouse of Horrors
Laszlo Kiss Kollar
Development Practices Using Python
EN
4F #pyconjp_4
14:50
Coffee Break
20F, 4F Track 1~4
15:30
15:30
30min
WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践
Masataka Okudera
Web Applications
日本語
20F #pyconjp_1
15:30
30min
Pythonと相互運用可能な静的型付け言語Erg
Shunsuke Shibayama
Creating Libraries and Services
日本語
20F #pyconjp_2
15:30
30min
Pythonで3Dモデリングをしてみよう: CadQuery Basic
Hiroshi Sano
Video, Music, Games, Illustration
日本語
4F #pyconjp_3
15:30
30min
Why Knowing Cython Helps in Understanding Python: A Deep Dive into Cython & PVM
Abhik Sarkar
Python Features and Development
EN
4F #pyconjp_4
16:20
16:20
30min
DjangoとFastAPIによる実践認証技術
大島和輝
Web Applications
日本語
20F #pyconjp_1
16:20
30min
Pythonで3次元CGを作りたい人のためのPyVista入門
Tetsuo Koyama
Creating Libraries and Services
日本語
20F #pyconjp_2
16:20
30min
プロダクションでのPython非同期ユースケース - Trio/Trio-Utilを中心に
Junya Fukuda
IoT, Hardware, Network
日本語
4F #pyconjp_3
16:20
30min
Getting Started with Open Source Contributions
Stefanie Molin
Community, Education
EN
4F #pyconjp_4
17:00
17:00
15min
pytest プラグインを開発して DRY に自動テストを書こう
Atsushi Inutsuka
DevOps, Testing, Documentation, Packaging
日本語
4F #pyconjp_3
#pyconjp_3 Relay
4F #pyconjp_4
17:30
Keynote (Atsuo Ishimoto)
20F Track 1~2
Keynote Relay (English)
4F #pyconjp_3
18:25
PyCon JP Association Report
20F Track 1~2
18:40
Closing
20F Track 1~2
「巨人の肩の上」で自作ライブラリを作る技術
石原祥太郎
09/28 12:40 - 13:10 (Asia/Tokyo)
20F #pyconjp_2

本発表では、特定の目的に向けて既存技術を調査し、自作のPythonライブラリを実装・評価する一連の流れを紹介します。具体的な事例として、講演者が実際の業務で自作した「ニュース記事のテキストから時間表現を抽出し、省略を補完し正確な日付を特定する」ライブラリを取り上げます。手順は①要件の確認②既存ライブラリ・文献の調査③方針の策定④実装・性能評価・改善ーーから成ります。それぞれ、何をどう考えて実行したかを説明し、得られた教訓を共有します。Pythonの偉大なるエコシステムの中で、自分自身がやりたいこと・やるべきことを見定め、開発を進めていく一例として、皆さまの参考になればと考えています。


description
トーク詳細 / Description

「Pythonで◯◯を実現したいが、既存ライブラリでは少しだけ要件に合わない」。そんな状況に直面した経験がある方も多いのではないでしょうか? 本発表では、既存ライブラリを拡張して自作ライブラリを作ろうと試みる場面を題材にします。

自作ライブラリの開発は、多くの手順を含む奥深い作業です。しかし、具体的に何をどのように考えれば良いのかは自明でなく、過去の知見を共有している事例は多くありません。

本発表では、講演者の実際の業務を例に、特定の目的に向けて既存技術を調査し、自作のPythonライブラリを実装・評価する一連の流れを紹介します。作成したのは「ニュース記事のテキストから時間表現を抽出し、省略を補完し正確な日付を特定する」ライブラリです。たとえば、2024年10月1日に公開された記事内の「PyCon JP 2024が27〜29日に開催された」というテキストを「PyCon JP 2024が2024年9月27〜2024年9月29日に開催された」と書き換えます。

具体的には、既存ライブラリの「ja-timex」を拡張し、自作ライブラリ「jaROTE (Reproducing Omitted Time Expressions for Japanese)」を開発しました。開発の手順は①要件の確認②既存ライブラリ・文献の調査③方針の策定④実装・性能評価・改善ーーから成ります。本発表では、それぞれの手順について、何をどう考えて実行したかを説明し、得られた教訓を共有します。

Pythonの偉大なるエコシステムの中で、自分自身がやりたいこと・やるべきことを見定め、開発を進めていく一例として、皆さまの参考になればと考えています。

本講演の講師は、事業会社の研究開発部門に在籍し、Pythonを用いて日々開発を進めています。業務の中では、学術論文の調査・執筆も担当しています。Pythonでの開発作法だけでなく、既存ライブラリや文献を調査しながら「巨人の肩の上」で新規の提案をする考え方についても言及します。

本発表の構成は以下のとおりです。

  • 導入(8min)
    • 新聞記事を用いた大規模言語モデルの開発
    • 新聞記事内では、時に時間表現が省略されている(例:「PyCon JP 2024が27〜29日に開催された」)
    • 省略された時間表現は、大規模言語モデルにとって親切ではない(例:「PyCon JP 2024はいつ開催された?」という質問に答えるには情報が足りない)
  • 作成した自作ライブラリのデモ
    • pip install 可能な自作ライブラリと、streamlit ライブラリによるデモサイト
    • 記事の公開日を用いて、省略された時間表現を補完する(例:公開日「2024年10月1日」の場合「PyCon JP 2024が27〜29日に開催された」を「PyCon JP 2024が2024年9月27〜2024年9月29日に開催された」に)
  • 自作ライブラリの開発手順(20min)
    • ①要件の確認
      • 手作業で入出力を定義してみる(例:自分で数件の新聞記事に対して期待する出力結果を作成する)
      • 計算資源や実行時間の制約を考える(例:大規模言語モデル向けのテキストは膨大で、実行時間は短い方が望ましい)
  • ②既存ライブラリ・文献の調査
    • 既存文献の調査(時間表現の抽出と、省略の補完の処理を分けて考えると良さそう)
      • 参考文献リストは下記に掲載
    • 既存ライブラリの調査
      • 時間表現の抽出のためのライブラリ
      • 今回採用した「ja-timex
      • 今回は採用しなかった「KWJA
      • 今回は採用しなかった「ChatGPT」などの大規模言語モデル
  • ③方針の策定
    • ①の要件を踏まえて、正規表現で高速に動作する ja-timex を採用
    • KWJA や大規模言語モデルは優れているが、実行時間がかかるため、今回は不採用に
    • 時間表現を ja-timex で抽出した後、省略を補完する部分のみを自前で実装するという方針に
  • ④④実装・性能評価・改善
    • setup.py によるライブラリ化
    • ①で手作業で定義した入出力を用いて、テストケースを作成
    • pytest ライブラリを用いて、テストファースト開発を進める
    • 実装は、テスト駆動開発の中で挙動を評価
    • 性能は「日本経済新聞記事オープンコーパス」で評価
    • 今後改善すべき箇所や方針についても報告
  • まとめ (2min)

参考文献リスト:

  • 事象に対する網羅的な時間情報アノテーションとその分析 https://www.jstage.jst.go.jp/article/jnlp/26/1/26_179/_article/-char/ja/
  • 『現代日本語書き言葉均衡コーパス』に対する時間情報アノテーション https://www.jstage.jst.go.jp/article/jnlp/20/2/20_201/_article/-char/ja/
  • Inference of Absolute Time Value from Temporal Expressions https://ieeexplore.ieee.org/abstract/document/9671863
  • BCCWJ-TimeBank: Temporal and Event Information Annotation on Japanese Text https://aclanthology.org/O14-4001/
  • SUTime: A library for recognizing and normalizing time expressions https://aclanthology.org/L12-1122/
  • Leveraging a Bilingual Corpus to Resolve Date–Duration Ambiguity in Japanese Numeric Day Expressions https://www.jstage.jst.go.jp/article/jnlp/29/2/29_638/_article/-char/ja/

石原祥太郎
石原祥太郎

日本経済新聞社の研究開発部署「日経イノベーション・ラボ」で、上席研究員として独自の大規模言語モデルに関する研究開発などに従事。国内外の学会で学術論文も発表している。国内外での国内外の機械学習コンテストで入賞経験を持ち、『PythonではじめるKaggleスタートブック』『Kaggleに挑む深層学習プログラミングの極意』の執筆や、勉強会の主催・登壇など、積極的な情報発信にも努めている。2020年、国際ニュースメディア協会の若手表彰「30 Under 30 Awards and Grand Prize」でアジア太平洋部門の最優秀賞を受賞。