前回はドキュメントの探し方に焦点を当て、「カレンダーを表示する対話システム」を題材に検索サイトで関連キーワードを調べ、その内容を公式ドキュメントのライブラリリファレンスで調べる方法を紹介しました。

実は、検索サイトで調べたキーワードに対応するものがライブラリリファレンスには載っていない、つまりPythonの標準ライブラリに含まれていない場合も多く、その場合は別途インストールする必要があります。

そこで今回、そして次回は「半角文字を全角文字に変換する」というタスクを題材に、サードパーティ製のライブラリを調べ、インストールして利用する方法について紹介したいと思います。

前処理

「半角文字を全角文字に変換する」のように、あらかじめ入力されたテキストを一定の形式に変換する処理を「前処理」と呼びます。前処理はいろいろな場面で威力を発揮するものです。

例えば、本連載の第12回で紹介した正規表現を使って、文字列を「ネコ」というパターンにマッチさせる場合を考えてみましょう。前処理で半角文字を全角文字に変換していない場合は、全角文字の「ネコ」と半角文字の「ネコ」の両方にマッチするようにパターンを書かなければなりません。しかし、事前に半角文字を全角文字に変換する前処理を行っておくことで、全角文字の「ネコ」にのみマッチするパターンを書いておけばよくなります。このように後の処理を簡略できるのは、前処理のメリットの1つです。

また、近年注目が集まっているディープラーニングをはじめとする機械学習でも、前処理を行うかどうかで精度が大きく変わることが多々あります。前処理は、そうした重要な役割も担っているのです。

今回の題材は、前処理を実装してみることも目的の1つなので、意識しておいてください。

さて、それでは目標をより具体的にイメージしてみましょう。最終的にやりたいのは、次のように任意の文字列中の半角文字を全角文字に変換する前処理用関数「convert_han_to_zen」を作成することです。

>>> text = "ネコが飼いたい"
>>> convert_han_to_zen(text)
ネコが飼いたい

この関数を一から実装してもよいのですが、可能であればライブラリを利用したいところです。そこで前回の「ドキュメントの探し方」に従って、まずは検索サイトで関連キーワードを探してみましょう。

ドキュメントを探す

検索キーワードはいろいろあると思いますが、今回は「python 全角 半角 変換」で調べてみます。

「python 全角 半角 変換」を検索

すると「jaconv」という名前が目に入ります。どうやらjaconvというのは「パッケージ」で、これを使えば半角/全角変換を行えそうだ、ということがわかりました。

おっと、パッケージという単語が出てきました! パッケージというのは複数のモジュールを階層構造で管理するための仕組みです。聞くと難しそうですが、利用する分にはモジュールとあまり変わらないので、心配はいりません。ここでは、複数のモジュールを管理するパッケージという機能があるということだけ覚えておいてください。

話を元に戻しましょう。 キーワードがわかったので、Pythonの公式ドキュメント「ライブラリリファレンス」でjaconvを調べてみましょう。

ライブラリリファレンスで「jaconv」を検索

しかし、ご覧の通りライブラリリファレンスには掲載されていないようです。これは一体、どういうことでしょうか?

実は、Pythonでは公式で提供されている標準ライブラリのほかにサードパーティ製のライブラリも存在します。そうしたサードパーティ製のライブラリを公開しているサイト「Python Package Index (PyPI)」では、ライブラリリファレンス同様、ライブラリの検索やインストールが可能です

今回はいったんここまでとし、次回はPyPIを使ったサードパーティ製ライブラリの検索/インストール、利用方法について解説します。

※ PyPIで提供されているライブラリはPythonが公式に提供しているわけではありません。その質やライセンスなどについては各ライブラリに依存するので、注意して利用してください。

著者紹介


株式会社NTTドコモ
R&Dイノベーション本部 サービスイノベーション部
阿部憲幸

2015年京都大学大学院理学研究科数学・数理解析専攻修了。 同年、NECに入社。 2016年から国立研究開発法人情報通信研究機構出向。 2018年より現職。 自然言語処理、特に対話システムの研究開発に従事。 毎日話したくなるAIを夢見て日夜コーディングに励む。
GitHub:https://github.com/noriyukipy