我有一个停用词列表,我想从该停用词列表中删除句子中存在的所有停用词。我目前正在使用正则表达式。我必须根据需要将其转换为小写。

但是,问题在于句子中仍然存在停用词。

// List of stopwords
List<String> stopwords = new ArrayList<>();
stopwords.add("is");
stopwords.add("a");
// the stopword list goes on ....

// Sentence
String sentence = "autism    autism is a neurodevelopmental";

// Remove stop words in the sentence
String stopwordsRegex = stopwords.stream().collect(Collectors.joining("|", "\\b(", ")\\b\\s?"));
String removedSW = sentence.toLowerCase().replaceAll(stopwordsRegex, "");

System.out.println(removedSW);

最佳答案

String stopwordsRegex = stopwords.stream()
        .map(String::toLowerCase)
        .collect(Collectors.joining("|", "(?i)\\b(", ")\\b\\s?"));
String removedSW = sentence.replaceAll(stopwordsRegex, "");


一切都很好,只是(?i)将添加一个忽略大小写,因此该句子可以保留其大写形式。它可能是像"I"这样的大写停用词。
如何在流中使单词变成小写(但不是必需的)。

10-07 16:17