我有一个名为 namePrefixSuffixSet 的集合,其中包含可能的前缀和后缀信息。例如 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
我做错了什么?如果您需要更多信息,请告诉我。
最佳答案
问题是您正在调用列表的 contains 方法,只有当其中一个条目完全匹配时,该方法才会返回 true (因此在您的示例中,如果 namePrefixSuffixList 包含“John Briggs Jr”)。
但是,您可以循环遍历列表并对字符串本身进行包含检查,这对于部分匹配也将返回 true(例如,“John Briggs Jr”.contains(“Jr”) 将返回 true):
boolean prefixSuffixFound = false
for ( String prefixSuffix : namePrefixSuffixList ) {
if(entry.getKey().toLowerCase().contains(prefixSuffix) {
prefixSuffixFound = true;
break;
}
}
关于java - 检查字符串中的单词是否包含在集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904352/