Как оценить свою публикацию?

    Близится Новый Год. В Хабаровске он уже наступил, поздравляю!

    По традиции, нужно подвести итоги уходящего года, и я решил перечитать свои посты. Перечитать-то перечитал, но как их оценить? Карма? Рейтинг? Просмотры? Слишком сухо и серьезно. Попугаи? Слишком несерьезно. Я решил измерять в Milfgard-ах.


    Методика измерения: достаем посты Milfgard, и считаем частоту использования букв. Самый простой аналог фоносемантического анализа.
    public static class SymbolsExtractor
        {
            private static readonly char[] _russianSymbols = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя".ToCharArray(); // 33 русских буквы
            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 выбраны исключительно для демонстрации работы метода, как одни из самых примечательных авторов хабры.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 15
    • +11
      Все справляют, но, как же не зайти на Хабру… С новым годом, ребят
      • 0
        Нужно сравнить с частотным словарем русского языка.
        • 0
          Увы, у меня, Alizar и Milfgard разные темы. Следовательно, и словари будут разными.
          Плюс, я не спец в лингвистике, и далеко не уверен, что смогу составить словарь для одного автора за вечер, особенно для русского языка. По крайней мере, быстро нагуглить нужную библиотеку не получилось.
      • +2

        Считаю, что выбранный фреймворк уже не актуален, есть новейшие разработки, где всё это делается намного удобнее!

        • 0
          А можно подробнее? Вы про частотный анализ, или свой JS фреймворк?
        • +9
          Что в вы там курите? :)
          • +3
            Частотность букв? Вот с кем надо сравнивать — Tios, пост про иероглифы.
            А у vaily они прямо юникодом идут.
            • +2
              private static readonly char[] _russianSymbols = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя".ToCharArray(); // 32 русских буквы

              А куда букву й подевали? Или это уже не буква?

              • 0
                Это просто бага. Кстати, серьезная, добавление Й в выборку изменило результат с 8 до 13. Изменение результата на 2 понятно («И» и «Й»), а вот еще 3 буквы с изменившейся статистикой настораживают.
                • 0
                  А всё-таки 'й' добавите, хотя бы русского языка ради?
              • +3
                Сперва прочитал milf guard… В этом году обещаю стать чуточку менее похлым.)
                • +3
                  … и чуточку более дошлым.
                  • +1
                    На НГ подарил себе клавиатуру с cherry black, вместо мембранной. Ещё не привык, имею право опечатываться.) И вообще, первое января.
                • +2
                  Прочитал как Хабраровск… Пора таки свой город )

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.