按主要词分组
Group by main words
考虑以下 TreeSet:
- 蓝色花朵
- 蓝色大车
- 蓝色帽子123
- 红色苹果123
- 红色汽车
- 红色衬衫
- 红色夹克
- 有些话(必须忽略)
- 无用词(必须忽略)
这组有 2 个主要词 blue 和 red 以及不同的关键词。
我需要按这些主要词进行分组,以便获得包含所有可能关键词的列表。类似于:
- 蓝色:花大车帽子123
- red: apple, 123, car, shirt, jacket
我觉得步骤应该是这样的:
- 检测主词
- 列表按字母顺序排列,因此主要单词彼此相邻出现
- 它只能是条目中的第一个词
- 至少由3个字母组成
- 并非每个条目都有主词(条目 some words 和 无用词 应该跳过)
- 按主词分组
- 某种"merging":取所有具有相同主词的条目,并从每个条目中删除它,这样只剩下剩下的关键词
蓝色花朵
蓝色大车
蓝色帽子123
- 本例中关键字:花,大,车,帽子,123还剩
有人可以给我建议如何完成它以及我需要什么吗?
我认为您不需要正则表达式。使用 String.split(" ")
在空白处拆分每个字符串,然后检查第一项以将其与您的 "main" 单词列表进行比较。
TreeSet<String> originalSet = // as per question
List<String> mainWords = Arrays.asList("blue", "red");
Map<String, Set<String>> words = new HashMap<>();
for(String mainWord : mainWords) {
words.put(mainWord, new HashSet<String>());
}
for(String line : originalSet) {
String[] items = line.split(" ");
if(words.keySet().contains(items[0])) {
for(int i = 1 ; i < items.length ; i++) {
words.get(items[0]).add(items[i]);
}
}
}
考虑以下 TreeSet:
- 蓝色花朵
- 蓝色大车
- 蓝色帽子123
- 红色苹果123
- 红色汽车
- 红色衬衫
- 红色夹克
- 有些话(必须忽略)
- 无用词(必须忽略)
这组有 2 个主要词 blue 和 red 以及不同的关键词。
我需要按这些主要词进行分组,以便获得包含所有可能关键词的列表。类似于:
- 蓝色:花大车帽子123
- red: apple, 123, car, shirt, jacket
我觉得步骤应该是这样的:
- 检测主词
- 列表按字母顺序排列,因此主要单词彼此相邻出现
- 它只能是条目中的第一个词
- 至少由3个字母组成
- 并非每个条目都有主词(条目 some words 和 无用词 应该跳过)
- 按主词分组
- 某种"merging":取所有具有相同主词的条目,并从每个条目中删除它,这样只剩下剩下的关键词
蓝色花朵蓝色大车蓝色帽子123- 本例中关键字:花,大,车,帽子,123还剩
有人可以给我建议如何完成它以及我需要什么吗?
我认为您不需要正则表达式。使用 String.split(" ")
在空白处拆分每个字符串,然后检查第一项以将其与您的 "main" 单词列表进行比较。
TreeSet<String> originalSet = // as per question
List<String> mainWords = Arrays.asList("blue", "red");
Map<String, Set<String>> words = new HashMap<>();
for(String mainWord : mainWords) {
words.put(mainWord, new HashSet<String>());
}
for(String line : originalSet) {
String[] items = line.split(" ");
if(words.keySet().contains(items[0])) {
for(int i = 1 ; i < items.length ; i++) {
words.get(items[0]).add(items[i]);
}
}
}