4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SPSS Modeler で テキストマイニングをしてみる その1 準備編

Last updated at Posted at 2024-09-25

SPSS Modelerでのテキストマイニング

こんにちは。
今回は、SPSS Modelerでv18.1以降は日本語を解析するノードがサポート対象外となってしまったテキストマイニングをテーマにしています。下記URLの最後の方に記載されていますが、
「IBM SPSS Modeler Text Analytics の日本語アダプターは、バージョン 18.1以降非推奨になりました。」
とても、悲しいです。

ただ、SPSS Modelerでテキストマイニングをしてみたい!、もしくは出来ますか?というユーザーの声や質問も多い状況です。
なので、「拡張ノード」 + 「Python」の組み合わせで実現してみようと思います。

1.感情分析と形態素解析をやってみる

テキストマイニングといっても何をしましょう?となりますが、ここでは、感情分析と形態素解析をやってみようと思います。また、その結果を使ってSPSS Modelerでワードクラウドやアソシエーションモデルを作ってみます。

あと、できるだけ拡張ノードでの実装部分は最小限にして、標準ノードで実装可能な部分は標準ノードの機能を使っていきます。

今回の環境は以下の通りです。

項目 内容
SPSS Modeler v18.5(IF01 & IF06 適用)
OS Windows 10(64bit)
Python 3.10.7(デフォルト)

2. まずは準備が必要

テキストマイニングをするために、前提となる設定やライブラリの導入を実施します。

①. 拡張ノードのネイティブPythonを利用するために

 クラスター分析の記事では、拡張ノードのシンタックスは、「Python for Spark」を使用していました。今回は、v18.5から追加されたネイティブPythonを使用してみます。

image.png

少しだけ面倒なのは、ネイティブPythonで追加ライブラリを導入して使用する場合は、SPSS ModelerのPython環境へのアクセス権が必要になることです。デフォルトだと"C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv"になります。
ライブラリなど導入する際にアクセス権がないとエラーになってしまいます。そのため、管理者権限のあるユーザーでの利用もしくは、自身のユーザーアカウントでのアクセス権を付与しておいてください。

下記URL参考にして準備をしてください。

※ユーザーの環境によってはセキュリティ上難しい場合があると思います。その場合は、「Python for Spark」を利用することをお勧めします。こちらは、コンフィグファイルでPythonの環境を切り替えることができるので、アクセス権を付与できるフォルダにPythonの環境を構築しましょう。
以下のURLを参考してみてください。

②. 感情分析用モデルの準備

 感情分析用のモデルは、「Huggingface Transformers」にある学習済みモデルを使用します。まずは、Transformersをpipでインストールしましょう。
下記例は、コマンドプロンプトからインストールする際の一例です。
デフォルトだと「 C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts」にPython.exeがあります。

C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts>python -m pip install transformers

「Huggingface Transformers」には、「自然言語理解」と「自然言語生成」の最先端の汎用アーキテクチャ(BERT、GPT-2など)と何千もの事前学習済みモデルを提供するライブラリです。下記URLの記事を参考にさせていただきました。

また、Pytorchも必要なため、Pytorchも導入します。

C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts>python -m pip install torch torchvision torchaudio

 モデルは、Huggingfaceに公開されている、"koheiduck/bert-japanese-finetuned-sentiment"を利用しようと思います。
"daigo/bert-base-japanese-sentiment"を利用して分析している例もあったのですが、こちらは、現在非公開となっているので利用できませんでした。

 トークナイザーはcl-tohoku/bert-base-japanese-whole-word-maskingを使用します。

③. 形態素解析エンジン

本記事では、「MeCab」を使って形態素解析をしてみます。janomeが扱いやすいと思いますが、すでに下記のブログで「Python for Spark」を利用した例で記載されていますのでぜひ参考にしてください。

MeCabは、下記URLから「mecab-64-0.996.2.exe」をダウンロードしてインストールしてください。(2024/09 時点のバージョンです。)

辞書をビルドする時の文字コードは、「UTF-8」を選んでください。

image.png

インストールが完了したら、システム環境変数「Path」にMeCabの実行パスを設定します。
例では、「C:\Program Files\MeCab\bin」を指定しています。

image.png

続いて、Python環境にMeCab用のライブラリを導入します。

C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts>python -m pip install mecab-python3

⑤. mecab用ライブラリ

その他、必要となるライブラリを導入します。
※. もしかすると必要ないかもしれませんが、念のため追記しました。

protobuf、fugashi、ipadicを導入します。

C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts>python -m pip install protobuf fugashi ipadic

⑤. Pandas

Pandasも使うため、導入をします。※.デフォルトで導入されているかもしれません。

C:\Program Files\IBM\SPSS\Modeler\18.5\python_venv\Scripts>python -m pip install pandas

3. 動作確認

準備ができたら、SPSS Modelerで動作確認をしてみましょう。

以下のような簡単なストリームで拡張の出力ノードを使います。

image.png

ユーザー入力ノードでは、適当な値を入れているだけです。

image.png

①.形態素解析

形態素解析からいきましょう。
拡張の出力ノードでは、シンタックスタブでPythonを選択します。

image.png

そして、以下のコードを貼り付けして、実行してください。

###Use this code to import data from Modeler to Python
#import modelerpy
#modelerData = modelerpy.readPandasDataframe()
#modelerDataModel = modelerpy.getDataModel()

import MeCab
 
mecab = MeCab.Tagger()
sample = "私は幸せです。"
print(mecab.parse(sample ))

実行結果は文字化けしますが、気にしないでください。

Python環境は、文字コードが"UTF-8"なんですが、Modelerの出力画面が"Shift-JIS"なので、文字化けしているようです。
標準出力の文字コードを変更しようとしても"IbmSpssModelerOutputCatcher"というライブラリを使っているらしく、エンコードが行えませんでした。解決策が見つかったら更新します。

image.png

また、今までのエラーや標準出力などが一緒に表示される場合がありますが、気にせず無視しましょう。これも解決策が見つかったら更新します。

②.感情分析

つづいて、感情分析のサンプルを実行してみましょう。
形態素解析と同じように、拡張の出力ノードに以下のコードを貼り付けてください。
もちろん、シンタックスは"Python"を選択していください。

###Use this code to import data from Modeler to Python
#import modelerpy
#modelerData = modelerpy.readPandasDataframe()
#modelerDataModel = modelerpy.getDataModel()

#-------------------------------------------------------
# ライブラリインポート
#-------------------------------------------------------
# Modeler用ライブラリ
import modelerpy

# モデル構築用 Piplineタスク
from transformers import pipeline 
# モデルロード用
from transformers import AutoModelForSequenceClassification 
# Bert Tokenizer
from transformers import BertJapaneseTokenizer

#-------------------------------------------------------
# 感情分析モデル前処理
#-------------------------------------------------------
# daigo/bert-base-japanese-sentiment は非公開になっている
# koheiduck/bert-japanese-finetuned-sentimentを使います
model = AutoModelForSequenceClassification.from_pretrained('koheiduck/bert-japanese-finetuned-sentiment') 

# 東北大学の乾研究室が作成したtokenizerを使いますす
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking') 

# 感情分析のPipline定義
nlp = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) 

sample = "私は、幸せです。"
result = nlp(sample)

# 結果を出力
print(result)

"私は、幸せです。"の感情分析の結果は、"POSITIVE"となりました。
下の方にでているメッセージは無視してください。

image.png

以上で動作確認は終わりです。

4. 動作させるまでに発生したあれこれ その1

さて、ここまでの簡単な内容でも初めて触ると結構苦労しました。
いろいろ動作させるまでに苦労した点の第1弾を以下に参考までに記載します。

①. アクセス権の問題

準備の項でも説明していますが、アクセス権はきちんと設定しましょう。最初は結構エラーになることが多いと思います。

②. iFixの適用問題

2024年9月現在、SPSS Modeler v18.5にはIF022までiFixが公開されています。
(すべてのiFixが公開されてはいません。)
ここで、著者は最新のiFixまですべて適用して動作確認していたのですが、拡張ノードのPythonが全く動かない状態でした。過去にv18.5で作成したコードも動かなくなっていて、????と当初理由がわかりませんでした。
再インストールからiFixの適用を順番にやっていき、動作確認していく上でiFix07を適用するとPythonが動かなくると分かりました。(uiclient.jarがあやしいと思っています。)
環境に依存するかもしれませんので、参考までに書いておきます。著者は、IF001とIF006のみ適用した状態です。

③. Numpyの問題

2024年9月現在、Numpyは2.10がリリースされています。
著者の環境で2.X系のNumpyを使うと以下のようなエラーが発生して動きませんでした。
調べると、v2.0系で多く発生していそうだったので、v1.26.4にしたところ問題なく動きました。

ValueError: numpy.dtype size changed, may indicate binary incompatibility. 

④. エラーはコンソール出力タブでみましょう

拡張ノードでエラーになると、下記画像のようなエラーメッセージがでます。
ここのメッセージからは、エラーの内容はわかりません。

image.png

かならず、各ノードのコンソール出力タブを確認しましょう。

image.png

次回

次回は、サンプルデータを使った感情分析を紹介します。

参考

SPSS Modeler ノードリファレンス目次

SPSS Modeler 逆引きストリーム集

SPSS funさん記事集

SPSS連載ブログバックナンバー

SPSSヒモトクブログ

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?