• PHP и работа с числами высокой точности?

    sirko_el
    @sirko_el
    Float числа в php достаточно неточные, это описанно тут:
    Additionally, rational numbers that are exactly representable as floating point numbers in base 10, like 0.1 or 0.7, do not have an exact representation as floating point numbers in base 2, which is used internally, no matter the size of the mantissa. Hence, they cannot be converted into their internal binary counterparts without a small loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8, since the internal representation will be something like 7.9999999999999991118.... So never trust floating number results to the last digit, and do not compare floating point numbers directly for equality. If higher precision is necessary, the arbitrary precision math functions and gmp functions are available.

    Из линого опыта я бы посоветовал GMP функции.
    Ответ написан
  • Система рейтинга постов

    sirko_el
    @sirko_el
    Я бы посоветовал Вам хранить рейтинг в два этапа. Допустим голосовать можно один раз в день за любое количество постов. Тогда вам нужно две таблички:
    1. Табличка с дневными данными, и соответствующая ей модель(DayVote).
    .----------------------------------------------------------------------------------------
    | ID_ПОЛЬЗОВАТЕЛЯ | ID_ПОСТА | ОЦЕНКА | ПОСМОТРЕЛ_РЕЗУЛЬТАТ |
    -----------------------------------------------------------------------------------------.
    2. Табличка с агрегированными данными и соответствующая ей модель(PostVote):
    .----------------------------
    | ID_ПОСТА | ОЦЕНКА |
    -----------------------------.
    Эта табличка должна заполняться по крону автоматом 1 раз в сутки, собирая и агрегируя данные из DayVote, после чего DayVote нужно очистить.

    Приимущества такого подхода:
    1. Максимальное количество записей в таблицах будет равно количеству постов+ количеству проголосовавших за сегодня. А это гораздо меньше чем общее количество голосов.
    2. Простота схемы данных.
    3. Можно расширить DayVote служебными данными (как-то IP, USER_AGENT и т.п.), и в скрипте, обновляющем PostVote и проводить автоматический анализ и фильтрацию голосов, не боясь за то, что база разрастется.
    Недостатки:
    1. Усложняется процесс выбора количества голосов для поста (его теперь нужно выбирать из двух таблиц).
    2. Нужно логировать запуски крон скрипта, и следить за логами, чтобы агрегирование выполнялось «гладко».
    Ответ написан
    7 комментариев
  • Способы само обучения чат ботов

    sirko_el
    @sirko_el
    Вот неплохо расписанный пример классификации на основе теоремы Байеса. В данном примере письмо классифицируется как «спам» или как «не спам» в Вашем же случае он долженпройтись по возможным ответам и классифицировать ответ — как «подходящий» или «не подходящий».
    Ответ написан
    Комментировать
  • Способы само обучения чат ботов

    sirko_el
    @sirko_el
    Так а чем статистические алгоритмы не подходят?
    Ответ написан
    1 комментарий
  • Странные «подвисания» Apache2?

    sirko_el
    @sirko_el
    Попробуйте утилитку atop, она очень помогает, когда не совсем поняно в чем проблема. Обратите внимание на использование винта и сети в моменты подвисания. Так же очень рекмендую установить Nagios. Он вам много интересного расскажет.
    Ответ написан
    Комментировать
  • Способы само обучения чат ботов

    sirko_el
    @sirko_el
    Попробуйте реализовать алгоритм Байеса или Фишера. Они основаны на ст атистических данных и имеют негромоздкую реализацию. Если же вам хочется чего-то посложнее, но поинтереснее — то обратите внимание на нейронные сети на основе персептрона Розенблатта.
    Ответ написан
    1 комментарий