Как стать автором
Обновить
26.91
LumanBox
Автоматизация мышления по методу ZettelKasten

Не лайком единым, или как получить от пользователей максимальный feedback?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров465
Эх Вы лайки мои лайки, а я маленький такой!
Эх Вы лайки мои лайки, а я маленький такой!

Несомненно, появление концепции лайка открыло новую страницу в механизме feedback. Не только для крупных компаний, но и для мелких девчушек, которые гоняются за лайками от своих сверстников. Однако, в какой-то момент времени, лайки стали тормозить развитие механизмов получения того самого feedback. Зачем что-то выдумывать новое, если уже есть лайк, понятный даже макаке-резус и регулярно повсеместно используемый? Концепция лайков противоречит количественной социологии? Да ну ее на фиг, эту социологию! Одним лайком сложно получить качественный feedback? Зато лайк это уже традиция - так еще наши прадеды делали, деды, отцы делали, и мы делать будем, и наши дети и правнуки, ну Вы поняли. В данной статье не только делается попытка поиска следующего за лайком механизма feedback. Но и приводится вместе с исходным кодом действующий компонент на React TypeScript. Если кому интересна тема поиска новых механизмов feedback, добро пожаловать под кат!

Почему лайк противоречит количественной социологии?

Давным-давно (лет 100 уже как) социологи поняли, что человек - хитрый жук. И что большинство людей во многом не радикалы. Т.е. не делят мир на черное и белое. Пресловутое 100 оттенков серого. Это только не очень умные пропагандисты всех мастей призывают к решительной и непримиримой ..., ну Вы поняли. Так вот, если задаете респонденту дуальный вопрос - да или нет, лайк или дизлайк, то обычному человеку сложно определиться. Потому что очень редко у него есть твердый лайк или твердый дизлайк. Скорее всего, у него будет что-то между неопределенностью и лайком, или между неопределенностью и дизлайком. И сейчас такой feedbaсk теряется. А он ох как важен! Да, это не твердая установка/диспозиция. Однако это некая склонность к формированию той или иной позиции. или предрасположенность. И игнорировать ее неправильно. Я Вас уверяю, за эту информацию о предрасположенности маркетологи душу продадут.

Питирим Сорокин - один из отцов-основателей современной социологии
Питирим Сорокин - один из отцов-основателей современной социологии

Также довольно давно, лет 30 как минимум, социологи поняли, что нельзя оценивать что‑либо в одном параметре. К примеру, оценивают удовлетворенность работой общепита. Но тут же возникает вопрос — а человек вообще пользуется общепитом? Может быть у него жена кулинарный волшебник, и для этого респондента вопрос общепита не важен в принципе.

Критерии добротного фидбэка

Потому, если мы хотим получить качественный фидбэк, то:

  • нужно исключить дуальность и дать хотя бы 4 варианта ответа (например: сильно да, в целом да, в целом нет, сильно нет);

  • нужно использовать несколько параметров получения фидбэка, одним «нравится/не нравится» обойтись можно крайне редко.

Пример оценки идеи

Давайте попытаемся применить новые методы получения feedback на примере оценки идеи в публичной базе знаний sferatum.com. Идею, на наш взгляд, можно оценивать как минимум в 3-х мерном пространстве:

  • нравится / не нравится

  • важно / бессмысленно

  • правдиво / ложно

Для каждой меры пользователю будет предложено оценить идею по шкале с 4-мя градациями. Конкретней:

  • Нравится?

    • Идея очень нравится!

    • Идея в целом нравится

    • Идея не нравится

    • Идея совершенно не нравится

  • Значимо?'

    • Идея очень важна, значима!

    • Идея в целом важная

    • Идея не важная

    • Идея совершенно не важна и бессмысленна!

  • Правдиво?'

    • Идея полностью правдива!

    • Идея кажется правдивой

    • Идея похожа на ложь

    • Идея абсолютно ложна!

Отображение блока компонентов на экране.
Отображение блока компонентов на экране.

Комбинаторика в помощь!

Ушлые социологи по своим теориям полагают, что неважно как именно ответил человек: «слегка удовлетворен» или «полностью удовлетворен». Главное — что исследуемая диспозиция смотрит куда надо. Поэтому многие социологи анализируют варианты ответов «слегка удовлетворен» = «полностью удовлетворен». Это неверно математически, но верно с теории диспозиционной концепции личности. Мы будем поступать для первого уровня анализа так же. Если принять, что каждая из мер может принимать значения 0 или 1 (дизлайк/лайк например), то по теории комбинаторики возможны варианты:

  • 0 0 0

  • 0 0 1

  • 0 1 0

  • 0 1 1

  • 1 0 0

  • 1 0 1

  • 1 1 0

  • 1 1 1

Давайте рассмотрим особенность каждого варианта.

0 0 0 - тотальное отрицалово

Такой вариант оценки означает, что идея не нравится, что она неважная и ложная. К примеру так может быть оценена идея о плоской земле. Не думаю, что кого то сильно заинтересует такой класс идей.

0 0 1 - правдивая банальность

Идея не нравится, незначимая, но правдивая. Что-то наподобие новости о Люсе Педалькиной, которая во время концерта упала со сцены и сломала каблук. Не нравится, не значимо, но правда. Такой тип идей тоже мало кому будет интересен.

0 1 0 - опасная ложь

Те самые жутко опасные для слабого умом обывателя фейки
Те самые жутко опасные для слабого умом обывателя фейки

Идеи с пометкой «не нравится», «важно», «ложь» будут привлекать массу внимания. Это и есть те самые зловредные фэйки, с которыми так упорно борются власти всех стран. К примеру, для меня такими идеями будут идеи, пропагандирующие нацизм. На такие идеи будут подписываться большинство пользователей, поскольку именно они находятся на острие общественного внимания.

0 1 1 - неприятная правда

Идеи с пометкой «не нравится», «важно» и «правдиво» тоже будут на пике общественного внимания. И нужно давать пользователям возможность подписываться именно на такие типы идей. Так сказать на злобу дня. Например про то, что очередная собачья стая загрызла ребенка. Мало кому понравится такая новость, но она важна и правдива.

1 0 0 - приятная незначимая ложь

Бабушка выгуливающая домашнего носорога - типовой смешной дипфейк
Бабушка выгуливающая домашнего носорога - типовой смешной дипфейк

Незначимая ложь очень даже может нравиться. К примеру, какой-нибудь смешной дипфейк про популярного певца или поделки нейронки про котиков. Идеи и новости такого типа - исключительно для развлечения. Если хочется отвлечься от дел и немного попрокрастинировать, то добро пожаловать сюда!

1 0 1 - мелочь но приятно

Нравится, неважно, правда — так можно охарактеризовать банальное но приятное событие. К примеру, кто‑то выиграл в кафе бесплатное пирожное. Мелочь как говорится, а приятно. Такие события мало кого могут заинтересовать.

1 1 0 - грезы о несбывшемся

Так бы могла выглядеть экспедиция с Земли на Марс
Так бы могла выглядеть экспедиция с Земли на Марс

Нравится, значимо, ложно. Это из разряда приятных значимых фейков. К примеру, фейк о том, что страны договорились объединить усилия в организации экспедиции на Марс. Большинству понравилось бы. Важно — давно пора человечеству в космос выходить. Но фейк к сожалению. Такая информация будет интересовать многих. Приятные социальные грезы о несбывшемся.

1 1 1 - истинные знания

Та самая ИСТИНА
Та самая ИСТИНА

Нравится, значимо и правдиво — это именно то, что ищет подавляющее большинство людей. Конечно, когда ищет, а не прокрастинирует. Очень важно отсеивать такую информацию от другой понравившейся многим, но бессмысленной (например, приятной но не значимой лжи).

Зачем, зачем все это?

Что такая таксономия информация может дать публичному Интернет-ресурсу? Прежде всего ленту, составленную по рекомендациям ведущих социальных психологов. К примеру, она может быть сформирована:

  • из 15% важной информации (1 1 1);

  • из 15% опасной лжи (0 1 0);

  • из 15% неприятной правды (0 1 1);

  • из 5% приятной не значимой лжи (1 0 0);

  • остальное на иные варианты, включая еще неопределенные.

Пропорции примерные, тут именно что специалисты должны работать исходя из целей формирования позитивного настроения ширнармасс.

Кроме того, пользователь должен иметь возможность сам себе настраивать правила ленты. Например, только позитив. Или только смешные фейки. Или наоборот — только неоцененные чтобы быть первым экспертом (рыцарем свежего).

Также можно будет сделать более элегантные подписки. Поскольку есть градация информации. Например, не просто подписаться на автора, но только на правдивую информацию от автора. А все его смешные дипфейки игнорировать.

И самое главное — это возможность запустить действительно серьезные механизмы рекомендаций. Попадание должно быть здесь реально высоким, а не как в Youtube с его идиотской системой рекомендаций. Составления четкой матмодели в данном случае будет очень интересной задачей. Но которую реально сделать. И получить при этом выдающийся результат!

Исходники

Исходники React TypeScript компонента под катом:
import React, { FC, useState } from "react";
import styles from "./Attitude.module.css";
import { Tooltip } from "react-tooltip";
import { translit } from "../../../utils/utils";
import { ScaleLabels } from "../ScaleLabels";
import { Scale } from "../Scale/Scale";
import {
  IconProps,
  attitudeDisLikeArray,
  attitudeLikeArray,
  attitudeOriginalArray,
  attitudeViewArray,
} from "../attitudeTypes";

export type AttitudeProps = {
  title: string;
  attitudesTotal: number[]; // как в базе оценили все
  attitudeUser?: number; // как в базе оценил текщий пользователь
  setAttitude?: (value: number) => void;
  hintLike: string;
  hintLikeBit: string;
  hintDisLikeBit: string;
  hintDisLike: string;
  LikeNotSelected: React.ComponentType<React.SVGProps<SVGSVGElement>>;
  LikeYesSelected: React.ComponentType<React.SVGProps<SVGSVGElement>>;
  DisLikeNotSelected: React.ComponentType<React.SVGProps<SVGSVGElement>>;
  DisLikeYesSelected: React.ComponentType<React.SVGProps<SVGSVGElement>>;
};

export const Attitude: FC<AttitudeProps> = (props) => {
  const scaleHints: string[] = [
    "Не могу определиться с оценкой",
    props.hintLike,
    props.hintLikeBit,
    props.hintDisLikeBit,
    props.hintDisLike,
  ];
  const readOnly = (props.attitudeUser === undefined);
  const [selectedValue, setSelectedValue] = useState<number | undefined>(
    props.attitudeUser
  ); // хранит выбранное пользователем значение

  const setValueAndPost = (value: number) => {
    setSelectedValue(value);
    if (props.setAttitude) props.setAttitude(value);
  };

  const handleClick = (value: number) => {
    setValueAndPost(value);
  };

  const getHintByValue = (num: number): string => {
    if (attitudeOriginalArray.includes(num)) return scaleHints[num];
    return "";
  };

  const pressIcon = (event: React.MouseEvent<SVGSVGElement>) => {
    event.preventDefault();
    handleClick(Number(event.currentTarget.dataset.id!));
  };

  // LIKE Icon
  let LikeComponent = props.LikeNotSelected;
  if (selectedValue && attitudeLikeArray.includes(selectedValue))
    LikeComponent = props.LikeYesSelected;
  let propsLike: IconProps = {
    "data-tooltip-id": "like" + translit(props.title),
    "data-tooltip-content": props.hintLike,
    "data-id": "1",
    className: styles.icon,
  };
  if (!readOnly)
    propsLike = { ...propsLike, onClick: pressIcon };

  // DISLIKE Icon
  let DisLikeComponent = props.DisLikeNotSelected;
  if (selectedValue && attitudeDisLikeArray.includes(selectedValue))
    DisLikeComponent = props.DisLikeYesSelected;
  let propsDisLike: IconProps = {
    "data-tooltip-id": "dislike" + translit(props.title),
    "data-tooltip-content": props.hintDisLike,
    "data-id": "4",
    className: styles.icon,
  };
  if (!readOnly)
    propsDisLike = { ...propsDisLike, onClick: pressIcon };

  const hintProps = {
    delayShow: 500,
    border: "1px solid black",
    className: styles.hint,
  };

  return (
    <div className={styles.container}>
      <LikeComponent {...propsLike} />
      <Tooltip
        id={"like" + translit(props.title)}
        place="top-start"
        {...hintProps}
      />
      <div className={styles.mainContainer}>
        <h6 className={styles.title}>{props.title}</h6>
        <Scale
          readOnly={readOnly}
          title={props.title}
          handleClick={handleClick}
          getHintByValue={getHintByValue}
          attitudeNow={selectedValue}
        />
        <ScaleLabels
          attitudesTotal={props.attitudesTotal}
          attitudeWas={props.attitudeUser}
          attitudeNow={selectedValue}
        />
      </div>
      {/* выносим на уровень вверх подсказки, чтобы не глючили */}
      {attitudeViewArray.map((value, no) => {
        return (
          <Tooltip
            key={no}
            id={`scale${value}` + translit(props.title)}
            place="top-start"
            {...hintProps}
          />
        );
      })}
      <DisLikeComponent {...propsDisLike} />
      <Tooltip
        id={"dislike" + translit(props.title)}
        place="top"
        {...hintProps}
      />
    </div>
  );
};

Полностью компонент находится на Github. Новый компонент уже используется для оценки идей в проекте: sferatum.com Чтобы помацать, нужно зарегистрироваться в системе через Telegram. Проект sferatum имеет публичный репозиторий на github.
Кому лень регистрироваться, но хочется посмотреть, ниже — видеоролик на Yotube как выглядит работа с компонентом.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как Вы считаете, какие механизмы оценки информации другими пользователями нужны лично Вам?
50% Никакие, я никому не доверяю, все должен оценивать я лично1
0% Обычных лайка и дизлайка вполне достаточно0
50% Обычных лайка и дизлайка явно недостаточно, нужно искать что-то новое1
Проголосовали 2 пользователя. Воздержавшихся нет.
Теги:
Хабы:
+1
Комментарии4

Публикации

Информация

Сайт
www.lumanbox.ru
Дата регистрации
Дата основания
Численность
2–10 человек
Местоположение
Россия
Представитель
Сергей