MatchRule14.java
01 package gate.creole.orthomatcher;
02 
03 
04 /**
05  * RULE #13: do multi-word names match except for
06  * one token e.g.
07  * "Second Force Recon Company" == "Force Recon Company"
08  * Note that this rule has NOT been used in LaSIE's 1.5
09  * namematcher
10  * Restrictions: - remove cdg first
11  *               - shortest name should be 2 words or more
12  *               - if N is the number of tokens of the longest
13  *                 name, then N-1 tokens should be matched
14  * Condition(s): case-sensitive match
15  * Applied to: organisation or person annotations only
16  */
17 public class MatchRule14 implements OrthoMatcherRule {
18 
19   OrthoMatcher orthomatcher;
20   
21   public MatchRule14(OrthoMatcher orthmatcher){
22       this.orthomatcher=orthmatcher;
23   }
24   
25   @Override
26   public boolean value(String s1, String s2) {
27       
28       boolean result = false
29     
30       int matched_tokens = 0, mismatches = 0;
31 
32       // if names < 2 words then rule is invalid
33       if (orthomatcher.tokensLongAnnot.size() || orthomatcher.tokensShortAnnot.size() 2
34         result =  false;
35       else {
36           // now do the matching
37           for (int i=0,j= 0; i < orthomatcher.tokensShortAnnot.size() && j < orthomatcher.tokensLongAnnot.size() && mismatches < 2; i++) {
38     
39     //      Out.prln("i = " + i);
40     //      Out.prln("j = " + j);
41             if orthomatcher.tokensLongAnnot.get(j).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME).equals(
42                     orthomatcher.tokensShortAnnot.get(i).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME)) ) {
43               matched_tokens++;
44               j++;
45             else
46               mismatches++;
47           // for
48     
49           if (matched_tokens >= orthomatcher.tokensLongAnnot.size()-1)
50             result = true;
51       }
52 
53       if (resultOrthoMatcherHelper.usedRule(14);
54       return result;
55   }
56   
57   @Override
58   public String getId(){
59     return "MatchRule14";
60   }
61 }