/** Return the multiplicity for a given string, if it is known, or UNKNOWN otherwise */ public Multiplicity lookupMultiplicity(String text) { return lookup( exactMultiplicity, startsWithMultiplicity, endsWithMultiplicity, text, Multiplicity.UNKNOWN); }
private void saveGender(String np, Gender gender) { final String key = np.replaceAll("!", "").trim(); if (np.startsWith("!")) { endsWithGender.put(reverse(key), gender); } else if (np.endsWith("!")) { startsWithGender.put(key, gender); } else { exactGender.put(key, gender); } }
@Before public void beforeTest() throws Exception { ExternalResourceDescription erd = ExternalResourceFactory.createExternalResourceDescription( "genderMultiplicity", SharedGenderMultiplicityResource.class); sgmr = new SharedGenderMultiplicityResource(); sgmr.initialize(erd.getResourceSpecifier(), Collections.emptyMap()); }
saveGender(np, Gender.M); } else if (f > 2 * Math.max(m, n)) { saveGender(np, Gender.F); } else if (n > 2 * Math.max(m, f)) { saveGender(np, Gender.N); saveMultiplicity(np, Multiplicity.PLURAL); saveMultiplicity(np, Multiplicity.SINGULAR); getMonitor().warn("Unable to parse line {}", s, e);
private <T> T lookup( Map<String, T> exact, Map<String, T> startsWith, Map<String, T> endsWith, String inputText, T defaultValue) { String text = inputText.toLowerCase(); // Try an exact match T t = exact.get(text); if (t != null) { return t; } final List<String> words = WORD_SPLITTER.splitToList(text); // Try start t = lookup(startsWith, words); if (t != null) { return t; } // Try endWith final List<String> reversed = new ArrayList<>(words.size()); for (int i = words.size() - 1; i > 0; i--) { final String word = reverse(words.get(i)); reversed.add(word); } t = lookup(endsWith, reversed); if (t != null) { return t; } return defaultValue; }
getMonitor().warn("Unable to load from gender file", e); return Stream.empty();
@After public void afterTest() throws Exception { sgmr.destroy(); sgmr = null; }
@Test public void testLookupGender() throws Exception { assertEquals(Gender.F, sgmr.lookupGender("Alice")); assertEquals(Gender.M, sgmr.lookupGender("Brian")); assertEquals(Gender.N, sgmr.lookupGender("Car")); assertEquals(Gender.UNKNOWN, sgmr.lookupGender("abc123")); }
@Test public void testLookupMultiplicity() throws Exception { assertEquals(Multiplicity.SINGULAR, sgmr.lookupMultiplicity("chair")); assertEquals(Multiplicity.PLURAL, sgmr.lookupMultiplicity("trucks")); assertEquals(Multiplicity.UNKNOWN, sgmr.lookupMultiplicity("abc123")); } }
@BeforeClass public static void setup() throws Exception { ExternalResourceDescription erd = ExternalResourceFactory.createExternalResourceDescription( "gender", SharedGenderMultiplicityResource.class); genderResource = new SharedGenderMultiplicityResource(); genderResource.initialize(erd.getResourceSpecifier(), Collections.emptyMap()); genderEnhancer = new GenderEnhancer(genderResource); jCas = JCasSingleton.getJCasInstance(); }
saveGender(np, Gender.M); } else if (f > 2 * Math.max(m, n)) { saveGender(np, Gender.F); } else if (n > 2 * Math.max(m, f)) { saveGender(np, Gender.N); saveMultiplicity(np, Multiplicity.PLURAL); saveMultiplicity(np, Multiplicity.SINGULAR); getMonitor().warn("Unable to parse line {}", s, e);
private <T> T lookup( Map<String, T> exact, Map<String, T> startsWith, Map<String, T> endsWith, String inputText, T defaultValue) { String text = inputText.toLowerCase(); // Try an exact match T t = exact.get(text); if (t != null) { return t; } final List<String> words = WORD_SPLITTER.splitToList(text); // Try start t = lookup(startsWith, words); if (t != null) { return t; } // Try endWith final List<String> reversed = new ArrayList<>(words.size()); for (int i = words.size() - 1; i > 0; i--) { final String word = reverse(words.get(i)); reversed.add(word); } t = lookup(endsWith, reversed); if (t != null) { return t; } return defaultValue; }
getMonitor().warn("Unable to load from gender file", e); return Stream.empty();
private void saveMultiplicity(String np, Multiplicity multiplicity) { final String key = np.replaceAll("!", "").trim(); if (np.startsWith("!")) { endsWithMultiplicity.put(reverse(key), multiplicity); } else if (np.endsWith("!")) { startsWithMultiplicity.put(key, multiplicity); } else { exactMultiplicity.put(key, multiplicity); } }
/** Return the multiplicity for a given string, if it is known, or UNKNOWN otherwise */ public Multiplicity lookupMultiplicity(String text) { return lookup( exactMultiplicity, startsWithMultiplicity, endsWithMultiplicity, text, Multiplicity.UNKNOWN); }
private void saveMultiplicity(String np, Multiplicity multiplicity) { final String key = np.replaceAll("!", "").trim(); if (np.startsWith("!")) { endsWithMultiplicity.put(reverse(key), multiplicity); } else if (np.endsWith("!")) { startsWithMultiplicity.put(key, multiplicity); } else { exactMultiplicity.put(key, multiplicity); } }
/** Return the gender for a given string, if it is known, or UNKNOWN otherwise */ public Gender lookupGender(String text) { return lookup(exactGender, startsWithGender, endsWithGender, text, Gender.UNKNOWN); }
private void saveGender(String np, Gender gender) { final String key = np.replaceAll("!", "").trim(); if (np.startsWith("!")) { endsWithGender.put(reverse(key), gender); } else if (np.endsWith("!")) { startsWithGender.put(key, gender); } else { exactGender.put(key, gender); } }
/** Return the gender for a given string, if it is known, or UNKNOWN otherwise */ public Gender lookupGender(String text) { return lookup(exactGender, startsWithGender, endsWithGender, text, Gender.UNKNOWN); }