Практика «Частотность N-грамм»
В проверяющей программе возникает проблема с памятью: MemoryLimit. Подскажите что нужно переделать в коде, чтобы решить эту проблему? Пример моего кода:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TextAnalysis
{
static class FrequencyAnalysisTask
{
public static Dictionary<string, Dictionary<string,int>> GetBigramms(List<List<string>>list, Dictionary<string, Dictionary<string, int>> dictionaryNotSort)
{
foreach (var e in list)
for (var i = 0; i < e.Count; i++)
{
if (i == e.Count - 1)
continue;
else
{
DictionaryCheckAndAdd(dictionaryNotSort, e[i], e[i + 1]);
}
if (e.Count >= 3)
{
if (i == e.Count - 2)
continue;
else
{
DictionaryCheckAndAdd(dictionaryNotSort, e[i] + " " + e[i + 1], e[i + 2]);
}
}
}
return dictionaryNotSort;
}
public static Dictionary<string,Dictionary<string,int>> DictionaryCheckAndAdd(Dictionary<string, Dictionary<string,int>> dictionary, string key, string value)
{
if (dictionary.ContainsKey(key))
{
foreach (Dictionary<string, int> e in dictionary.Values)
{
if (e.ContainsKey(value))
e[value]++;
else
e.Add(value, 1);
}
}
else
{
var keyValues = new Dictionary<string, int>();
keyValues.Add(value, 1);
dictionary.Add(key, keyValues);
}
return dictionary;
}
public static Dictionary<string, string> GetSortDictionaryMain(Dictionary<string, Dictionary<string, int>> dictionary, Dictionary<string,string> result)
{
foreach (var e in dictionary.Keys)
{
if (dictionary[e].Count == 1)
{
foreach (var r in dictionary[e].Keys)
{
result.Add(e, r);
break;
}
}
else
result.Add(e, GetSortDictionary(dictionary[e]));
}
return result;
}
public static string GetSortDictionary(Dictionary<string, int> keyValues)
{
var maxValue = 0;
var endWord = "";
foreach (var pair in keyValues)
{
if (pair.Value > maxValue)
{
maxValue = pair.Value;
endWord = pair.Key;
}
else
{
if (pair.Value == maxValue)
if (string.CompareOrdinal(pair.Key, endWord) < 0)
endWord = pair.Key;
}
}
return endWord;
}
public static Dictionary<string, string> GetMostFrequentNextWords(List<List<string>> text)
{
var dictionaryNotSort = new Dictionary<string, Dictionary<string,int>>();
var result = new Dictionary<string, string>();
return GetSortDictionaryMain(GetBigramms(text, dictionaryNotSort), result);
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Получаю из базы данных строку valuesОна представляет собой числа через запятую
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Возможно удалить систему управления версиями из решения в Visual Studio 2019 с помощью интерфейса?