public string account(list b) { int i = -1; int coincide = 0; // проверяем по всем векторам for (int j = 0; j < vectors.Length; j++) { int max = 0; //каждое ключевое слово для новой статьи ищем в базовых векторах foreach (string k in b.analiz_vector.Keys) { if (vectors[j].values.ContainsKey(k)) max++; } if (max > coincide) { //запоминаем количество совпавших с начальным вектором слов coincide = max; //и категория(тема) вектора для которой было это сравнение i = j; } } //если совпадение ключевых слов было найдено, то выводим результат - тема вектора if (i > -1) return vectors[i].name; else return "Error"; }
public void add(list b) { Dictionary<string, double> add_list = b.analiz_vector; if (values == null) { values = add_list; } else { foreach (string a in add_list.Keys) { if (values.ContainsKey(a)) { values[a] = (values[a] + add_list[a]) / 2; } else { values.Add(a, add_list[a]); } } } }
static void Main(string[] args) { list list1 = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d11.txt"); list list2 = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d21.txt"); list list3 = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d31.txt"); vector v1 = new vector("animalworld"); v1.add(list1); v1.add(list2); v1.add(list3); list list1b = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d12.txt"); list list2a = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d22.txt"); list list3a = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d32.txt"); vector v2 = new vector("football"); v2.add(list1b); v2.add(list2a); v2.add(list3a); list d1 = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d1.txt"); list d2 = new list(@"D:\FIT\Програмування\2\prog\kNN\posts\d2.txt"); analyzer analyzer = new analyzer(new vector[] { v1, v2 }); Console.WriteLine(analyzer.account(d1)); Console.WriteLine(analyzer.account(d2)); Console.ReadLine(); }