我被困在试图进入每个单词出现的句子中。该条目将是句子列表
Question, what kind of wine is best?
White wine.
A question
输出将是
// format would be: word:{count: sentence1, sentence2,...}
a:{1:3}
wine:{2:1,2}
best:{1:1}
is:{1:1}
kind:{1:1}
of:{1:1}
question:{2:1,3}
what:{1:1}
white:{1:2}
这是我到目前为止得到的:
static void getFrequency(List<String> inputLines) {
List<String> list = inputLines.stream()
.map(w -> w.split("[^a-zA-Z0-9]+"))
.flatMap(Arrays::stream)
.map(String::toLowerCase)
.collect(Collectors.toList());
Map<String, Integer> wordCounter = list.stream()
.collect(Collectors.toMap(w -> w, w -> 1, Integer::sum));
}
有了这个,我只得到每个单词在所有句子中出现的次数,但我还需要获得单词出现的句子列表。看起来也许为了获取句子的id,我可以使用IntStream.range
,如下所示:
IntStream.range(1, inputLines.size())
.mapToObj(i -> inputLines.get(i));
但我不确定这是否是最好的方法,我是Java的新手
可以使用分组收集器来计算单词到索引列表映射。下面是一个示例:
private static Map<String, List<Integer>> getFrequency(List<String> inputLines) {
return IntStream.range(0, inputLines.size())
.mapToObj(line -> Arrays.stream(inputLines.get(line)
.split("[^a-zA-Z0-9]+"))
.map(word -> new SimpleEntry<>(word.toLowerCase(), line + 1)))
.flatMap(Function.identity())
.collect(Collectors.groupingBy(Entry::getKey,
Collectors.mapping(Entry::getValue, Collectors.toList())));
}
有了你的测试数据,我得到了
{a=[3], what=[1], white=[2], question=[1, 3], kind=[1],
of=[1], best=[1], is=[1], wine=[1, 2]}
计数很容易从列表大小推断出来,因此不需要额外的类。
问题内容: 我想使用方法来计算一个句子中的单词数。我写了这段代码,但我不太确定为什么它不起作用。无论我写什么,我都只会收到一个单词的数。如果您能告诉我如何修正我写的内容,而不是给我一个完全不同的主意,那就更好了: 问题答案: 您需要阅读整行。代替使用。
问题内容: 我正在编写一个非常基本的Java程序,该程序可以计算句子中每个单词的频率,到目前为止,我设法做到了这一点 我已经提取了每个字符串并将其存储在数组中,现在的问题实际上是如何计算每个“单词”重复出现的次数以及如何显示以使重复的单词不会多次显示,您能帮我这个忙吗?一个? 问题答案: 使用以单词为键的地图并将其计为值,像这样 如果不允许使用java.util,则可以使用一些排序算法对arr进行
以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本): 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾 这些不是完整的说明,只是我有问题的部分。 我知道如何计算课文中的字母数,但我不知道如何计算单词和句子。我试着用谷歌搜索
我想计算一个句子中重复单词或重复单词的总数。这里我可以打印单词,但不能计算这些单词。 我期望输出:- 给定字符串中的重复单词:大黑色 给定字符串中的重复单词总数:2 输出如下: 给定字符串中的重复单词:大黑色 给定字符串中的重复单词总数:10 总计数显示为10,而不是2。
我在大学上Java入门课程。我的作业是写一个程序来显示一个句子中1个字母单词的数量,一个句子中2个字母单词的数量...等等。句子是用户输入的。我应该使用一个循环,但不允许使用数组。 然而,现在只是开始,我只是想找出句子第一个单词的字母数。我得到的结果要么是字母数不正确,要么是字符串索引超出范围。 例如,当我输入“这是一个句子”时,它会给我“字符串索引超出范围:4”对此的任何帮助都将不胜感激。
我一直在试图弄清楚如何计算句子每个单词中的元音和字符。例如 在句子 < code>hello : 5个字符,2个元音 <代码>有:5个字符,2个元音 。我见过完整句子做同样事情的代码。但不是一个字一个字地。 下面是我一直在做的编码 输入将全部。我很难弄清楚这一点。 在运行代码时,我没有得到元音计数。我能把句子分开。但元音计数没有发生。
问题内容: 我有一个句子列表: 我需要形成双字母对,并将它们存储在变量中。问题是当我这样做时,我得到一对句子而不是单词。这是我所做的: 产生 火车站和城堡酒店不能合二为一。我想要的是 第一个句子的最后一个单词不应与第二个句子的第一个单词合并。我应该怎么做才能使其正常工作? 问题答案: 使用列表推导和zip: