如何比较 java 中多个文档中的多个句子
How to compare many sentence in several documents in java
我在 2 个文档中有几个句子相互比较。我使用公式相似度来比较它们,我使用 List<List<>>
从文档中获取元素句子。但它仅适用于 2 个文档,如果我比较超过三个文档则不起作用,例如我比较 5 个或更多文档。
问题是我如何在几个文件中得到很多句子来比较它们。
这是我的代码。
List<List<Sentence>> collect = Arrays.asList(new File(p).listFiles()).stream()
.map((x) -> configSentenceByLine(x.getAbsolutePath()))
.map((x) -> tokenizingWord(x))
.map((x) -> stemmingWord(x))
.map((x) -> countWordBased(x))
.collect(Collectors.toList());
for (int i = 0; i < collect.get(0).size(); i++) {
int mr = 1;
for (int j = 0; j < collect.get(1).size(); j++) {
double sim = nc.getSimilarity(collect.get(0).get(i).getSentence(), collect.get(0+1).get(j+1).getSentence());
System.out.println("Similarity = " + sim);
mr++;
}
}
抱歉我的英语不好
我想您需要计算所有 N 个文档之间所有行的相似度。如果是这样,您必须比较每对可能的文档。 document-pairs的总数是n个文档的组合,一次取2个,不重复;因此,对于 5 个文档,有 10 个可能的对:
!%7D)
实际对数是:1-2、1-3、1-4、1-5、2-3、2-4、2-5、3-4、3-5 , 4-5
您可能会注意到,您首先将第 1 个文档与其余 4 个文档进行比较,然后将第 2 个文档与其余 3 个文档进行比较,依此类推。
//for each document, except for the last one
for (int k = 0; k < collect.size() - 1; k++) {
//for each line i in the current document k
for (int i = 0; i < collect.get(k).size(); i++) {
//for each document m after k
for (int m = k + 1; m < collect.size(); m++) {
//for each line j in document m
for (int j = 0; j < collect.get(m).size(); j++) {
//do your stuff by comparing
//collect.get(k).get(i).getSentence()
//WITH
//collect.get(m).get(j).getSentence()
}
}
}
}
我在 2 个文档中有几个句子相互比较。我使用公式相似度来比较它们,我使用 List<List<>>
从文档中获取元素句子。但它仅适用于 2 个文档,如果我比较超过三个文档则不起作用,例如我比较 5 个或更多文档。
问题是我如何在几个文件中得到很多句子来比较它们。
这是我的代码。
List<List<Sentence>> collect = Arrays.asList(new File(p).listFiles()).stream()
.map((x) -> configSentenceByLine(x.getAbsolutePath()))
.map((x) -> tokenizingWord(x))
.map((x) -> stemmingWord(x))
.map((x) -> countWordBased(x))
.collect(Collectors.toList());
for (int i = 0; i < collect.get(0).size(); i++) {
int mr = 1;
for (int j = 0; j < collect.get(1).size(); j++) {
double sim = nc.getSimilarity(collect.get(0).get(i).getSentence(), collect.get(0+1).get(j+1).getSentence());
System.out.println("Similarity = " + sim);
mr++;
}
}
抱歉我的英语不好
我想您需要计算所有 N 个文档之间所有行的相似度。如果是这样,您必须比较每对可能的文档。 document-pairs的总数是n个文档的组合,一次取2个,不重复;因此,对于 5 个文档,有 10 个可能的对:
实际对数是:1-2、1-3、1-4、1-5、2-3、2-4、2-5、3-4、3-5 , 4-5
您可能会注意到,您首先将第 1 个文档与其余 4 个文档进行比较,然后将第 2 个文档与其余 3 个文档进行比较,依此类推。
//for each document, except for the last one
for (int k = 0; k < collect.size() - 1; k++) {
//for each line i in the current document k
for (int i = 0; i < collect.get(k).size(); i++) {
//for each document m after k
for (int m = k + 1; m < collect.size(); m++) {
//for each line j in document m
for (int j = 0; j < collect.get(m).size(); j++) {
//do your stuff by comparing
//collect.get(k).get(i).getSentence()
//WITH
//collect.get(m).get(j).getSentence()
}
}
}
}