テキスト・エンリッチメント・プロパティ・ファイル

テキスト・エンリッチメント・プロパティ・ファイルは、Text Enrichmentコンポーネント・インスタンスのSalience Engineの構成を定義します。コンポーネントのすべてのインストールで同じプロパティ・ファイルを使用するか、異なるプロパティ・ファイルを使用してコンポーネントの様々なインスタンスをサポートすることができます。

テキスト・エンリッチメント・プロパティ・ファイルでは次のことができます。
  • サポートされているテキスト抽出機能が有効かどうかの指定
  • 処理する入力フィールドの指定
  • 評価のスコアリングしきい値の定義
  • 評価の出力データのフィールド名の定義

構成プロパティのスペリングと大文字/小文字は、次の項の一覧のスペリングと大文字/小文字と一致する必要があります。

次の項と表では、構成プロパティについて説明します。設定値には、ユーザー変数(ユーザーが名前や設定をカスタマイズできる)もありますが、それ以外では表で説明されている特定の値を使用する必要があります。

グローバルのセンチメント分析プロパティ

次のプロパティは、センチメント分析を全体的に制御します。
te.sentiment.analysis.enabled

このプロパティをtrueに設定すると、センチメント分析のすべてのレベル(ドキュメント、エンティティ、テーマ)が有効になります。各レベルは、個別に有効または無効にできます。

この機能を使用する場合は、センチメント分析を含むライセンスを購入する必要があります。

表1 ドキュメントのセンチメント分析プロパティ
ドキュメントのセンチメント・プロパティ 意味
te.document-sentiment.enabled true (デフォルト)に設定すると、ドキュメントのセンチメント分析が有効になり、現在のドキュメントの全体的なセンチメント・スコアが計算されます。falseに設定すると、ドキュメントのセンチメント分析が無効になります。
te.document-sentiment.field 出力レコードの内のセンチメント・スコアが書き込まれるターゲット・フィールド名を設定します。フィールド名はユーザー変数であり、デフォルトはDocumentSentimentです。
te.document-sentiment.use-chains true (デフォルト)に設定すると、ドキュメントのセンチメント・スコアリングでは、語彙的連鎖を使用してセンチメント・スコアを計算します。デフォルトはtrueです。
表2 名前付きエンティティ処理プロパティ
名前付きエンティティのプロパティ 意味
te.entity.enabled true (デフォルト)に設定すると、名前付きエンティティの抽出が有効になります。falseに設定すると、名前付きエンティティの抽出が無効になります。
te.entity.types 抽出する名前付きエンティティのタイプを設定します。サポートされているタイプは次のとおりです。
  • Company
  • Person
  • Place
  • Product
  • Sports
  • Title
  • List (ユーザー定義のエンティティがある場合にはこれを使用する必要があります)

デフォルトのタイプは、PersonCompanyProductです。

構成された各エンティティ・タイプは、te.entity-sentiment.field値を接頭辞に持ちエンティティ・タイプ(Personなど)で構成される名前を持つターゲット・フィールドに書き込まれます。

te.entity.field-prefix 名前付きエンティティの最後のフィールド名を判断するために使用される接頭辞名を設定します。フィールド名はユーザー変数であり、デフォルトはEntitiesです。たとえば、この値をEntitiesに設定し、PersonCompanyのエンティティ・タイプを抽出するように構成すると、EntitiesPersonEntitiesCompanyが出力レコードの2つのターゲット・フィールド名になります。

ユーザー定義のエンティティがある場合は、すべてのユーザー定義のエンティティはEntitiesListターゲット・フィールドに置かれます。

te.entity-sentiment.enabled true (デフォルト)に設定すると、エンティティのセンチメント分析が有効になり、エンティティのセンチメント・スコアが計算されます。falseに設定すると、エンティティのセンチメント分析が無効になります。
te.entity-sentiment.cut1.label このcut1ラベルの値を設定します。これは抽出されるネガティブ・エンティティの列名です。フィールド名はユーザー変数であり、デフォルトはEntitiesNegativeです。ネガティブ・エンティティは、ネガティブしきい値よりもスコアが低いエンティティです。
te.entity-sentiment.cut1.value EntitiesNegativeしきい値を設定します。この値はユーザー変数です(-0.1などの値を使用できます)。この値よりも低いエンティティ・センチメントのスコアは、EntitiesNegativeレコード・フィールドに書き込まれます。
te.entity-sentiment.cut2.label このcut2ラベルの値を設定します。これは抽出される中間タイプのエンティティ・センチメントの列名です。中間のエンティティは、ネガティブとポジティブのしきい値の間のセンチメント・スコアを持つエンティティです。フィールド名はユーザー変数であり、デフォルトはEntitiesNeutralです。
te.entity-sentiment.cut2.value EntitiesPositiveしきい値を設定します。この値はユーザー変数です(0.1などの値を使用できます)。この値よりも高いエンティティ・センチメントのスコアは、EntitiesPositiveレコード・フィールドに書き込まれます。
te.entity-sentiment.cut3.label このcut3ラベルの値を設定します。これは抽出されるポジティブ・タイプのエンティティ・センチメントの列名です。ポジティブ・エンティティは、ポジティブしきい値よりもスコアが高いエンティティです。フィールド名はユーザー変数であり、デフォルトはEntitiesPositiveです。
表3 テーマ処理のプロパティ
テーマ・プロパティ 意味
te.theme.enabled true (デフォルト)に設定すると、テーマの抽出が有効になります。falseに設定すると、テーマの抽出が無効になります。
te.theme-type.enabled 出力テーマが標準であるか正規化であるかを指定します。
有効な値は次のとおりです。
  • standard
  • normalized

このプロパティの値としてnormalizedを指定した場合は、normalization.datファイルをディレクトリ%LEXALYTICS_HOME%/data/themesに定義する必要があります。詳細は、「テーマの正規化」を参照してください。ファイルnormalization.datが存在しない場合は、標準テーマが出力されます。

テキスト・エンリッチメント・プロパティ・ファイルにこのプロパティが含まれていない場合は、標準テーマが出力されます。このプロパティの値が正しく指定されていないと、グラフは失敗します。

te.theme.field 出力レコード内の保持されるテーマ名が書き込まれるターゲット・フィールド名を設定します。フィールド名はユーザー変数であり、デフォルトはThemesです。スコアがte.theme.score.thresholdの設定よりも高いテーマが保持され、te.theme.keep-maxカットオフ・リストがあります。
te.theme.score.threshold テーマを保持するスコアのしきい値を設定します。つまり、このしきい値よりもスコアが高いテーマのみが保持されます。値はユーザー変数であり、デフォルトは1.0です。
te.theme.keep-max 最もよいテーマを保持するしきい値を設定します。つまり、te.theme.score.threshold設定よりも上のテーマの中で最も高いスコアを持つテーマだけを保持します。値はユーザー変数であり、デフォルトは100です。
te.theme-sentiment.enabled true (デフォルト)に設定すると、テーマのセンチメント分析が有効になり、テーマのセンチメント・スコアが計算されます。falseに設定すると、テーマのセンチメント分析は無効になります。
te.theme-sentiment.cut1.label このcut1ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはThemesNegativeです。ネガティブ・テーマは、ネガティブしきい値よりもスコアが低いテーマです。
te.theme-sentiment.cut1.value ThemesNegativeしきい値を設定します。この値はユーザー変数です(-0.1などの値を使用できます)。
te.theme-sentiment.cut2.label cut2ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはThemesNeutralです。中間のテーマは、ネガティブとポジティブのしきい値の間のセンチメント・スコアを持つテーマです。
te.theme-sentiment.cut2.value ThemesPositiveしきい値を設定します。この値はユーザー変数です(0.1などの値を使用できます)。ThemesPositiveは、スコアがポジティブしきい値よりも高いテーマです。
te.theme-sentiment.cut3.label このcut3ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはThemesPositiveです。ポジティブ・テーマは、スコアがポジティブしきい値よりも高いテーマです。
te.meta-theme.field 出力レコード内のメタテーマが書き込まれるターゲット・フィールド名を設定します。フィールド名はユーザー変数であり、デフォルトはThemesMetaです。メタテーマは、ドキュメント内のテーマのリストです。
te.meta-theme.frequency.threshold メタテーマを保持するスコアのしきい値を設定します。つまり、このしきい値よりもスコアが高いメタテーマのみが保持されます。値はユーザー変数であり、デフォルトは1.0です。
表4 引用処理のプロパティ
引用のプロパティ 意味
te.quotation.enabled true (デフォルト)に設定すると、引用コンテキストの抽出が有効になります。falseに設定すると、引用コンテキストの抽出が無効になります。
te.quotation.field 出力レコード内の引用コンテンツが書き込まれるターゲット・フィールド名を設定します。フィールド名はユーザー変数であり、デフォルトはQuotesです。
te.quotation.max-length 引用の最大長を文字単位で設定します。デフォルト長は200です。ソース・フィールドの引用がこの設定よりも長い場合は、ソースの引用はターゲット・フィールドに書き込まれません。
表5 ドキュメントのサマリーのプロパティ
ドキュメントのサマリーのプロパティ 意味
te.summary.field 出力ファイル内の入力コンテンツのサマリーが書き込まれる列名を設定します。フィールド名はユーザー変数であり、デフォルトはSummaryです。
te.summary.length ドキュメント・サマリーの長さを文単位で設定します。デフォルト長は3文です。
表6 基本カスタム・プロパティ
基本カスタム・プロパティ 意味
te.salience.userdataDirectory ユーザーが作成したデータ・ディクショナリを含むディレクトリの絶対パスをとります。
te.sentiment.setSentimentDictionary Salience Engineのセンチメント・ディクショナリとして使用されるユーザーが作成したディクショナリへの絶対パスです(つまり、このディクショナリはデフォルトのSalienceセンチメント・ディクショナリをオーバーライドします)。
te.sentiment.addSentimentDictionary 現在のセンチメント分析ディクショナリに加えて使用されるユーザーが作成したディクショナリへの絶対パスをとります。
  • te.sentiment.setSentimentDictionaryが使用されている場合は、追加のディクショナリは、最初のユーザー作成のセンチメント・ディクショナリに追加されます。
  • te.sentiment.setSentimentDictionaryが使用されていない場合は、追加のディクショナリは、デフォルトのSalienceのセンチメント・ディクショナリに追加されます。
表7 問合せトピック処理のプロパティ
テーマ・プロパティ 意味
te.query-topics.enabled true (デフォルト)に設定されている場合は、問合せトピック処理が有効です。falseに設定されている場合、問合せトピック処理は無効です。

問合せトピック機能の詳細は、http://www.lexalytics.com/technical-info/text-analysis-query-topicsを参照してください。

te.query-topics.field 指定した問合せトピックが書き込まれる、出力レコードのターゲット・フィールド名を設定します。フィールド名はユーザー変数であり、デフォルトはQueryTopicsです。
Salience.Options.QueryTopics.setQueryTopicList Text Enrichmentコンポーネントのインスタンスからの出力のタグ付けに使用する必要がある、トピックおよび問合せの定義に使用されるファイルの場所と名前を指定します。
te.query-topics-sentiment.enabled true (デフォルト)に設定すると、問合せトピックのセンチメント分析が有効になり、トピックのセンチメント・スコアが計算されます。falseに設定すると、問合せトピックのセンチメント分析は無効になります。
te.query-topic-sentiment.cut1.label このcut1ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはQueryTopicsNegativeです。ネガティブ問合せトピックは、スコアがネガティブしきい値よりも低い問合せトピックです。
te.query-topic-sentiment.cut1.value QueryTopicsNegativeしきい値を設定します。この値はユーザー変数です(-0.1などの値を使用できます)。
te.query-topic-sentiment.cut2.label cut2ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはQueryTopicsNeutralです。中間の問合せトピックは、ネガティブとポジティブのしきい値の間のセンチメント・スコアを持つ問合せトピックです。
te.query-topic-sentiment.cut2.value QueryTopicsPositiveしきい値を設定します。この値はユーザー変数です(0.1などの値を使用できます)。ポジティブ問合せトピックは、スコアがポジティブしきい値よりも高い問合せトピックです。
te.query-topic-sentiment.cut3.label このcut3ラベルの値を設定します。フィールド名はユーザー変数であり、デフォルトはQueryTopicsPositiveです。ポジティブ問合せトピックは、スコアがポジティブしきい値よりも高いテーマです。

高度なカスタム・オプション

前述のte.*構成プロパティの他に、Salience APIにより提供されるその他のオプションを設定できます。カスタムのオプションは、次のクラスから使用できます。
Salience.Options.Base.xxx
Salience.Options.Collections.xxx
Salience.Options.Concepts.xxx
Salience.Options.Entities.xxx
Salience.Options.QueryTopics.xxx
Salience.Options.Sentiment.xxx
xxxは、構成する特定のメソッドの名前(Salience.Options.Base.setFailLongSentenceなど)です。

これらのクラスの情報は、次のLexalytics Salience 5.1 Javadocで入手できます。

http://dev.lexalytics.com/doc/java-se5.1/

これらのAPI拡張ポイントは、Text Extractionコンポーネントでは解析されません。値はそのままSalience Engineに直接渡されます。

センチメント・アクティベータの相互作用

次の4つの構成アクティベーション・プロパティにより、センチメント分析が制御されます。
  • te.sentiment-analysis.enabled

    グローバル・ベースでセンチメント分析を有効または無効にします。

  • te.document-sentiment.enabled

    ドキュメントのセンチメント分析を有効または無効にします。

  • te.entity-sentiment.enabled
  • エンティティのセンチメント分析を有効または無効にします。

  • te.theme-sentiment.enabled

    テーマのセンチメント分析を有効または無効にします。

te.sentiment-analysis.enabledfalseに設定すると、センチメント分析はグローバルで無効になります。ドキュメント、エンティティおよびテーマのセンチメント・アクティベータは、個別のアクティベータの固有の設定に関係なく、すべてfalseとして処理されます。すべてのタイプのセンチメント分析は実行されません。

te.sentiment-analysis.enabledtrueに設定すると、ドキュメント、エンティティおよびテーマのセンチメント分析を任意の組合せで有効または無効にできます。たとえば、エンティティのセンチメント分析が必要ない場合は、これを無効にして、ドキュメントとテーマのセンチメント分析を有効にできます。

テーマ、エンティティおよび問合せトピック・センチメント・カットのカスタマイズ

テーマ、エンティティおよび問合せトピックのセンチメント分析を使用している場合は、カットの数をカスタマイズできます。前述の「名前付きエンティティのプロパティ」、「テーマ・プロパティ」および「問合せトピック」の表では、ポジティブ、ネガティブ、中間のスコアの3つのカットを使用していることを前提としていますが、カットの数を増減させることができます。

たとえば、名前付きエンティティは、センチメント・スコアに基づいて様々なユーザー構成フィールドに追加できます。次のように、範囲のしきい値とフィールド名を指定して、様々な出力フィールドを構成できます(太字の名前はユーザー指定名)。
te.entity-sentiment.cut1.label = fieldName1
te.entity-sentiment.cut1.value = sentimentScore1
te.entity-sentiment.cut2.label = fieldName2
te.entity-sentiment.cut2.value = sentimentScore2
te.entity-sentiment.cut3.label = fieldName3
te.entity-sentiment.cut3.value = sentimentScore3
...
te.entity-sentiment.cut–1.label = fieldNameN-1
te.entity-sentiment.cut–1.value = sentimentScoreN-1
te.entity-sentiment.cutN.label = fieldNameN

このフィールド・スキーマは、この図を使用してグラフィカルに表現できます。

フィールド・スキーマ・ダイアグラム

上の構成では、名前付きエンティティがセンチメント・スコアに基づいてマップされるN個のフィールドを示します。センチメント・スコアがMIN_FLOATsentimentScore1の間にあるすべてのエンティティは、fieldName1に置かれます。次に、センチメント・スコアがsentimentScore1sentimentScore2の間にあるすべてのエンティティは、fieldName2に置かれます。以下同様です。最後に、センチメント・スコアがsentimentScoreN-1MAX_FLOATの間にあるすべてのエンティティは、fieldNameNに置かれます。

ラベルには、フィールド名で可能な任意の文字列を使用できます(EntitiesBucket1など)。値には、任意の浮動小数点数を使用できます。

注意: Text Enrichmentコンポーネントの前述のプロパティには、デフォルト値がありません。そのため、名前付きラベルと浮動小数点数でこの値をプロパティ・ファイルに追加しないかぎりは、プロパティは使用されません。
次に構成の例を示します。
te.entity-sentiment.cut1.label = EntitiesNegative
te.entity-sentiment.cut1.value = -0.1
te.entity-sentiment.cut2.label = EntitiesNeutral
te.entity-sentiment.cut2.value = 0.1
te.entity-sentiment.cut3.label = EntitiesPositive

テーマのセンチメントおよび問合せトピックのセンチメントを同様に構成します。唯一の違いは、構成で使用されるフィールドの名前です。

サンプルのテキスト・エンリッチメント・プロパティ・ファイル

# Enable Sentiment Analysis on global basis
te.sentiment-analysis.enabled = true

# Enable Document Sentiment
te.document-sentiment.enabled = true
te.document-sentiment.field = DocumentSentiment

# Enable Entity extraction
te.entity.enabled = true
# Entity types to allow and their prefix
te.entity.types = Person, Company, Product, Place
te.entity.field-prefix = Entities
# Entity sentiment goes -0.1 < s < 0.1
te.entity-sentiment.enabled = true
te.entity-sentiment.cut1.label = EntitiesNegative
te.entity-sentiment.cut1.value = -0.1
te.entity-sentiment.cut2.label = EntitiesNeutral
te.entity-sentiment.cut2.value = 0.1
te.entity-sentiment.cut3.label = EntitiesPositive

# Enable Theme extraction
te.theme.enabled = true
te.theme.field = Themes
# Only keep themes with score greater than the threshold
te.theme.score.threshold = 0.0
# Of those that are above the threshold, only keep the best 50
te.theme.keep-max = 50

# Theme sentiment goes -0.1 &lt; s &lt; 0.1
te.theme-sentiment.cut1.label = ThemesNegative
te.theme-sentiment.cut1.value = -0.1
te.theme-sentiment.cut2.label = ThemesNeutral
te.theme-sentiment.cut2.value = 0.1
te.theme-sentiment.cut3.label = ThemesPositive
# Set meta-theme field and only keep those above0.1 
te.meta-theme.field = ThemesMeta
te.meta-theme.frequency.threshold = 0.1

# Enable Quotation extraction
te.quotation.enabled = true
te.quotation.field = Quotes
# Max length of a quotation, in characters
te.quotation.max-length = 400

#Enable query topic processing
te.query-topics.enabled = true 
te.query-topics.field = QueryTopics
#Set the location of the query topics definition file
Salience.Options.QueryTopics.setQueryTopicList = /localdisk/djones/lexalytics/salience-5.0/custom/QueryDefinedTopics.dat
te.query-topics-sentiment.enabled = true
te.query-topics-sentiment.cut1.label = QueryTopicsNegative
te.query-topics-sentiment.cut1.value = -0.1
te.query-topics-sentiment.cut2.label = QueryTopicsEntitiesNeutral
te.query-topics-sentiment.cut2.value = 0.1
te.query-topics-sentiment.cut3.label = QueryTopicsPositive

# Summary is always enabled
te.summary.field = Summary
# Document summary length in sentences
te.summary.length = 2

# Set location of my user directory
te.salience.userdataDirectory=/localdisk/djones/lexalytics/salience-5.0/data/user
# Add my sentiment dictionary to the Salience default
te.sentiment.addSentimentDictionary=/localdisk/djones/lexalytics/salience-5.0/custom/custom.hsd