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

时间:2017-03-20 13:03:44

标签: java nlp

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

我做错了什么?如果您需要更多信息,请与我们联系。

1 个答案:

答案 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;
     }
}