ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
12cリリース1 (12.1)
B71317-04
  目次へ移動
目次
索引へ移動
索引

前
次
 

ユーザー定義のルールを使用した新しいエンティティ・タイプの作成例

この項の例では、ユーザー定義のルールを使用して、新しいエンティティ・タイプを作成する方法を示します。ルールは、正規表現ベースの構文を使用して定義されます。ルールが抽出ポリシーに追加され、ポリシーが使用されると適用されます。

ルールは、株式指数などの増加を識別します。増加を表現する方法は多数あります。ルールは、次のいずれかの式に一致させる必要があります。

  climbed by 5%
  increased by over 30 percent
  jumped 5.5%

したがって、これらいずれかに一致する正規表現を作成し、新しいタイプのエンティティを作成します。ユーザー定義のエンティティは、xの文字で開始する必要があるため、次のようにエンティティxPositiveGainをコールします。

  ctx_entity.add_extract_rule( 'mypolicy', 1,
    '<rule>'                                                          ||
      '<expression>'                                                  ||
         '((climbed|gained|jumped|increasing|increased|rallied)'      ||
         '( (by|over|nearly|more than))* \d+(\.\d+)?( percent|%))'    ||
      '</expression>'                                                 ||
      '<type refid="1">xPositiveGain</type>'                          ||
    '</rule>');

この例では、refidを使用することに注意してください。これにより、正規表現内のカッコのペアを参照することで、正規表現のどの部分が実際に一致するかがわかります。この場合は、エンティティ式が必要なため、最も外側(および最初に出現する)カッコ(refid=1)になります。

この場合は、ポリシーをCTX_ENTITY.COMPILEでコンパイルする必要があります。

  ctx_entity.compile('mypolicy');

これにより、従来どおりそれを使用できます。

  ctx_entity.extract('mypolicy', mydoc, null, myresults)

この(省略した)出力は次のとおりです。

<entities>
  ...
  <entity id="6" offset="72" length="18" source="UserRule" ruleid="1">
    <text>climbed by over 5%</text>
    <type>xPositiveGain</type>
  </entity>
</entities>

最後に、別のユーザー定義のエンティティを追加しますが、この場合は辞書を使用しています。Dow Jonesの個別平均をタイプxIndexのエンティティとして認識するとします。S&P 500も同様に追加します。これを実行するには、次を含むXMLファイルを作成します。

<dictionary>
  <entities>
    <entity>
      <value>dow jones industrial average</value>
      <type>xIndex</type>
    </entity>
    <entity>
      <value>S&amp;P 500</value>
      <type>xIndex</type>
    </entity>
  </entities>
</dictionary>

このファイルでは大文字/小文字は重要でありませんが、"S&P"の"&"をXMLエンティティ&amp;としてどのように指定する必要があるか注意してください。そうでない場合、XMLは有効になりません。

このXMLファイルは、CTXLOADユーティリティを使用してシステムにロードされます。ファイルがdict.loadと呼ばれる場合は、次のコマンドを使用します。

ctxload -user username/password -extract -name mypolicy -file dict.load

CTX_ENTITY.COMPILEを使用してポリシーをコンパイルする必要があります。