English

意見(評価表現)抽出ツール

目次

  1. 意見(評価表現)抽出ツールとは
  2. 高度言語情報融合フォーラム(ALAGIN)で公開されているモデルデータと辞書データについて
  3. 新着事項
  4. ご利用にあたっての注意事項
  5. ダウンロード
  6. ツールの実行環境
  7. 意見(評価表現)抽出ツールの動作確認方法
  8. モデルデータの生成
  9. このパッケージに含まれているディレクトリ・ファイル
  10. 解析精度
  11. 参考文献
  12. 著作権&ライセンス
  13. 付録

意見(評価表現)抽出ツールとは

本ツールは、国立研究開発法人情報通信研究機構 旧知識処理グループ 情報信頼性プロジェクトによって開発されたもので、1行につき1文が書かれたテキストファイルを入力として、機械学習を使って何らかの事象に対する意見や評判および評価(以下、これらをまとめて「評価情報」と呼びます)がテキスト中のそれぞれの文に存在するかどうかの判定を行い、その文に評価情報が存在すると認められた場合、以下の情報を出力するツールです。

  1. その評価情報を表す表現の抽出(評価表現抽出)
  2. その評価情報の意味的な分類(評価タイプ分類)
  3. その評価情報が肯定的なニュアンス(ポジティブ)を表すのか、否定的なニュアンス(ネガティブ)を表すのかの判定(評価極性判定)
  4. その評価情報を発信する主体の抽出(評価保持者抽出)

評価表現とは、「-は良い」「-はつまらない」といった、肯定的もしくは否定的意見や評判、提言を表す表現を言います。評価表現を含む文が評価情報となります。例えば、以下の文は評価情報とみなすことができます。

上の例の場合「良い」が評価表現となります。評価タイプは、評価表現を意味的な違いによって分類したタイプを表します。例えば、感情的な評価表現を表す「感情」や感情的ではないが主観的な評価表現を表す「批評」、客観的に利点欠点について述べている「メリットデメリット」といったタイプとして評価タイプは定義されています(詳しい分類は付録1を参照)。この場合は、感情的ではないが主観的な評価表現なので評価タイプは「批評」となります。評価極性は、その評価情報が「良い」や「好き」に代表されるポジティブな意味を持つのか、「悪い」や「嫌い」に代表されるネガティブな意味を持つのかを表します。ポジティブな意味を表す場合は"+"で表記し、ネガティブな意味を表す場合は、”-”で表記します(なお、評価極性が付与されない評価タイプもあります)。評価保持者はその評価を下している主体を指します。この場合は、この文の書き手、すなわち著者が評価保持者となります。評価情報の詳しい仕様はパッケージに含まれている『評価情報タグ付与基準(spec.pdf)』をご参照ください。ただし、これは学習コーパスを人手で構築する際の基準で、全く同じ基準で機械学習を利用したツールが情報を付与することは保証しませんのでご注意ください。

本ツールを用いることによって、Webテキストなどから様々な事柄に関する人々の評価情報を抽出することができます。評判検索や意見分析、テキストマイニングなどでご活用ください。

高度言語情報融合フォーラム(ALAGIN)で公開されているモデルデータと辞書データについて

本ツールに付属しているモデルデータは非常に小さな学習コーパスから構築したサンプルになります。また、評価表現の辞書データも数語しか登録されていません。高度言語情報融合フォーラム(ALAGIN)ではWebデータ2万文のタグ付きコーパスから構築した意見(評価情報)抽出ツール用のモデルデータと、国立研究開発法人情報通信研究機構情報分析研究室参考文献とは異なる手法で独自に収集した約35,000語からなる辞書データ(ポジティブ:約10,000語、ネガティブ語: 約 25,000語)を「意見(評価表現)抽出ツール用モデル(Version 1.2)」という名称で公開しております。詳しくは、高度言語情報融合フォーラム(ALAGIN)言語資源サイト(言語資源・サービス一覧)の「C-3 意見(評価表現)抽出ツール用モデル」をご参照ください。なお、ユーザ自身でモデルデータを構築することも可能です。詳しくは「モデルデータの生成」をご参照下さい。

新着事項

ご利用にあたっての注意事項

本ツールは統計的機械学習を用いて評価情報の抽出および分類を行っています。本ツールの性格上、処理結果について以下の可能性にご留意下さい。

上記の点に関しまして、ツールの出力は統計的機械学習を用いて行われており、その内容の正確性、真実性、相当性が保証されるものではありません。また、ツールの出力は国立研究開発法人 情報通信研究機構の主体的な意思決定・判断を示すものではありません。国立研究開発法人情報通信研究機構では、本ツールにより抽出される情報の信頼性について責任を持ちません。本ツールの使用に関連して生ずる損失、損害等について、いかなる場合においても一切責任を負いません。以上の点について十分注意した上で自己責任の下でご利用ください。

ダウンロード

ツールの実行環境

実行環境

あらかじめインストールしておくべきプログラム

ツールのインストール

意見(評価表現)抽出ツールの動作確認方法

インストール終了後、本ツールに付属しているサンプルのモデルデータと辞書を元に、以下の方法で本ツールの動作の確認および通常の利用ができます。

入力ファイル

まず入力ファイルを用意します。入力ファイルはテキストファイルで、1文が1行ずつ書き込まれたフォーマットを想定しています。文字コードはUTF8です(注)。以下では例として入力ファイル名を"sample.txt"と表記して説明します。

入力ファイル(sample.txt)の内容例:

% cat sample.txt
ほうれん草はビタミンが豊富だ。
京都は日本にある。
商品Aは良くない。
太郎は学校に行くべきだ。 道州制は国の一律の規制が解かれ地域経済の活性化が図られるので、商機が拡大すると考えられる。

注)内部の処理はEUC-JPで行われます。EUC-JPで表現できないUTF-8の文字は、処理の過程で無視されるため出力には含まれません。また、半角文字は全角に変換した上で処理されるため、出力では全角文字となります。

コマンド

入力ファイル名を第一引数として、以下のコマンドを実行します。

% cd extractopinion-1.2/
% ./extract.sh sample.txt

extract.shの処理の流れについては付録2を参照してください。

出力

コマンドを入力するとsample.txtに書かれた各文が処理され、標準出力に下記の表の値が出力されます。

<文書ID> 入力ファイル名(末尾に.eucが追加され、EUC-JPに変換されたファイル名が表示されます)
<文ID> 文の番号(先頭は1で、入力ファイルに書かれている文ごとに1増える。(整数)
<評価保持者> 文字列(UTF-8)
<評価タイプと評価極性> 文字列(UTF-8)。評価極性がないタイプ(当為・要望)の場合は極性は表示されず、評価タイプのみ表示される。出力される評価タイプの種類は付録1参照
<評価表現> 文字列(UTF-8)

出力結果(例)のように、各値はタブ文字で区切られ、改行で終了するような形式で処理結果が出力されます。文字コードはUTF-8です。なお、モデルデータが異なると、出力結果も変わります。評価表現が含まれない文が入力として与えられた場合は、文書IDと文ID以外何も表示されません。 複数の評価表現が一文中に存在する場合は、複数行にわたってそれぞれの評価表現に関する出力がされます。

出力結果(例):

sample.txt.euc   1   [著者]   メリット+   ビタミンが豊富だ。
sample.txt.euc   2   
sample.txt.euc 3 [著者] 批評- 良くない。
sample.txt.euc 4 [著者] 当為 学校に行くべきだ。 sample.txt.euc 5 [著者] メリット+ 地域経済の活性化が図られるので、
sample.txt.euc 5 [著者] メリット+ 商機が拡大すると考えられる。

エラー時の動作

解析途中でエラーが検出された場合は、該当行はスキップされ、解析結果としては標準出力に何も表示されません。エラーメッセージは標準エラー出力として表示されます。 例えば、以下のようなエラーが確認されています。

ツールの注意事項

モデルデータの生成

学習用コーパス(付録2)を用意することで、機械学習のモデルデータを再構築することができます。モデルデータの再構築には、まず学習用コーパス(csv)と辞書を作成します。次に変換スクリプトを用いて形態素解析、係り受け解析等を施し、内部処理用tsvファイルに変換します。さらにモデル学習用のスクリプトを実行することで、新たなモデルデータを構築することができます。具体的には、以下の手順で行ってください。

  1. まず、PerlのモジュールであるText::CSV_XSを、以下のコマンドを実行し、インストールしておきます。
    % cpan
    cpan> install Text::CSV_XS
  2. 評価極性辞書 (dictionary.dic) および反転語辞書 (reverse.dic) を作成します。フォーマットについては付録4を参照して下さい。辞書はデフォルトでは"extractopinion-1.2/dic"に保存しておきます。conf.sh (付録3) で指定されている環境変数"dic"を編集することで場所を変更できます。
  3. 学習用コーパス(csv)を付録5のフォーマットに従って人手で作成し、"extractopinion-1.2/makemodel/csv/"内に保存します。 (パッケージにはサンプルとして"extractopinion-1.2/makemodel/csv/"内にsample000.csv, sample001.csvがあります。ユーザ自身でコーパスを構築した場合は、sample000.csv, sample001.csvは削除して下さい。)
  4. 以下のコマンドを実行します。csv2tsv.sh は"extractopinion-1.2/makemodel/csv/"内の全てのcsvを読み込み、形態素情報などを付与し、モデル学習用スクリプトの入力ファイル (tsv) に変換するスクリプトです。このコマンドを実行するには、 JUMANとKNPが必要です。tsvファイルは "extractopinion-1.2/makemodel/tsv/"に生成されます。
    % cd extractopinion-1.2/makemodel/csv/
    % ./csv2tsv.sh
  5. 以下のコマンドを実行します。 makemdl.shは"extractopinion-1.2/makemodel/model/tsv"内にあるtsvファイルを全て1つのデータとしてまとめて読み込みます(注)。
    % cd extractopinion-1.2/
    % ./makemdl.sh
  6. "makemodel/model" ディレクトリにモデルデータが生成されます。本ツールが読み込むモデルデータはconf.sh (付録3) で指定されています。生成されたモデルデータを適当なディレクトリにコピーし、conf.shに書かれている環境変数"model"を編集して、モデルデータの場所を指定して下さい。

注) CRF++のパラメータについて: 本ツールでは評価表現抽出、評価保持者抽出の学習においてCRF++を用いており、 CRF++のパラメータ "-p"(実行時のスレッド数)は高速化のためデフォルトで12に指定されています。その際の使用メモリは1GB程度ですが、マシン環境によって負荷になる場合 は"-p"の値を調整して下さい。調整する箇所は extractopinion-1.2/xpr/train.sh と、extractopinion-1.2/src/crftrain.sh 内の変数"param_p"の値になります。

このパッケージに含まれているディレクトリ・ファイル

readme.{html/utf.txt} 説明書
spec.pdf 評価情報タグ付与コーパス構築基準書(注1)
pol/ 評価極性分類用モジュール(注2)
src/ 評価保持者抽出用モジュール
typ/ 評価タイプ分類モジュール
xpr/ 評価表現抽出用モジュール
svmtools/ SVMの学習・分類用モジュール
lib/ 共通使用関数など
dic/ 共通仕様辞書
dictionary.dic 評価表現辞書(付録4)
reverse.dic 反転語辞書付録4)
modeldata/sample/ 構築済みサンプルモデルデータ
model.pol_mdl モデルデータ(評価極性分類用)
model.src_crfmdl モデルデータ(評価保持者抽出用)
model.src_ft モデルデータ(評価保持者抽出用)
model.src_svmmdl モデルデータ(評価保持者抽出用)
model.typ_ft モデルデータ(評価タイプ分類用)
model.typ_mdl モデルデータ(評価タイプ分類用)
model.xpr_mdl モデルデータ(評価表現抽出用)
sample.txt サンプルの入力ファイル
extract.sh 評価情報の抽出を行うスクリプト
_extract.sh 評価情報の抽出の内部スクリプト
conf.sh 設定ファイル
makemdl.sh モデルデータの生成スクリプト
_train.sh モデルデータ生成用の内部スクリプト
makemodel/ モデルデータ生成用のディレクトリ
model/ モデルデータ
csv/ 機械学習用のコーパス (付録5)
tsv/ makemdl.shの入力となるtsvファイル

解析精度

上述したように本ツールに付属しているモデルデータは非常に小さな学習コーパスから構築したサンプルになります。また、評価表現の辞書データも数語しか登録されていません。高度言語情報融合フォーラム(ALAGIN)ではWebデータ2万文のタグ付きコーパスから構築した意見(評価情報)抽出ツール用のモデルデータと、国立研究開発法人情報通信研究機構情報分析研究室参考文献とは異なる手法で独自に収集した約35,000語からなる辞 書データ(ポジティブ:約10,000語、ネガティブ語: 約 25,000語)を「意見(評価表現)抽出ツール用モデル」という名称で公開しております。詳しくは、高度言語情報融合フォーラム(ALAGIN)言語資源サイト(言語資源・サービス一覧)の「C-3 意見(評価表現)抽出ツール用モデル」をご参照ください。

本ツールに付属しているサンプルモデルと、高度言語情報融合フォーラム(ALAGIN)から公開している意見(評価表現)抽出ツール用モデル Version 1.2を用いた場合の本ツールの解析精度は以下の通りです。以下の評価は、Webデータ2万文をもとにした学習用評価情報コーパスをテスト用データとして用い、10分割交差検定で評価を行っています。なお、サンプルモデルは、意見(評価表現)抽出ツール用モデルで使用したコーパスの30%を学習データとしてモデルを構築したものになります。サンプルモデルの精度の数値は、この30%のデータを学習データとし、別の10%をテストデータとする10分割交差検定を行った結果になります(数値はVersion 1.1の時点で計測したものを載せております)。

評価極性判定

  本ツール付属のサンプルモデルデータ 意見(評価表現)抽出ツール用モデル(Version 1.2)
Precision(肯定) 0.6901 0.8732
Recall(肯定) 0.7937 0.8932
F値(肯定) 0.7383 0.8831
Precision(否定) 0.6915 0.8658
Recall(否定) 0.5646 0.8415
F値(否定) 0.6216 0.8535
精度 0.6910 0.8706

注)評価表現が正しく抽出され、評価極性のある評価タイプが抽出されたと仮定して評価。Precision, Recallは肯定の場合と否定の場合に分けて評価を行っています。Precisionは本ツールが出力した肯定(否定)の極性のうち、正しい極性を出力した割合を表します。精度はテストデータ中で正しい出力が得られた事例の割合を表します。 Recallはテストデータ中の肯定(否定)の極性のうち、本ツールが正しい極性を出力した割合です。

評価表現抽出(抽出範囲の主辞の一致)

  本ツール付属のサンプルモデルデータ 意見(評価表現)抽出ツール用モデル(Version 1.2)
Precision 0.6051 0.6021
Recall 0.2293 0.4077
F値 0.3322 0.4860

注) Precisionは本ツールが抽出した評価表現のうち正しく抽出された評価表現の割合を表します。Recallはテストデータ中の正解評価表現のうち本ツールが正しく抽出した評価表現の割合を表します。人手で構築された学習用評価情報コーパスは2名の作業者によって行われ、適宜基準について合議を行い進められました。2名の評価者の一方のアノテーションを正解とみなし、もう一方をシステムの出力とみなした場合における、精度は以下の表のようになります。従って一見上記のシステムの精度は極端に低いように見える可能性がありますが、Precisionに関しては人間の判断に近いものであると考えられます。

評価タイプ分類

  本ツール付属のサンプルモデルデータ 意見(評価表現)抽出ツール用モデル(Version 1.2)
精度 0.5211 0.6515

評価保持者抽出

  本ツール付属のサンプルモデルデータ 意見(評価表現)抽出ツール用モデル(Version 1.2)
精度 0.6434 0.6919

文全体の極性判定

入力文全体の極性を出力するタスク、すなわち、1文中において抽出されるポジティブな評価表現1つにつき、+1を与え、ネガティブな評価表現1つにつき、-1を与え、入力文中の全ての評価表現の値の和が正、負、ゼロのどれであるかを出力するタスクを考えます。この場合は、評価表現抽出が必ずしも正解と完全に一致しなくても文全体の極性の判定は正しく行える場合があります。その場合の精度は以下のようになります。

  本ツール付属のサンプルモデルデータ、および評価表現辞書 意見(評価表現)抽出ツール用モデル(Version 1.2)
精度 0.66 0.72

注) 精度はテストデータの中で、正、負、ゼロのいずれかが正しく出力できた事例の割合を示します。

著作権&ライセンス

参考文献


付録

付録1)評価タイプの種類と各タイプが持ちうる極性

(+はポジティブ、-はネガティブを表します)

付録2)内部処理の流れ(extract.shの動作)

  1. 入力ファイルの文字コードをEUC-JPに変換し、ファイル名の末尾に.eucを加えた中間ファイルを生成
  2. 1.で生成された中間ファイルから評価情報処理用tsvファイルを作成(lib/in2tsv.pl)
  3. 評価表現の抽出(xpr/extract.sh)
  4. 評価保持者の抽出(src/extract.sh)
  5. 評価タイプの分類(typ/extract.sh)
  6. 評価極性の判定(pol/extract.sh)
  7. 評価情報処理用tsvファイルを出力用フォーマットに変換(lib/tsv2out.pl)

(内部処理では基本的にtsvファイルをベースに情報の入出力を行っています)

付録3)conf.sh内の環境変数

付録4)辞書データのフォーマット

フォーマット

reverse.dic (反転語辞書)

reverse.dicは文全体の極性を反転させるような表現を集めた辞書です。例えば、「絶やす」の様な動詞が相当します。

「絶やす」通常はネガティブな意味を持ちますが、上記例のように、ネガティブな項を取ることで文全体がポジティブなニュアンスを持つようになります。reverse.dicはこのような表現を集めたものです。

場所

dictionary.dic, reverse.dic ともに、デフォルトではconf.sh の環境変数"dic" によって、"extractopinion-1.2/dic"に置くよう指定されています

付録5) 機械学習用コーパス (csv)

コーパスのフォーマットと構築方法

機械学習用コーパスはCSVフォーマットのテキストファイルで、次の手順で構築します。Microsoft Excel 等表計算ソフトを用いて構築することを想定していますが、下記のファイルフォーマットに従っていればテキストエディタ等でも作成することが可能です。なお、文字コードはShift-JISです。

1. 機械学習用コーパスは、以下の列から構成されています。列の順番は、「列番号」の順に従って下さい。列名は任意ですが、データの1行目には必ず列名を入れてください。

列番号 列名 (列の名称は任意)
1 文ID (任意のID)
2
3 評価保持者
4 評価表現
5 評価タイプ
6 評価対象(評価表現の対象を表します。本ツールでは出力されないため、省略可能)

アノテーション例: 表計算ソフトを用いて以下のようなフォーマットでデータを構築していきます。

文 ID 評価保持者 評価表現 評価タイプ 評価対象
example-1 京都は美しい [著者] 美しい 批評+ 京都
example-2 私は京都はきれいだが、好きではない 私[著者]
私[著者]
きれいだ
好きではない
批評+
感情-
京都
京都
example-3 金閣寺は京都市にある        

以下からサンプルのCSVファイルをダウンロードすることができます。

2. 構築したコーパスはCSVとして保存し、モデルデータを生成します。

機械学習用コーパスの作成については以下の点にご注意ください。

CSVコーパス変換時のエラー表示について

csv2tsv.sh 実行時に機械学習用コーパスのフォーマットに誤りなどがあると以下のエラーメッセージが表示され、機械学習用コーパスの当該行は処理されず、スキップされます。


情報分析研究室(2011年度より言語基盤グループから改称)
国立研究開発法人 情報通信研究機構
Copyright 2007-2015 NICT All Rights Reserved.