PyCon JP 2024

Pythonで 日本語処理 入門 〜フリガナプログラムを作ろう〜
2024-09-28 , 4F Track3

Pythonでは日本語や英語など、自然言語処理のためのライブラリが豊富に提供されています。このトークでは「日本語の文章に対してフリガナを振る」というプログラムの作成を通じて、Pythonで自然言語処理ライブラリJanomeとSudachiPyを使用した、日本語を処理する方法について解説します。

はじめに自然言語処理とはどういうものか、今回主に使用する形態素解析について概要を説明します。またゴールとする「フリガナを振るプログラム」ではどういう動作をしてほしいかについて最初に説明します。

前半はJanomeを使用してフリガナを振るプログラムを作成していきます。Janomeを使用した形態素解析のやり方、読みの取得、フリガナを振るプログラム作成を行います。その後辞書の改善によるフリガナの改善を行います。

後半はライブラリとしてSudachiPyを使用します。最初にJanomeとSudachiPyの違いに触れ、SudachiPyで書き直す理由について説明します。SudachiPyを使用した形態素解析のやり方、読みの取得、フリガナを振るプログラムを作成します。フリガナの処理をより洗練させ、ユーザー辞書でのフリガナの改善まで行います。また、小学校で学んだ漢字のリストを作成し、小学校で学んだ漢字にはフリガナを振らない処理を作成します。


  • アジェンダ、ゴール(1m)
  • Who am I?(1m)
  • 自然言語処理とは、形態素解析とは(3m)
  • 形態素解析とは、形態素、用途
  • フリガナプログラムの仕様(2m)
  • Janomeで形態素解析(3m)
  • 特徴
  • インストール
  • 形態素解析を実行
  • 読みを取得
  • 分かち書き
  • Janomeでフリガナ(5m)
  • フリガナを振るプログラムを作成
  • 送りがな対応
  • 辞書をカスタマイズ
  • Janomeの課題
  • SudachiPyで形態素解析(3m)
  • 特徴
  • インストール
  • 形態素解析を実行
  • 読みを取得
  • 分かち書き
  • SudachiPyでフリガナ(7m)
  • フリガナを振るプログラムを作成
  • フリガナ処理の改善
  • 辞書のカスタマイズ、コスト調整
  • フリガナレベル対応(2m)
  • まとめ(2m)

Why did you choose this topic?

実際のプロジェクトで中学生向けの学習教材で、漢字が得意じゃない生徒のためにすべての漢字にフリガナを振るという実装をし、その中で細かく調整することがあることを学びました。
実際に自然言語処理ですべてがうまくいくわけではなく、細かく調整などが必要であること、調整することによってより自然言語処理が改善していく課程を知ってもらいたいと思いました。

Knowledges and know-how the audience can get from your talk

基本的な自然言語処理の概念、日本語の形態素解析ライブラリを使用した、基本的な自然言語処理のPythonプログラムの実装方法を知ることができます。
また、実際のプロジェクトの現場で細かい調整によって処理結果が改善する流れについて把握できます。

Prior knowledges speakers assume the audience to have

Pythonの基本的な文法

Audience experiment

Beginner

Language of presentation

Japanese

Language of presentation material

Japanese

See also: Pythonで日本語処理入門 〜フリガナプログラムを作ろう〜

Takanori(@takanory) is the Chair of PyCon JP Association and Co-Chair of PyCon JP 2024.
He is also a Director of BeProud Inc., and his title is "Python Climber".
Currently he teaches Python to beginners as a lecturer at Python Boot Camp all over Japan.
In addition, he published several Python books.
He plays trumpet, climbs boulder, loves ferrets, beer and Lego.