我有一个名为namePrefixSuffixSet的集合,它有可能的前缀和后缀信息。例如,Jr,先生,夫人,司法部长等。
我从一个句子中提取专有名词并根据这个集合检查它们,以查看专有名词是否包含前缀或后缀。如果确实如此,那么我将这个专有名词归类为一个人。例如John Briggs Jr
我提供了一段关于我如何做这件事的代码。我无法得到一场比赛。
if (namePrefixSuffixList.contains(entry.getKey().toLowerCase())){
Set<String> roleStrings = roleStringsMap.containsKey("PERSON")
? roleStringsMap.get("PERSON") : new HashSet<String>();
roleStrings.add(entry.getKey());
roleStringsMap.put(SemanticRole.PERSON, roleStrings);
continue;
}
在上面的代码中entry.getKey() = John Briggs Jr
我做错了什么?如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
问题是你正在调用列表的contains方法,只有当其中一个条目完全匹配时才返回true(所以在你的例子中,如果namePrefixSuffixList包含“John Briggs Jr”)。
然而,你可以遍历你的List并对字符串进行包含检查,对于部分匹配也会返回true(例如,“John Briggs Jr”.contains(“Jr”)将返回true):
boolean prefixSuffixFound = false
for ( String prefixSuffix : namePrefixSuffixList ) {
if(entry.getKey().toLowerCase().contains(prefixSuffix) {
prefixSuffixFound = true;
break;
}
}