당신이 주석 자 'CompanyDetails'에 대해 이야기 할 때 당신이 유형 'CompanyDetails'의 주석을 의미한다고 가정 .
이 작업을 해결할 수있는 많은 방법이 많이 있습니다. 다음은 도우미 규칙을 적용한 한 예입니다.
DECLARE Annotation CompanyDetails (STRING context);
DECLARE Sentence, XYZ;
// just to get a running example with simple sentences
PERIOD #{-> Sentence} PERIOD;
#{-> Sentence} PERIOD;
"XYZ" -> XYZ; // should be done in a dictionary
// the actual rule
STRING s;
Sentence{-> MATCHEDTEXT(s)}->{XYZ{-> CREATE(CompanyDetails, "context" = s)};};
이 예에서는 전체 문장의 문자열을 지형지 물에 저장합니다. 규칙은 모든 문장에서 일치하고 변수의 '에 덮어 쓴 텍스트를 저장합니다.' 그런 다음 문장의 내용을 조사합니다. 인라인 된 규칙은 XYZ에서 일치를 시도하고 유형이 CompanyDetails
인 주석을 만들고 변수의 값을 context
이라는 지형지 물에 할당합니다. 차라리 getCoveredText()로 문자열을 얻을 수 있기 때문에 문자열 대신 주석을 저장하고 싶습니다. 그냥 문장에서 XYZ 전에 토큰을 필요로하는 경우, 당신은 (대신 문자열이 시간의 주석에) 그런 일 할 수있는 :
DECLARE Annotation CompanyDetails (Annotation context);
DECLARE Sentence, XYZ, Context;
// just to get a running example with simple sentences
PERIOD #{-> Sentence} PERIOD;
#{-> Sentence} PERIOD;
"XYZ" -> XYZ;
// the actual rule
Sentence->{ #{-> Context} SPECIAL? @XYZ{-> GATHER(CompanyDetails, "context" = 1)};};
안녕 르노를 지금까지, 나는 몇 가지의 시도 트릭은 작동하지 않았고 다음과 같은 것을 시도하고 있습니다. AnnotatorAtTheBeginingOfParagraph PM? 어떤 +? {-> MARK (회사 세부 정보)} 회사 상세 정보; 그러나 이것이 그렇게 단순하지 않기 때문에 내가 계속하기 전에 더 많은 경험있는 사람들로부터 듣고 싶습니다. – user3471682
답변에 예제를 추가했습니다.이 예제는 문장을 말하며 단락을 가리 킵니다. 그러나 단락이 필요한 경우 쉽게 교환 할 수 있어야합니다. 모범적 인 규칙의 구문에 문제가 있으면 알려주십시오. 오히려 얽힌 요소를 사용하고 너무 많은 의견을 추가하지 않았습니다. –