자기

2017-04-13 5 views
2
의 자기 파트

나는 사전을 기반으로 사람 이름을 감지하기 위해 노력하고있어 무시 :자기

입력 시작

사전 시작

David Alberto 

David 

Alberto 

사전 종료

David Alberto 

입력 끝

나는하지 데이비드 또는 알베르토 사람 이름으로 데이비드 알베르토을 anotate 싶다. 아래 규칙을 사용하고 있습니다.

WORDLIST FirstNameList = 'en/ruta/dictionaries/FirstNames.txt'; 
DocumentAnnotation{-> MARKFAST(FirstNames, FirstNameList,true)}; 
FirstNames{PARTOF(FirstNames)->UNMARK(FirstNames)}; 

그러나 데이비드 알베르토데이비드 알베르토의 일부이기 때문에 그것은 또한 해제를 얻을 수 있습니다. 이 사건을 어떻게 처리 할 수 ​​있는지

답변

1

조건 (PARTOFNEQ)은 일치하는 주석을 고려하며 다른 주석이있는 경우에만 충족됩니다.

FirstNames{PARTOFNEQ(FirstNames)->UNMARK(FirstNames)}; 

그러나,이 조건은, 현재 구현 (< = 2.6.0)에서 최저의 하나이다.

FirstNames->{@FirstNames{-> UNMARK(FirstNames)} ANY; ANY @FirstNames{-> UNMARK(FirstNames)};}; 

면책 조항 : : 난 보통 같은 것을 사용 나는 또한 이름으로 LIPI 미탈을 감지 할이와 함께 UIMA 루타

+0

의 개발자입니다. 사전에는 Lipi Mittal이 있습니다. 입력시 Lipi Mittal과 LipiMittal이 있습니다. LipiMittal에 FirstName으로 주석을 추가합니다. 공간 유지 논리를 사용하여이 문제를 해결했습니다. 그러나 두 규칙 모두 한 번에 작동하지 않습니다. –

+0

공백에 민감한 사전 조회는 매우 귀찮습니다. 예를 들어 하나의 공백 만 허용 되었습니까? 어떤 규칙이 작동하지 않는가? 적절한 필터링 설정으로'FirstNames {CONTAINS (CW, 2,100), -CONTAINS (SPACE) -> UNMARK (FirstNames)};와 같은 somehting으로 어노테이션을 후 처리 할 수있다. –