はじめに
2024年現在、世界中で生成AIが注目を集めている。例えば、ChatGPTはまるで言葉が分かる魔法使いのように、私たちの質問に人間さながらの精度で答えてくれる。今回は、そんな魔法の呪文(自然言語処理)を、初心者の方でも自宅のパソコンで簡単に唱えられるように、その基礎を解説していく。
★関連リンク
業務で活用できるAI技集のまとめはこちら
準備
概要
今回はテキスト分類というタスクをPythonというプログラミング言語を使って実施してみる。AIの知識がなくてもPythonを使ったことがある人であれば数分程度で実践できる内容になっているので興味があれば最後まで読んで頂きたい。
取り扱う内容 | 具体例 |
テキスト分類 | ある文章を与えたときにポジ or ネガを判定。 入力:あなたのことが嫌いです → 出力:Negative |
①Python環境を構築する
まずはPythonの環境を構築する(既に環境構築済みの方は読み飛ばしOK)。以下の3つのどちらかのソフトウェアをインストールすれば完了。海外のサイトなのでちょっと抵抗あるかもしれないが、これを入れるとPythonが使える状態になる。※以下の情報は2024/4時点の情報
名称 | URL | 補足 |
Anaconda | Free Download | Anaconda | 個人利用ならこちら(従業員200名以上の法人は有償)。初期のライブラリが充実している。 |
Miniconda | Miniconda — Anaconda documentation | 法人利用ならこちら(無償)。ライブラリが最小限しかないので、追加でインストールする必要有。 |
Python | Download Python | Python.org | 純粋なPythonだけをインストールしたければこちら。法人・個人問わず無償。 |
[参考] Pythonのバージョン
いざPythonをダウンロードしようとすると、様々なVersionがあってどれを落とせばよいか判断に迷う場合がある。そんな時は基本的にはStableと書かれているものを選択すると良い。Stableは日本語に直すと「安定」という意味で、一般的に広く普及しているVersionになるので特定の目的がない限りはこちらを選択するのが良い。※Stable≠最新Verのケースが多いので要注意!
https://www.python.org/downloads/windows/
[参考] ライブラリとは
ライブラリとはシンプルにいうと、Pythonをより便利に動かすための追加機能のこと。例えばExcelの操作をしたい場合、pandasと呼ばれるライブラリが必要になるが、これはMinicondaには入っていないため、自分でインストールする必要がある(といってもコマンド1行で実施できるので全然難易度は高くない)。このようにPythonは基本的にたくさんのライブラリを駆使してプログラミングするものだと理解頂きたい。
②仮想環境を構築する
続いて仮想環境を構築する手順を紹介する(とりあえずお試しでやってみたい方はこの章を読み飛ばしても問題なし)。仮想環境とは、PC上で独立したPython環境構築すること。前述のとおり、Pythonは1つのプログラムを作るためにたくさんのライブラリを使うが、これが2つ,3つ…と増えてくるとそれに比例してインストール済のライブラリの数も多くなってくる。そうなるとライブラリ間でVersionのアンマッチなどが発生し、動作がうまくいかなくなる可能性が出てきてしまう。
具体的には、プログラムAではあるライブラリのVersion1.0が必要なのに、プログラムBではVersion2.0が必要…みたいな感じになると、確実にどちらかが動かなくなってしまう。こういった状況を回避するために、プログラムAには仮想環境①、プログラムBには仮想環境②を作ってあげる必要がある。ただし特に複数のプロジェクトを管理することが無いのであれば、Python環境の直下にプロジェクトを作ればよい(=仮想環境の構築は不要)になる。
さて仮想環境の構築方法だが、以下にWindowのケースで解説を進める。無事にPythonがインストールできたら、Anaconda Powershell Promptというソフトウェアが追加されているのでこれを実行する(Anaconda/Minicondaの場合)。手順は以下のとおり。
※色付きの部分は任意の文字列。但しYOURNAMEはWindowsのアカウント名を入力
①あらかじめ任意のフォルダを作っておく(例: c:\Users\YOURNAME\kasou)
②Promptを起動しcdコマンドで移動(cd c:\Users\YOURNAME\kasou)
③仮想環境を構築(python -m venv myvenv)
④フォルダが作られるので仮想環境を実行(./myvenv/Scripts/activate)
※内部コマンドまたは外部コマンド...みたいなエラーがでたら、""で囲って実行。
("./myvenv/Scripts/activate")
上のように(myvenv)という表記が最初にくれば、仮想環境に入っていることになる。もし仮想環境から抜け出したければ「deactivate」というコマンドを投入。
③ライブラリをインストールする
Pythonでライブラリを入れたい場合は、pipコマンドを使う。Anaconda/Minicondaの場合、condaコマンドでも良いのだが、うまく動作しないこともあり当HPではpipコマンド中心で解説する。Anaconda Powershell Promptを起動して以下コマンドを投入。
pip install ライブラリ名
[参考] condaコマンドとpipコマンド
どちらもライブラリをインストールするために必要なコマンド。Anaconda/Minicondaを使う場合、condaを推奨されることが多いが、当記事のようにpipで解説するHPも多い。基本的にpipとcondaは共存させない方が良いとされているため、condaコマンドで環境を構築したい方はpipをcondaに読み替えてライブラリをインストール沿て頂きたい。
④プログラミングの環境を整える
次にコードを記述するためのコーディング環境を準備する。色々あるので紹介程度に表に纏めてみた。
SW名 | 説明 |
Visual Studio Code | Microsoft社が提供するコードエディタ(無料)。 Visual Studio Code – コード エディター | Microsoft Azure |
jupyter notebook | Anacondaインストール時に同梱されている。jupyter labが後継に当たるので、あえてこちらを新規で入れる必要なし。Project Jupyter | Installing Jupyter |
jupyter lab | jupyter notebookとほぼ同じツール。「pip install jupyterlab」で簡単にインストール可能。Project Jupyter | Installing Jupyter |
Google Colaboratory | Web上でPythonを編集できる(無料)。オンライン環境必須だが、CPUやメモリを沢山使うものに最適。https://colab.research.google.com/ |
実践
今回はTransformersと呼ばれるライブラリでテキスト分類するデモを作ったので、まずはpipを使ってインストール。
pip install transformers
Python環境を準備できたら、以下を実行。たった4行でおしまい。出力結果は以下のとおり。
[{‘label’: ‘POSITIVE’, ‘score’: 0.9998780488967896}]
from transformers import pipeline
pipe = pipeline("text-classification")
answer = pipe("This restaurant is so good")
print(answer)
[参考] コードを解説
1行目:
「transformers」というライブラリを読み込んでいる。(HuggingFaceというAI関連サイトで提供されている。)、事前にライブラリを入れていないと「ライブラリが存在しない」というエラーが出るので必ず最初に「pip install transformsers」でインストールすること。
2行目:
HuggingFaceが提供する「text-classification」という名のモデルをダウンロードしている。
3行目は試したい文章を入力。和訳すると「このレストランはとても良い」になるので、4行目でprint文でネガポジ判定結果を確認すると、「(99.999878%の確率で)POSITIVE」と強気な解答が出てきている。
ちなみに文章をかえて色々実験すると以下のような結果となった。スコアが強気なのが気になりますが、まあまあ自分の感覚と合致していることを確認できた。
The food in this restaurant is bad. このレストランの料理はまずい。 | ‘label’: ‘NEGATIVE’ ‘score’: 0.9998006224632263 |
This dish looks bad but tastes good. この料理は見た目はまずそうだが味はうまい。 | ‘label’: ‘POSITIVE’ ‘score’: 0.9774308800697327 |
This dish tastes normal. この料理は普通の味だ。 | ‘label’: ‘NEGATIVE’ ‘score’: 0.580937922000885 |
This dish looks blue. この料理は青く見える。 | ‘label’: ‘NGATIVE’ ‘score’: 0.9917582869529724 |
This food tastes just like the in-flight meal. この料理は、機内食とおなじ味がする。 | ‘label’: ‘POSITIVE’ ‘score’: 0.9719703793525696 |
コメント