public List <PlagiateDoc> CheckBySingleDoc(string checkDoc, List <string> folders, int threshold, int termCount) { var paths = GetDocsByDirectoty(folders); var docs = GetDocs(paths); var doc = GetDoc(checkDoc); docs.Add(doc); var rows = ClusteringFactory.GetSimilarity(0).MakeSimilarityRows(docs, termCount); var row = rows.FirstOrDefault(x => x.Doc.Equals(doc)); var plagiats = new List <PlagiateDoc>(); if (row != null) { var var11 = row.Similarity.GetEnumerator(); while (var11.MoveNext()) { var entry = var11.Current; if (!entry.Key.Equals(doc) && entry.Value >= threshold) { plagiats.Add(new PlagiateDoc(entry.Key.Path, entry.Value)); } } var11.Dispose(); } return(plagiats); }
public List <ClusterDoc> Check(List <string> paths, int threshold, int termCount, int mode) { var docs = GetDocs(paths); var rows = ClusteringFactory.GetSimilarity(mode).MakeSimilarityRows(docs, termCount); #region debug //if (Boolean.valueOf(ApplicationUtil.getProperty("debug.mode"))) { // try { // FileWriter fw = new FileWriter(new File(MyStem.MYSTEM_DIR + File.separator + "result.txt")); // Iterator var7 = rows.iterator(); // while(var7.hasNext()) { // SimilarityRow row = (SimilarityRow)var7.next(); // String str = row.getDoc().getDocIndex() + ": "; // TreeMap<Doc, Integer> map = new TreeMap(new 1(this)); // map.putAll(row.getSimilarity()); // Entry entry; // for(Iterator var11 = map.entrySet().iterator(); var11.hasNext(); str = str + entry.getValue() + " ") { // entry = (Entry) var11.next(); // } // fw.write(str + System.lineSeparator()); // } // fw.close(); // } catch (IOException var13) { // var13.printStackTrace(); // } //} #endregion var clusters = ClusteringFactory.GetGreedy().Clustering(rows, threshold); var cDocs = new List <ClusterDoc>(); clusters.ForEach(cluster => { if (cluster.Docs.Count > 1) { cDocs.Add(new ClusterDoc(cluster)); } }); return(cDocs); }