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 意見（評価表現）抽出ツール用モデル」をご参照ください。なお、ユーザ自身でモデルデータを構築することも可能です。詳しくは「モデルデータの生成」をご参照下さい。

## 新着事項

- 2012 3/1 Version 1.2 リリース
  - バグをフィックスしました。主な変更点は以下の通りです。詳細は変更履歴に記載されています。
    - 評価表現抽出ツールの修正点
      - 入力ファイルの解析でエラーが生じた場合、途中で処理が止まってしまう 問題を修正し、エラーが起きた行をスキップして最後まで入力文を解析するように修正しました。また、どこでエラーが生じたか、入力ファイルの当該行数を表示する ように修正しました。
      - 入力ファイル中にEUC-JPで表現できない文字が含まれていた時、これまではnkfを使って取り除いていましたが、中国語の一部の文字でnkfでも取り除くことができない文字が存在したため、iconvを利用するように修正しました。
      - 評価極性の肯定、否定の記号をこれまで全角で出力していましたが、UTF- 8での全角のマイナス記号は"−"、"ー"など類似する記号が複数あり、エラーを引き起こしやすいため、半角の"+", "-" に統一しました。（あわせて、学習コーパスの仕様、モデル生成ツールを変更しました）
    - モデル生成ツールの修正点
      - 上記の通り、学習コーパス中の評価極性の肯定否定の記号は半角の"+", "-"に統一しました。
      - 学習パラメータを変更（学習時のCRF++の パラメータ"-c"を調整）し、F値の改善を行いました。
- 2011/9/26 Version 1.1 リリース
  - モデルデータの生成ツールが含まれるようになりました。コーパス、辞書を構築することでモデルデータを生成することが可能になります。
  - Version 1.1のダウンロードはこちらになります。
- 2011/9/1 Version 1.0 リリース
  - Version 1.0のダウンロードはこちらになります。

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

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

- 特定の個人、法人、団体の名称や、これらの名称に関連づけられている評価表現に対して、自動処理の結果、誤った評価極性が付与され、表示される可能性があります。また、特定の商品やサービスに対して、誤った評価極性が付与される場合があります。これらは極端な場合には誹謗中傷と取られる可能性もないわけではありませんので、自動処理、機械学習の結果であることを明記する等、適切な対応を行った上で本ツールの活用を行って下さい。
- 否定的な評価表現であるとみなすことにより差別的又は人格侵害であるととらえられてしまう可能性がある表現に本ツールが否定的な評価極性を出力することがあり得ますので上記と同様十分にご注意の上ご活用下さい。

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

## ダウンロード

- 意見（評価表現）抽出ツール（Version 1.2）: extractopinion-1.2.tar.gz (10MB) [HTTP]

## ツールの実行環境

### 実行環境

- OS: Linux（CentOS 5.5で動作確認）
- メモリ: 4GBで動作確認

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

- CRF++（Version 0.54 で動作確認）
- iconv (Version 2.5で動作確認)
- gawk（Version 3.1.6 および 4.0.0で動作確認。3.1.5ではエラーが発生します）
- gcc（Version 4.1.2で動作確認）
- perl（Version 5.8.8 および 5.10.1で動作確認）
  - モデルデータ構築時にはText::CSV_XSモジュールが別途必要です。
- JUMAN（Version 6.0 および 6.01で動作確認。Version 7.0には対応していません。）
- KNP（Version 3.01 で動作確認。Version 4.0には対応していません。）

### ツールのインストール

- ダウンロードリンクからextractopinion-1.2.tar.gzをダウンロードします。
- ダウンロードしたファイルを適当な場所で展開します。展開するとextractopinion-1.2というディレクトリができるので、そこに移動します。

      % tar zxvf extractopinion-1.2.tar.gz
      % cd extractopinion-1.2/

- 以下のコマンドを実行し、svmtools/ 内のプログラムをコンパイルします。

      % cd svmtools/
      % make clean ; make

- 以下のコマンドを実行し、pol/ 内のプログラムをコンパイルします。

      % cd ../pol/
      % make clean ; make

## 意見（評価表現）抽出ツールの動作確認方法

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

### 入力ファイル

まず入力ファイルを用意します。入力ファイルはテキストファイルで、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   [著者]   メリット+   商機が拡大すると考えられる。

### エラー時の動作

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

- "\x{fffd}" does not map to euc-jp.
  - 「詹」など一部のEUC-JP範囲外の文字がうまく処理できない時に表示されます。
- skip: KNP ERROR:
  - KNPの解析がうまくいかないため、KNP側でエラーが出力された場合に表示されます。入力文が名詞の羅列である場合などで生じます。

### ツールの注意事項

- 解析は機械学習で行われているため、入力文の微細な差異が処理結果に影響する場合があります。例えば、句読点の有無によっても処理結果が変わる可能性があります。

## モデルデータの生成

学習用コーパス(付録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ファイル

- 注1）この基準書は学習コーパスを構築するためのもので、全く同じ基準でツールが情報を付与することは保証しません。
- 注2) pol/内のコードの著作権については注意事項があります。詳しくは著作権＆ライセンスをご参照下さい。

## 解析精度

上述したように本ツールに付属しているモデルデータは非常に小さな学習コーパスから構築したサンプルになります。また、評価表現の辞書データも数語しか登録されていません。高度言語情報融合フォーラム（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に関しては人間の判断に近いものであると考えられます。

- 学習用評価情報コーパスにおけるアノテータ間の一致率

  | 抽出範囲の主辞の一致
  --- | ---
  Precision | 0.71
  Recall | 0.67

### 評価タイプ分類

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

- 注1) 評価表現が正しく抽出されたと仮定して評価。精度はテストデータの中で正しい出力が得られた事例の割合を示します。
- 注2) 意見（評価表現）抽出ツール用モデル (Version 1.1)と比較して、わずかに精度の数値が下がっています。これは、学習コーパスのバグをfixしたため、学習コーパス自体がVersion1.1の時と変わっていることが影響しています。

### 評価保持者抽出

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

- 注1) 評価表現が正しく抽出されたと仮定して評価。精度はテストデータの中で正しい出力が得られた事例の割合を示します。
- 注2) 意見（評価表現）抽出ツール用モデル (Version 1.1)と比較して、わずかに精度の数値が下がっています。これは、学習コーパスのバグをfixしたため、学習コーパス自体がVersion1.1の時と変わっていることが影響しています。

### 文全体の極性判定

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

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

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

## 著作権＆ライセンス

- 本ソフトウェアはフリーソフトウェアですが、著作権は、独立行政法人 情報通信研究機構に帰属します。本ソフトウェアは、BSDライセンス (Modified BSD License)、LGPL (GNU Lesser General Public License)、または、GPL (GNU General Public License) に従って使用、改変、再配布することができます。
- pol/に含まれる以下のコードは L-BFGS最適化アルゴリズムを実装したもので、Jorge Nocedal氏によってFORTRANで開発され、BSDライセンスで公開されているコードを、本ツール用に人手でC言語に翻訳したものです。
  - lbfgs.c
  - lbfgs.h
  オリジナルのFORTRANで書かれたコードの著作権は、開発者であるJorge Nocedal氏が有していますが、BSDライセンスで公開されているため、他の言語に翻訳（改変）して再配布することが認められています。

## 参考文献

- Nakagawa, T., Inui, K. and Kurohashi, S.: Dependency tree-based sentiment classification using CRFs with hidden variables, In Proceedings of Human Language Technologies: The 2010 Annual Conference of the North American Chapter of the Association for Computational Linguistics, pp. 786-794 (2010).
- 中川哲治, 乾健太郎, 黒橋禎夫: 隠れ変数を持つ条件付き確率場による依存構造木の評価極性分類, 第 192 回自然言語処理研究会, (2009).
- Tetsuji Nakagawa, Takuya Kawada, Kentaro Inui, Sadao Kurohashi: Extracting Subjective and Objective Evaluative Expressions from the Web, In Proceedings of the Second International Symposium on Universal Communication (ISUC 2008), pp.251-258 (2008).
- 川田拓也, 中川哲治, 森井律子, 宮森恒, 赤峯享, 乾健太郎, 黒橋禎夫, 木俵豊: Web テキストにおける評価情報の整理・分類およびタグ付きコーパスの構築, 言語処理学会第 14 回年次大会論文集, pp.524-527 (2008).
- Liu, D.C., and Nocedal, J., On the Limited Memory Method for Large Scale Optimization , Mathematical Programming B, 45, 3, pp. 503-528, (1989).
- Nocedal, J., Updating Quasi-Newton Matrices with Limited Storage , Mathematics of Computation 35, pp. 773-782, (1980).

## 付録

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

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

- 感情+、感情-
  - 主観的でかつ、感情的な評価表現
    - 例: 京都が好きだ（感情+）
- 批評+、批評-
  - 主観的ではあるが、感情的ではない評価表現
    - 例: 京都は美しい（批評+）
- メリット+、メリット-
  - 物や人・組織などの特徴や特質について述べた評価表現。長所や欠点について記述された評価表現
    - 例: このクーポンはいつでも利用できます（メリット+）。
- 採否+、採否-
  - これまであまり行われていなかった行為や制度、およびこれまであまり使われていなかった物について、積極的に行為や利用を進めたり、促したりする行為を表す評価表現
    - 例: A社は電子マネーの投入を決定した。（採否+）
- 出来事+、出来事-
  - 良い／悪い出来事や経験を表す文や経験を表す評価表現
    - 例: この製品はグッドデザイン賞を受賞した。（出来事+）
- 当為
  - 義務や提言を表す評価表現（極性は無く、出力されません）
    - 例: 電子マネーを投入するべきだ。（当為）
- 要望
  - 要望を表す評価表現（極性は無く、出力されません）
    - 例: 電子マネーを使えるようにしてほしい。（要望）

### 付録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内の環境変数

- TMPDIR
  - 中間ファイルを一時的に保存するディレクトリ。デフォルトは /tmp
- model
  - モデルファイルのプレフィックス。デフォルトはextractopinion-1.2/modeldata/sample/model
- dic
  - 辞書データを格納するディレクトリ。デフォルトはextractopinion-1.2/dic

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

#### フォーマット

- フォーマットはdictionary.dic, reverse.dic ともに共通です。1つのエントリにつき以下3つの値をタブで区切ったテキストとします。文字コードはEUC-JPです。
  1. 見出し語
  2. 評価極性（半角の+/-）
  3. 以降のカラムは、見出し語を形態素解析した結果得られる辞書形（原形）をタブで区切って登録します。
- 例:

  見出し語 | 評価極性 | 形態素
  --- | --- | ---
  良い | + | 良い |  |  |
  正統派 | + | 正統だ | 派 |  |
  やさしさ | + | やさしい | さ |  |
  内分泌攪乱化学物質 | - | 内分泌 | 攪乱 | 化学 | 物質

- 辞書はデフォルトではextractopinion-1.2/dic 内に格納されています。
- （評価表現）抽出ツール用モデルでは収集した見出し語をJUMANおよびJUMAN+KNPで解析した結果をマージし、重複を取り除いた上で構築しています。なお同じ見出し語で複数の形態素解析されたものは別エントリとして登録しています。

#### 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ファイルをダウンロードすることができます。

- sample000.csv

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

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

- 「評価保持者」「評価表現」「評価タイプ」「評価対象」の判定基準は『評価情報タグ付与基準（spec.pdf）』を参考にしてください。なお、『評価情報タグ付与基準（spec.pdf）』には、上記4つの情報以外のアノテーション情報についても記載されていますが、本ツールでは利用されていません。
- 一文中に2つ以上の評価表現が抽出できる場合は、example-2のように、同一セル内で改行し、評価表現を複数抽出します。
- 評価表現は必ず「文」カラムから抽出しますが、評価保持者や、評価対象は必ずしもその文にない場合があります。例えば、評価保持者が「著者（書き手自身）」の場合や、評価対象がその文からは推定できない場合などです。その場合、「[著者]」や「[不定]とし、"[ ]"で囲ってアノテーションを行います。なお、example-2のように、評価保持者が明示的に書かれており、かつ、それが書き手自身を表す場合は、"[著者]"を入れるようにします。この場合は、"私[著者]"とします。
- example-3のように、コーパスには評価情報が全く存在しない文も含めるようにしてください。その場合、「評価保持者」「評価表現」「評価タイプ」「評価対象」は空にします。
- 評価タイプの"+","-"は半角文字です。
- 『評価情報タグ付与基準（spec.pdf）』では、評価タイプ「当為」「要望」にも極性がありますが、本ツールでは、「当為」「要望」に関しては極性を付与する必要がありません。
- 機械学習用コーパスにおけるCSVの仕様は、RFC 4180に従っています。Microsoft Excel (Windows版) の生成するCSVにおいて動作を確認しています。
- CSVを読み込む処理において、1行目はヘッダとして処理されず無視されますので、データ構築の際は、1行目は各列の列名を入力してください。

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

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

- Type Error
  - 指定された評価タイプ以外の文字列が、評価タイプの列に書かれていると、"skip: Type Error" と表示され、当該行数が表示されると共に、その行の処理はスキップされます。
- Element number mismatch
  - 「文」カラムから抽出される評価表現の数は、評価保持者、評価タイプもしくは評価対象の数と全て一致していなければなりません。つまり、評価表現が2つ抽出された場合は、評価保持者、評価タイプ、評価対象もすべて2つずつ書かれていなければ成りません。 評価表現の数と、評価保持者、評価タイプもしくは評価対象の数が一致していない場合は、"skip: Element number mismatch" と表示され、当該行数が表示されると共に、その行の処理はスキップされます。
- KNP Error
  - KNPでエラーが生じた場合は、"KNP Error"と表示され、KNPが出力するエラーメッセージと、当該行が表示されると共に、その行の処理はスキップされます。

情報分析研究室（2011年度より言語基盤グループから改称）
独立行政法人 情報通信研究機構
Copyright 2007-2012 NICT All Rights Reserved.