我有一个停用词列表,我想从该停用词列表中删除句子中存在的所有停用词。我目前正在使用正则表达式。我必须根据需要将其转换为小写。
但是,问题在于句子中仍然存在停用词。
// 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"
这样的大写停用词。如何在流中使单词变成小写(但不是必需的)。