0
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のテキスト分析のチュートリアル③テキストリンク分析

Posted at

はじめに

SPSS Modeler Premium 18.6では日本語テキスト分析が可能になっています。

テキスト分析についてはModelerFlowのチュートリアル@TTS22 さんの日本語解説記事がありますので、この内容をオンプレ版のModelerで実行してみます。

3つの記事からなっています。

①インタラクティブ・ワークベンチ
②カテゴリーのフラグ化
③テキストリンク分析(←この記事)

■テスト環境

  • Modeler Premium 18.6
  • Windows 11 64bit

テストデータ

@TTS22 さんが翻訳してくれたホテルの満足度調査のデータを使います。
Comments列にテキストデータが入っています。820件あります。
{F9DA5B8D-38EC-44FD-9CD7-8AD26AFEA503}.png

テキストリンク分析

「IBM SPSS Text Analytics」のパレットから「テキストリンク分析」のノードを接続します。
image.png

まず、フィールドのタブで以下を選択します。
IDフィールド:id
テキストフィールド:Comments

「リソーステンプレート」で「読み込み」をクリックし、「HotelSatisfaction (Japanese)」を選んで「OK」します。
image.png

こんな結果が返ります。「HotelSatisfaction (Japanese)」のリソーステンプレートの中で定義されている「条件規則」に基づいて、「コンセプト」とその「タイプ」抜き出します。「条件規則」がテキストの中のどこにマッチしたかは「マッチテキスト」にあらわされています。

image.png

テキストリンク分析の結果は、ちょっと読みにくい点があるので少し加工します。
まずidが文字列型になってしまうので、to_integer(id)で整数にし、順番をそろえるためにソートします。

image.png

次にデータ型ノードで値を読み込んでいます。
これによって「コンセプト5-6」、「タイプ5-6」にはNULLしか入っていないことがわかります。

image.png

そのためフィルターノードで、「コンセプト5-6」、「タイプ5-6」は除去します。
image.png

テキストリンク分析ではオリジナルのテキストの列がなくなってしまうので、ソースファイルを「レコード結合」ノードで結合していきます。

image.png

「フィールド順序」ノードで、フィールド順を整えます。

image.png

あらためて分析結果をみてみると、「Comments」から「条件規則名」でマッチした結果が「マッチテキスト」にあり、各「コンセプト」「タイプ」が抜き出されています。なお、マッチした条件規則毎に行がありますので、同じコメントに対して複数の行が返っています。なお、コンセプトの定義がないものもUncertainタイプに割り当てられるので全ての行が戻されています。
{9B342BE9-96F0-4AD7-9A73-6B30647F23DE}.png

センチメント分析

このテキストリンク分析ではPositiveかNegativeかの「タイプ」分類ができているので、センチメント分析をしてみます。

まず置換ノードで「タイプ1-2」の列に「Positive」があったら「1」を立て、
「Negative」「NO」「Contextual」「Suggestion」があったら「-1]を立て、
いずれにも該当しなければ「0」を入れていきます。

image.png

if @FIELD matches 'Positive*' then 1
elseif @FIELD matches 'Negative*' or 
@FIELD = 'NO' or @FIELD = 'Contextual' or @FIELD = 'Suggestion' then -1
else 0
endif

なお、本来は「タイプ3-4」にも「Positive」などのセンチメントをあらわす「タイプ」が入りうるのですが、今回はデータ型ノードで「Positive」などがはいっていないことが確認できているので、省略しています。

image.png

image.png

プレビューすると以下のように「タイプ1-2」がセンチメントの「1」か「0」の値に置き換えられています。
image.png

この「タイプ1-2」を足し算して、合計が正の値になるとPos_Count「1」、負の値になった場合にNeg_count「1」を立てています。

image.png

「レコード集計」でコメント毎にポジティブとネガティブの合計件数を出しています。
image.png

結果は以下のようになりました。各コメントに対してポジティブ/ネガティブなコンセプトが何個あったかが算出できました。
{4EFE28BD-BF69-488A-B80D-DE6E892D5B5E}.png

まとめ

テキストリンク分析はちょっと癖のある出力で、カテゴリ出力するモデルを作った方が使い勝手はよさそうだと思いますが、「コンセプト」や「タイプ」を値として取り出すことができ、この例のようにセンチメント分析なども可能です。

サンプル

サンプルストリーム

サンプルデータ

参考

ホテル満足度のテキスト分析 - Docs | IBM Cloud Pak for Data as a Service

【CP4DaaS】SPSS ModelerのText Analyticsで日本語テキストデータを分析する (テキスト・リンク分析) #ibmcloud - Qiita

0
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
0
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?