java - 检查字符串中的单词是否包含在集合中

标签 java nlp

我有一个名为 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/

相关文章:

nlp - stanford-nlp token 列表中的 NER

java - 有没有与 Cloud/SOAstarting 相关的开源项目?

java - 如何在 Java 中打印导致异常的参数值?

java.sql.SQLException : Connections could not be acquired from the underlying database 异常

java - Set<Future<Object>> 中满足谓词的第一个对象

nlp - 使用什么方法来识别文本所用的语言?

python - 使用 scipy 的低阶近似

database - NLP 增强库

java - 在java中传递通配符泛型数据类型的泛型

nlp - 从哪里得到新闻摘要语料库?