# 設定とカスタマイズ

このセクションでは、様々なパラメーターを通してAPIの動作を設定・カスタマイズする方法について説明します。

この設定では、以下のことが可能になります。

1. 処理されるコンテンツに関するヒントを提供し、分析結果を向上する。
2. アウトプットをカスタマイズし、表示する特定のセクションを選択する。
3. タグの規格を定義し、使用する規格に準拠する。


### 注意点

- すべての設定はオプションです。
- 初期設定を使用するには、空のオブジェクト`{}`.
- 変更したい設定のみを指定してください。


## コンテンツのヒント

コンテンツのヒントにより、コンテンツの出所や予想されるトピックがわかることで、分析がカスタマイズされます。

### フォーマット

`format` 設定により、フォーマットを認識するロジックを使用することができます。

初期設定：空欄/未定義

#### 対応するフォーマット値

対応する値は以下の通りです。

- `review` - 製品、サービス、基本レビューに使用。難読化された単語を含む可能性のあるセンチメントやプロモーション・スパム（不要な商業勧誘）を優先的に検出する。
- `dialogue` -ダイアログ内のコメント/投稿に使用。悪口やその他の個人攻撃など、文脈特有の合図を検出する。例："snowflake"という単語を含むコメントは、個人攻撃と考えられる場合がある（レビューや名前で使用される場合を除く）。
- `shortpost` - マイクロブロギングの投稿に使用。他のツイートへの返信ではないツイートなど。
- `longform` - 長文の投稿や記事に使用。
- `proofread` - 校正されている投稿に使用。このフォーマットでは、スペルチェックは自動的に無効となる。
- `alias` - オンラインコミュニティでのニックネーム、またはユーザー名を表す。
- `search` - 検索クエリに使用。検索クエリは必ずしも完全で文法的に正しい文章とは限らない。


### スペルチェックと敵対的文章操作

この設定で、スペルチェックの方針を管理します。スペルチェックが適用されるタイミングや方法を管理し、エラーや誤検出を最小限に抑えます。

- `disable_spellcheck`（ブーリアン） - `true`に設定すると、自動スペルチェックを無効にする。初期設定：`false`（スペルチェックが有効）
- `lowercase_spellcheck_only`（ブーリアン） - 小文字の単語のみにスペルチェックを実施する。これにより、固有名詞の誤検出を防ぐことができる。初期設定：`false`（すべての単語に適用）


### パースの設定

この設定により、語彙的なフィルタリングとパースの動作を制御し、より正確なテキスト解析を可能にします。希少な用語のフィルタリング、文脈に特化したパース、言語境界判定のカスタマイズなどを行うことで、言語処理を改善します。

- `min_generic_frequency`（整数） -  頻度に基づいて、希少または難解な用語を除外する。ドメインのない語彙的項目のみに適用する。有効な範囲：'0' から '10' （数値が高いほど希少用語であることを示す）。
- `subscope`（ブーリアン） - ハッシュタグ、URL、難読化されたテキスト（例：*“ihateyou”*）などの特定のコンテキストのサブスコープ解析を有効にする。初期設定：`false`
- `lang_detect_segmentation_regex`（文字列） - 正規表現を使った言語境界判定をカスタマイズする。例：`(([\r\n]|[.!?][ ]))`。この正規表現は改行と文末の句読点を境界として扱う。これは、複数の言語を含むテキストに有用である。
- `disable_phrases`（ブーリアン） -  `true`の場合、構文構造はマッピングされない。**単純なエンティティを検出する必要がある場合、または "bag of words"モードに戻る場合にのみ使用する。**
- `disable_commonsense_cues`（ブーリアン） - `true`の場合、構文構造はマッピングされるが、コモンセンス知識は適用されない。処理のスピードは上がるが、精度は落ちる。文脈に依存する構造（多くが`不正行為`、一部がエンティティ）は検出されない。


### ドメインのカスタマイズ

この設定により、特定のドメインの影響力を強めたり弱めたりすることで、コンテンツの関連性を細かく制御することができます。

- `domain_factors`（構造体の配列） -  この設定は、セッション固有のヒントを提供し、異なるコンテンツドメインの関連性を調整する。これは、ユースケースに基づいて特定のタイプのコンテンツを拡張または縮小するのに役立つ。


#### 配列要素のフォーマット

`{ "domain_id": multiplier }`

`domain_id` (string): 特定の関心ドメインの識別子。

`multiplier` (number): ドメインの関連性を増減させる要因。

例：


```json
"domain_factors": {"12345": 2.3, "2222": 5.0}
```

#### サンプルユースケース

1. 関連するドメインを拡張するには、1より大きな値を設定します。


例：

犯罪やドラッグなどのトピックを強調：

`"domain_factors": {"31058": 5.0, "45220": 5.0, "14112": 5.0, "14509": 3.0, "28309": 5.0, "43220": 5.0, "34581": 5.0}`.

1. 関連のないドメインを縮小するには、1より小さい値を設定します。これは、無関係なトピックからのノイズを減らすのに役立ちます。


### 時間的コンテキスト（保留中）

時間的コンテキスト特徴量は、単語の用法が時間とともにどのように変化してきたかを考慮することで、より正確な言語解釈を保証します。

- `when`（日時文字列、形式 YYYY-MM-DD）- コンテンツの作成日を指定できる。これにより、特定の時期のモデルが存在していなかった時代錯誤の語義をフィルタリングできるようにする。


例：*troll*、*mail*、_post_という単語は、インターネット時代以前には今とは異なる意味を持っていました。これを設定することで、歴史的な文章の場合、当時存在しなかった現代的な語義を無視することができます。

## アウトプットをカスタマイズ

以下の設定により、関連/非関連機能や必要な詳細レベルを指定してアウトプットをカスタマイズすることができます。

すべての設定はオプションです。初期設定が決められています。

### レスポンスのカスタマイズ

レスポンスのカスタマイズにより、JSONレスポンス構造から無関係なセクションを削除したり、通常はレスポンスに含まれないセクションを表示したりすることができます。

以下の設定は、コンテンツのどの側面を報告するかを管理します。

- `abuse`（ブーリアン） - 問題のあるコンテンツの検出されたインスタンスに関する情報をアウトプットする。初期設定：`true`
- `sentiment`（ブーリアン） - センチメントに関連するスニペットをアウトプットする。初期設定：`true`
- `document_sentiment`（ブーリアン） - ドキュメントレベルのセンチメントをアウトプットする。これは、テキスト全体のセンチメント分析を提供する。初期設定：`false`
- `entities`（ブーリアン） - テキスト内で検出された固有名詞のエンティティをアウトプットする。例：人、組織、場所。初期設定：`true`
- `topics`（ブーリアン） - コンテンツ内で特定されたトピックをアウトプットする。初期設定：`true`


注：疑わしい構造がインプットで検出されない場合、そのセクションは省略されます。

#### トピック検出

トピック検出により、コンテンツ内の主要なトピック（主題、テーマ）を特定することができます。

以下の設定により、トピックの抽出と表示方法が管理できます。

- `topic_stats`（ブーリアン） - 有効になっている場合、各トピックのカバレッジ統計を含める。初期設定：`false``true`に設定されている場合は、アウトプットは以下の属性を持つオブジェクトになる。
  - `topic`（文字列）：トピックの名前。
  - `coverage`（浮動小数点数）：トピックに言及するインプットの文章の割合。
- `optimize_topics`（ブーリアン） - 有効になっている場合、特定度の低いトピックが特定度の高いトピックと重複している際に特定度の低いトピックを削除する。例：トピックが`暗号資産`である場合、最適化機能により`金融`が削除される。初期設定：`false`


#### 低レベル機能

この設定は、テキストを語彙チャンク、定義、フレーズ構造に分解することで、テキストの構造と意味に対する深い洞察を提供します。詳細な洞察は、 `abuse`や `topics`など、上位レベルのセクションには反映されていない特定の条件に合致する場合に使用されます。たとえば、すべての名詞句を探す場合や、さまざまなタイプの自動車を指す場合などです。

- `words`（ブーリアン） - 文章ごとに語彙チャンク（または単語）をアウトプットする。初期設定：`false`


スペースを利用しない言語（中国語、日本語、タイ語）では、トークン化の結果が単語とみなされる。

複合語を使う言語（ドイツ語、オランダ語、ノルウェー語、ハンガリー語）では、複合語は個々の語彙要素に分割される。

- `_fetchdefinitions`（ブーリアン) - 入力テキスト内の単語の辞書定義を含める。初期設定：`false`


注：`fetch_definitions`は、`words`が`true`に設定されているときにのみ考慮されます。

- `parses`（ブーリアン）- 文章内のフレーズの階層構造を表すパースフォレストをアウトプットする。初期設定：`false`
- `deterministic`（ブーリアン） - 検出された語義のみをアウトプットするか、形態論的に実現可能な大部分の解釈を含めるかどうかを管理する。
  - `true`（初期設定）の場合：検出された語義のみをアウトプットする。
  - `false`の場合：N-best語義をアウトプットする。


### 説明可能性

この設定では、検出された不正行為、センチメント、およびエンティティに関連するテキストフラグメントと説明を含めるように管理します。特定のテキストセグメントがなぜフラグを受けたのか、あるいは抽出されたのかを明確にするのに役立ちます。

- `snippets`（ブーリアン） - 不正行為、感情、エンティティの各セクションにテキストスニペットを含める。初期設定：`false`
- `explain`（ブーリアン） - 検出された不正行為やセンテンススニペットについて、可能であれば理由や説明を提供する。初期設定：`false`


## 規格とフォーマット

以下のパラメータは、レスポンスオブジェクトで使用される規格とフォーマットを決定します。

### 特徴量規格

- `feature_standard`（文字列） - 文法、スタイル、セマンティクスに関する特徴量のアウトプットの規格を指定する。


対応する値は以下の通りです。

- `ud`- Universal Dependenciesタグ（初期設定）
- `penn` - Penn treebankタグ
- `native` -  Tisaneのネイティブな特徴量コード
- `description` - Tisaneのネイティブな特徴量記述
- `glossing` - 標準的なグロッシングの略語


注：Tisaneのネイティブコード（およびその記述）は、最も多くの特徴量指定を提供し、次いでグロッシングの略語、Universal Dependencies、そしてPenn treebankタグが続きます。

### トピック規格

- `topic_standard`（文字列） - レスポンスオブジェクトのトピックのアウトプットに使用される基準を定義する。


対応する値は以下の通りです。

- `iptc_code` - IPTCトピックタクソノミーコード
- `iptc_description` - IPTCトピックタクソノミーの記述（初期設定）
- `iab_code` - IABトピックタクソノミーコード
- `iab_description` - IABトピックタクソノミーの記述
- `native` - Tisaneのドメインの記述（ファミリーの記述から派生）


### センチメント分析

- `sentiment_analysis_type`（文字列） - 使用するセンチメント分析ストラテジーを決定する。


対応する値は以下の通りです。

* `products_and_services` - センチメント分析の最も一般的なタイプ：製品とサービス
* `entity` - エンティティをターゲットとしたセンチメント分析。


## コンテキストと長期記憶

人間の言語理解は、個々の文章を単独で処理するだけではありません。理解するためには、ジェスチャー、視覚、または事前の言語や文字に基づく知識など、現在の言語やテキスト入力以外の文脈が必要になることが多くあります。

場合によっては、隠語や間接的な言及によって、言葉の本来の意図する意味を隠したり、曖昧にされたりすることもあります。

長期記憶モジュールは、こうしたギャップに対処する方法を提供します。

### テキストだけでは不十分な場合

多くの場合、NLPタスクを実行するためには、テキスト入力以上のものが必要とされます。

- 迫害的行為：民族や宗教団体を指す言葉は、それだけでは攻撃的でないかもしれませんが、軽蔑的なイメージ（例えば、猿や豚など）と組み合わされた場合、不快にさせる意図が明らかになります。
- 翻訳におけるジェンダーの曖昧さ：英語のような言語では、必ずしも人の性別を示しません。それが必要な言語に翻訳する場合（例えば、ロシア語やフランス語など）、さらなるコンテキストが必要になります。
- 詐欺行為：詐欺の場合、メッセージを複数回に分けて送り、少しずつ詳細を聞き出すことがあります。過去のメッセージを参照せずに、一回で犯罪が行われていることを察知するのは困難であり、不可能です。


Tisaneの長期記憶モジュールは、このような問題に対応します。これは、3つのコンポーネント（すべてオプション）で構成されています。

- 再割り当て - カスタム解釈のために意味、属性、上位語を再割り当てします。
- フラグ - テキスト以外の文脈を提供します。
- 先行詞 - 正確な代名詞と参照トラッキングに使用します。


これにより、さらに正確な言語理解が可能になります。このモジュールは、隠れた不正行為、詐欺、文脈のニュアンスを検出するのに役立ちます。

#### 上位語とは？

上位語とは、具体的な単語（下位語と呼ばれる）が該当する大まかなカテゴリーとして機能する単語のことです。例えば*color*は*pink*の上位語であり、*vehicle*は*truck*の上位語です。計算言語学や自然言語処理（NLP）では、上位語はコンテンツ分析のフィルタリングや絞り込みに有用であり、単語を階層的に分類するのに役立ちます。

#### 再割り当て

再割り当ては、文脈に基づいて属性や条件を調整することで、テキストの分析方法を変更します。

例：

- 単語が1人称または2人称の動詞の場合は、特定の性別を指定します。こうすることで、活用形が性別によって異なる可能性のある言語に対して、より正確な翻訳を生成することができます。
- 語群（すべての活用形を含む）の本来の意味を書き換える。  これにより、暗号語や秘密の言語を検出することが可能になります。
- 特徴量や上位語を追加する。たとえば、特定のカテゴリーの成果物を`item_of_interest`としてマークし、これらの成果物をエンティティとして抽出することもできます。


##### 再割り当てのしくみ

再割り当ては、`assign`セクションで、条件（`if`）と属性（`then`）という2つの主要な要素を持つ構造体の配列として定義されます。

- `if` - 以下の組み合わせに基づいて、一致しなければならない条件：
  - `regex` - 正規表現（RE2構文）
  - `family` - ファミリーID
  - `features` - 特徴量のリスト。例：`[{"index":1, "value":"NOUN"}]`.
  - `hypernym` - 上位語のファミリーID
- `then` -  条件のすべての要件が一致する場合に割り当てる属性：
  - `family` - ファミリーID
  - `features` - 特徴量のリスト。例：`[{"index":5, "value":"F"}]`.
  - `hypernym` - 上位語のファミリーID


例：

1. 話し手が女性であると仮定する（1人称の場合、性別を女性にする）：



```json
 `"assign":[{"if":{"features":[{"index":9,"value":"1"}]},"then":{"features":[{"index":5,"value":"F"}]}}]`
```

1. コンテナの記載がある場合に、それは違法な品物を指していると仮定する：



```json
   `"assign":[{"if":{"family":26888},"then":{"hypernym":123078}}]`
```

1. 具体的に名指しされた第三者への攻撃を個人攻撃とみなす（名前を「議論参加者」と再定義する）：



```json
  `"assign":[{"if":{"features":[{"index":14,"value":"NA"},{"index":22,"value":"PERS"}]},"then":{"features":[{"index":33,"value":"DIPA"}],"hypernym":123887}}]`
```

#### フラグ

フラグは、現在のテキスト入力を超える情報を提供したり、特定の方法で分析方法を微調整したりする文脈的ヒントの役割を果たします。それぞれのフラグは、文字列として表示されます。（これらのフラグの中には、特定のテキスト入力によって自動的に切り替えられるものもあります。

`memory`セクションで返されるフラグに加えて、以下のフラグを手動で設定することができます。

| **フラグ** | **意味** |
|  --- | --- |
| `agents_of_bad_things` | 以前は脅威アクターと呼ばれていた。 |
| `aggressive_crime_scan` | 不確実な場合は、犯罪に関連する意図があると想定する。 |
| `bad_animal` | 文脈に、悪い性質を象徴する動物が登場する。例：豚、猿、蛇など。 |
| `bulk_message` | メッセージが大量に一括送信される。 |
| `death_related` | 文脈に死が含まれる。 |
| `game_violence_ok` | ゲームのチャットで、暴力に関連するコールを許可する。 |
| `make_money` | お金を稼ぐことに関する文脈である。 |
| `my_departure` | 著者が去ることについて言及した。 |
| `possible_minor` | 会話の相手方のうちの1人が未成年者である可能性があります。（オンライングルーミングの検出） |
| `paranoid_mode` | 慎重を期しましょう。特に主語が省略される可能性がある場合は注意が必要です。 |
| `sexually_conservative` | あらゆる写真共有やあいまいなやりとりは性的なものとみなされる。 |
| `trusted_party` | 著者が信頼できる人物だと主張している。例：配偶者、親族。 |
| `waste` | 廃棄物（有機/無機）に関するトピックである。 |
| `won_prize` | 賞金や賞品獲得に関して言及または含意している。 |
| `work_from_home` | 在宅勤務について言及する。 |
| `organization` | 組織について言及する。 |
| `role` | 役職や役割について言及する。 |


#### 先行詞

先行詞は共参照を解決する上で有用です。

分析結果に影響を与える可能性のある、代名詞やその他の参照の文脈を提供します。

##### 構成

各先行詞には以下が含まれます。

- `family` - 先行詞のファミリーID
- `features` - 特徴量のリスト。例：`{"index":36, "value":"WFH"}`.


## 信号対雑音ランキング

ある問題や記事に対するコメントの投稿を分析する際には、感情ではなく、最も関連性が高く、理性に基づくものを優先することが有効です。信号対雑音ランキングは、コンテンツの関連性と論理的品質をフィルタリングすることで、これを達成するのに役立ちます。

### しくみ

信号対雑音ランキングの算出方法

1. 設定の`keyword_features`と（オプションの）`stop_hypernyms`を使って記事の見出しを分析します。`relevant`属性を抽出します。
2. `relevant`属性を使用して関連性別に投稿をランク付けします。


#### ステップ1：  関連するコンセプトを特定

関連するコンセプトを判断するために、記事の見出しを分析します。通常はこれで十分です。

この分析には2つの重要な設定が影響します。

- `keyword_features`（文字列値を持つ文字列のオブジェクト） - 単語の特徴を定義する。一致するものが見つかれば、対応するファミリーIDが、関連する可能性のあるファミリーIDのセットに追加されます。
- `stop_hypernyms`（整数の配列） - 抽象的な用語や感情など、不要な概念をフィルタリングする。関連する可能性のあるファミリーIDにこの設定にリストされる上位語がある場合、そのファミリーIDは考慮されません。例：見出しに *Fear and Loathing in Las Vegas*とあった場合、*Las Vegas*のみをピックアップします。この設定はオプションです。


`keyword_features`が使われている場合、レスポンスには、特定されたファミリーIDのある`relevant`属性が含まれます。

ステップ2（「関連性に基づいて投稿をランク付け」）を行う際に、`relevant`配列を設定に含めることをお勧めします。これにより、ファミリーIDに関連するコンセプトに言及した投稿の優先順位付けが容易になり、ランキングが最も関連性の高いコンテンツに基づいて行われるようになります。

#### ステップ2：関連性に基づいて投稿をランク付け

ステップ1の`relevant`属性を使って、投稿やコメントを評価します。

ランキングが上がるのは、以下の場合です。

* 関連するドメイン、上位語、関連するファミリーが投稿に表示されているとき。
* センチメント（肯定的または否定的）が特定の側面と結びついているとき。


ランキングがペナルティを受けるのは、以下の場合です。

- 否定性が特定の側面に結びついていないとき。
- 不正なコンテンツが検出されたとき（特定の犯罪コンテンツを探している場合を除く）。


注：`abuse_not_noise`パラメータ（`true`に設定されている場合）は、不正行為をペナルティの対象にしません。