1

P タグ (Html Annotator から) を PASSAGE として使用する場合、注釈からのマークアップを無視したい。

脚本:

//-------------------------------------------------------------------
// SPECIAL SQUARE HYPHEN PARENTHESIS
//-------------------------------------------------------------------
DECLARE LParen, RParen;
SPECIAL{REGEXP("[(]") -> MARK(LParen)};
SPECIAL{REGEXP("[)]") -> MARK(RParen)};

DECLARE LSQParen, RSQParen;
SPECIAL{REGEXP("[\\[]") -> MARK(LSQParen)};
SPECIAL{REGEXP("[\\]]") -> MARK(RSQParen)};

DECLARE LANGLEBRACKET,RANGLEBRACKET;
SPECIAL{REGEXP("<")->MARK(LANGLEBRACKET)};
AMP{REGEXP("&lt;")->MARK(LANGLEBRACKET)};
SPECIAL{REGEXP(">")->MARK(RANGLEBRACKET)};
AMP{REGEXP("&gt;")->MARK(RANGLEBRACKET)};

DECLARE LBracket,RBracket;

(LParen|LSQParen|LANGLEBRACKET){->MARK(LBracket)};
(RParen|RSQParen|RANGLEBRACKET){->MARK(RBracket)};


DECLARE PASSAGE,TESTPASSAGE;

       "<a name=\"para(.+?)\">(.*?)</a>"->2=PASSAGE;

 RETAINTYPE(WS); // or RETAINTYPE(SPACE, BREAK,...);
 PASSAGE{-> TRIM(WS)};
 RETAINTYPE;

  PASSAGE{->MARK(TESTPASSAGE)};



DECLARE TagContent,PassageFirstToken,InitialTag;
LBracket ANY+? RBracket{-PARTOF(TagContent)->MARK(TagContent,1,3)}; 


 BLOCK(foreach)PASSAGE{}
{
Document{->MARKFIRST(PassageFirstToken)};
}   
TagContent{CONTAINS(PassageFirstToken),-PARTOF(InitialTag)->MARK(InitialTag)};


BLOCK(foreach)PASSAGE{}
{
InitialTag  ANY+{->SHIFT(PASSAGE,2,2)};

}

サンプル入力:

<p class="Normal"><a name="para1"><h1><b>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. </b></a></p>

<p class="Normal"><a name="para2"><aus>On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document.</a></p>

<p class="Normal"><a name="para3">On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document.</a></p>

<p class="Normal"><a name="para4">On the Insert tab, the galleries include items that are designed to coordinate with the overall look of your document. </a></p>

<p class="Normal"><a name="para5">On the Insert tab, the <span>galleries</span> include items that are designed to coordinate with the overall look of your document.</a></p>

PASSAGE(5) と TESTPASSAGE(2)。なぜ TESTPASSAGE が減少したのですか? また、InitialTag はタグ付けされていません。

ここに画像の説明を入力 出力注釈画像を添付しました

4

2 に答える 2

2

与えられた例を再現すると、5 つの PASSAGE アノテーションと 3 つの TESTPASSAGE アノテーション (最後の 3 つの PASSAGE アノテーション) が得られます。他の 2 つの PASSAGE アノテーションは、デフォルトでは表示されない MARKUP アノテーションで始まり、完全なアノテーションを非表示にするため、TESTPASSAGE でアノテーション付けされていません。この問題を回避するために、MARKUP を可視化するか、PASSAGE アノテーションからマークアップを削除することができます (これが実際の主な問題ですか?)。TRIM アクションのルールを拡張するだけです。

RETAINTYPE(WS, MARKUP);
PASSAGE{-> TRIM(WS, MARKUP)};
RETAINTYPE;

この例には LBracket アノテーションがないため、TagContent アノテーションがないため、InitialTag アノテーションはありません。

ところで、いくつかのルールを書き直すことができます:

PASSAGE{->MARKFIRST(PassageFirstToken)};

(LBracket # RBracket){-PARTOF(TagContent)-> TagContent}; 

免責事項: 私は UIMA Ruta の開発者です

于 2016-09-05T08:47:24.433 に答える
2
  //-------------------------------------------------------------------
// SPECIAL SQUARE HYPHEN PARENTHESIS
//-------------------------------------------------------------------
DECLARE LParen, RParen;
SPECIAL{REGEXP("[(]") -> MARK(LParen)};
SPECIAL{REGEXP("[)]") -> MARK(RParen)};

DECLARE LSQParen, RSQParen;
SPECIAL{REGEXP("[\\[]") -> MARK(LSQParen)};
SPECIAL{REGEXP("[\\]]") -> MARK(RSQParen)};

DECLARE LANGLEBRACKET,RANGLEBRACKET;
SPECIAL{REGEXP("<")->MARK(LANGLEBRACKET)};
AMP{REGEXP("&lt;")->MARK(LANGLEBRACKET)};
SPECIAL{REGEXP(">")->MARK(RANGLEBRACKET)};
AMP{REGEXP("&gt;")->MARK(RANGLEBRACKET)};

DECLARE LBracket,RBracket;

(LParen|LSQParen|LANGLEBRACKET){->MARK(LBracket)};
(RParen|RSQParen|RANGLEBRACKET){->MARK(RBracket)};


DECLARE PASSAGE,TESTPASSAGE;

       "<a name=\"para(.+?)\">(.*?)</a>"->2=PASSAGE;

 RETAINTYPE(WS); // or RETAINTYPE(SPACE, BREAK,...);
 PASSAGE{-> TRIM(WS)};
 RETAINTYPE;

  PASSAGE{->MARK(TESTPASSAGE)};



DECLARE TagContent,PassageFirstToken,InitialTag;
LBracket ANY+? RBracket{-PARTOF(TagContent)->MARK(TagContent,1,3)}; 


 BLOCK(foreach)PASSAGE{}
{
Document{->MARKFIRST(PassageFirstToken)};
}   
TagContent{CONTAINS(PassageFirstToken),-PARTOF(InitialTag)->MARK(InitialTag)};


BLOCK(foreach)PASSAGE{}
{
InitialTag  ANY+{->SHIFT(PASSAGE,2,2)};

}
于 2016-08-29T12:13:04.417 に答える