Як оцінити свою публікацію?

Наближається Новий Рік. У Хабаровську він вже настав, вітаю!

За традицією, потрібно підвести підсумки року, що минає, і я вирішив перечитати свої пости. Перечитати-то перечитав, але як їх оцінити? Карма? Рейтинг? Перегляди? Занадто сухо і серйозно. Папуги? Надто несерйозно. Я вирішив вимірювати в Milfgard-ах.


Методика вимірювання: дістаємо пости Milfgard, і вважаємо частоту використання букв. Найпростіший аналог фоносемантического аналізу.
public static class SymbolsExtractor
{
private static readonly char[] _russianSymbols = "абвгдеежзиклмнопрстуфхцчшщъыьэюя".ToCharArray(); // 32 російських літери
public static char[] RussianSymbols => _russianSymbols.ToArray();

public static Dictionary<char, double> SymbolsFrequences(this string text)
{
var symbolsQty = text.ToCharArray().Count(symbol => _russianSymbols.Contains(symbol)); // Довжина тексту (вважаються лише російські літери)
double symbolPercentage = 1.00/symbolsQty; 

var result = new Dictionary<char, double>();
foreach (char russianSymbol in _russianSymbols)
{
double inclusions = text.ToLower().ToCharArray() 
.Count(textSymbol => textSymbol == russianSymbol) // Вважаємо скільки разів буква зустрічається в тексті
* (symbolPercentage); // Ділимо на довжину тексту
inclusions = Math.Round(inclusions, 3); // Округляємо до часток відсотка
result.Add(russianSymbol, inclusions);
}

return result; // У результаті: символи і їх частоти
} 
}


Я взяв п'ять останніх постів, п'ять перших, і порахував медіани. Результат (Літера-Ранній Милфгард-Пізній Милфгард):
а 0.0864 0.09
б 0.0148 0.0172
0.043 0.0388
р 0.0164 0.0166
д 0.0294 0.0292
...
ъ 0 0
и 0.0228 0.0204
ь 0.0176 0.0186
е 0.0038 0.0042
ю 0.0064 0.0058
я 0.0186 0.018


Як видно, різниця є. Порівнювати, очевидно, треба з останніми постами, я проводжаю 2016 рік. Порівняти треба швидко: через дві години за стіл. Тому середньоквадратичне відхилення від медіани Милфгарда не котить. Замість цього я додатково беру медіану від постів Alizar, і порівнюю свою медіану з Милфгардовой і Ализаровой.

int result = 0;

foreach (var stat in stats)
{
double MilfgardDiff = Math.Abs(stat.NewMilfgard - stat.Oxoron); // Порівнюю медіани: мою і Milfgard
double AlizarDiff = Math.Abs(stat.Alizar - stat.Oxoron); // Порівнюю медіани: мою і Alizar
char res = MilfgardDiff > AlizarDiff ? 'M' 
: Math.Abs(MilfgardDiff - AlizarDiff) < 0.0001 ? 'N' 
: 'A';
if (res == 'M') result++; // Ближче до Milfgard
if (res == 'A') result--; // Ближче до Alizar 
}

Console.WriteLine();
Console.WriteLine(result < 0 ? $"{-result} ALizar" : $"{result} Milfgard"); // Результат. Для мене - 8 Alizar


Як бачимо, отриманий метод оцінки простий і універсальний. Область його застосування надзвичайно широка: можна порівнювати свою схожість з джавистами і шарпистами, рубистами і пхпешниками, эфШарпистами і хаскелистами. Також можна визначити, який фреймворк JS краще всього підходить вашої особистості. Але який би результат не вийшов — прагнете до нових вершин, колеги, щоб інші люди порівнювали себе з вами. Зі святом!

P. S. Milfgard і Alizar обрані виключно для демонстрації роботи методу, як одні з найбільш примітних авторів хабры.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.