Pythonによるスクレイピング&機械学習 開発テクニック「MLPでテキスト分類してみよう」(P.285)をやってみた

Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみようの「MLPでテキスト分類してみよう」(P.285)をやってみました。KerasでMLP(多層パーセプトロン)を構築して、ニュース記事のカテゴリ分類を行うところです。

  • 記事の内容や、操作を理解するための概念などは、このページには書きません。上のリンクから書籍を購入してご覧ください。

準備

この記事の操作を行うには、いくつか準備が必要です。

プログラムのダウンロード

以下の記事をご覧ください。

Pythonによるスクレイピング&機械学習 開発テクニック「プログラムのダウンロード方法」(P.5)をやってみた

TensorFlow with GPU supportのインストール

以下の記事をご覧ください。

TensorFlow with GPU supportをインストールしてみた

 Janomeのインストール

以下の記事をご覧ください。

Pythonによるスクレイピング&機械学習 開発テクニック「インストールがとにかく簡単なピュアPython解析器「Janome」」(P.258)をやってみた

Kerasのインストール

以下の記事をご覧ください。

Pythonによるスクレイピング&機械学習 開発テクニック「Kerasのインストール」(P.240)をやってみた

scikit-learnのインストール

以下の記事をご覧ください。

Pythonによるスクレイピング&機械学習 開発テクニック「scikit-learn – 機械学習のフレームワークについて」(P.149)をやってみた

livedoorニュースコーパスをサンプルとして利用

株式会社ロンウイットによって取りまとめられた「livedoorニュースコーパス」を使用します。

  1. 書籍記事(P.286)の「livedoorニュースコーパス」のURLにアクセスし、「ldcc-20140209.tar.gz」をクリックします。
  2. 「ldcc-20140209.tar.gz」を「D:\PythonScraping\src\ch6」フォルダに解凍し、「text」フォルダの名前を「newstext」フォルダに変更します。

テキストの分かち書き

Windows 10で試す場合、ここで使用するスクリプトの31行目を修正する必要があります。
修正前:

 text = open(path, "r").read()

修正後:

 text = open(path, "r", encoding="utf-8").read()

また、途中で「IndexError: list index out of range」が表示されました。これは、「%HOMEPATH%\Anaconda3\envs\tensorflow\Lib\site-packages\janome\tokenizer.py」の144行目を以下のように修正する必要がありました。
修正前:

  MAX_CHUNK_SIZE = 1000

修正後:

  MAX_CHUNK_SIZE = 6000
  1. 」をクリックし、「Anaconda3 (64-bit)」→「Anaconda Prompt」の順番にクリックします。
  2. 「conda info -e」と入力して、Enterキーを押します。

    「tensorflow」実行環境が作成されていることを確認します。
  3. 「activate tensorflow」と入力して、Enterキーを押します。
  4. 「D:」と入力して、Enterキーを押します。
  5. 「cd PythonScraping」と入力して、Enterキーを押します。
  6. 「cd src/ch6」と入力して、Enterキーを押します。
  7. 書籍記事(P.288)の「コマンドラインからプログラムを実行してみましょう。」の下に記載されているコマンドの1行目を、「python3」は「python」に置き換えて入力して、Enterキーを押します。

    拡張子が「wakati」のファイルが作成されます。

単語をIDに変換し出現回数を数える

Windows 10で試す場合、ここで使用するスクリプトの28行目41行目2箇所を修正する必要があります。修正内容はどちらも同じです。
修正前:

  with open(fname, "r") as f:

修正後:

  with open(fname, "r", encoding="utf-8") as f:
  1. 」をクリックし、「Anaconda3 (64-bit)」→「Anaconda Prompt」の順番にクリックします。
  2. 「conda info -e」と入力して、Enterキーを押します。

    「tensorflow」実行環境が作成されていることを確認します。
  3. 「activate tensorflow」と入力して、Enterキーを押します。
  4. 「D:」と入力して、Enterキーを押します。
  5. 「cd PythonScraping」と入力して、Enterキーを押します。
  6. 「cd src/ch6」と入力して、Enterキーを押します。
  7. 書籍記事(P.290)の「プログラムを実行してみましょう。」の下に記載されているコマンドを、「python3」は「python」に置き換えて入力して、Enterキーを押します。

    拡張子が「json」のファイルが作成されます。(少し時間がかかります)

単語をIDに変換し出現回数を数える

Windows 10で試す場合、ここで使用するスクリプトの28行目41行目2箇所を修正する必要があります。修正内容はどちらも同じです。
修正前:

  with open(fname, "r") as f:

修正後:

  with open(fname, "r", encoding="utf-8") as f:
  1. 」をクリックし、「Anaconda3 (64-bit)」→「Anaconda Prompt」の順番にクリックします。
  2. 「conda info -e」と入力して、Enterキーを押します。

    「tensorflow」実行環境が作成されていることを確認します。
  3. 「activate tensorflow」と入力して、Enterキーを押します。
  4. 「D:」と入力して、Enterキーを押します。
  5. 「cd PythonScraping」と入力して、Enterキーを押します。
  6. 「cd src/ch6」と入力して、Enterキーを押します。
  7. 書籍記事(P.291)の「コマンドラインから実行してみましょう。」の下に記載されているコマンドの1行目を、「python3」は「python」に置き換えて入力して、Enterキーを押します。

    テキストの分類が行われ、正解率が表示されます。今回は80%でした。
  8. 実行したスクリプトを修正します。
    修正前:

    data = json.load(open("./newstext/data-mini.json"))
    #data = json.load(open("./newstext/data.json"))

    修正後:

    #data = json.load(open("./newstext/data-mini.json"))
    data = json.load(open("./newstext/data.json"))
  9. もう一度、書籍記事(P.291)の「コマンドラインから実行してみましょう。」の下に記載されているコマンドの1行目を、「python3」は「python」に置き換えて入力して、Enterキーを押します。

    テキストの分類が行われ、正解率が表示されます。今回は94.6%でした。

1 Trackback / Pingback

  1. Git for Windowsをインストールしてみた – 有限会社ビートラスト

Comments are closed.