Два года Яндекс.Дзен учился решать задачу персональных рекомендаций контента. Теперь Дзен — не только агрегатор статей и видео со сторонних ресурсов интернета, но и контент-площадка. Летом 2017 года была запущена платформа издателей, на которой каждый может создавать публикации, а при достижении 7000 досмотров — зарабатывать на этом деньги. Про систему монетизации и другие особенности платформы вы можете прочитать в журнале Дзена.

Статьи и видео — традиционные виды контента. Чтобы привлечь авторов на платформу и дать им новые инструменты увеличения аудитории, Дзен решил выйти за рамки привычных форматов. Одним из новых форматов стал нарратив. Это набор карточек, объединенных общей тематикой. Пользователи интернета все меньше читают, но все так же хотят получать интересные истории (поэтому они, например, смотрят сериалы, короткие видео и живые трансляции). Мы создали формат, который помогает авторам рассказывать последовательные короткие истории и развлекать читателей.


Нарративы издателей и авторов

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

В основном формат ориентирован на мобильные телефоны, так как зачастую люди потребляют информационный и развлекательный контент именно с мобильных устройств. Мы добавили ограничения: формат должен должен быть емким, но кратким, поэтому количество карточек нарратива не бесконечно. Каждая карточка содержит максимум одно видео и одну ссылку, это позволяет вести повествование последовательно, не перегружая внимание читателя. Заинтересованный человек может перейти из нарратива на сайт автора, прочитать расширенную версию материала, однако содержания нарратива должно быть достаточно, чтобы разобраться в теме.


Пример: нарратив о нарративе

Самый близкий аналог нарративов, stories в Instagram, ограничены по времени и показываются только 24 часа. Это влияет на содержание: материалы могут быть не связаны общей темой, малоинформативны, ориентированы на социальное взаимодействие и получение реакции от знакомых людей. Несмотря на то, что нам нравятся stories, такой формат не подходит Дзену. У нас публикации показываются намного дольше и рекомендуются аудитории, часто не принадлежащей к одной социальной или географической группе. Мы строили формат, который объединяет в себе легкость микроформата с вовлеченностью и сюжетностью лонгридов.

Чтобы дать пользователям возможность создавать разнообразные и уникальные нарративы, нам нужно было предоставить им специальный редактор с инструментами компоновки и оформления контента — вроде программ для создания презентаций. Редактор должен был подсказывать авторам, как сделать изложение визуально привлекательным, сообщать об ограничениях формата, быть простым в использовании. Поэтому мы добавили режим просмотра, где нарратив представлен таким, каким его увидят читатели. Мы не стали ограничивать авторов шаблонами расположения элементов: все элементы на карточке нарратива могут быть расположены произвольно. Кроме того, мы разработали систему слоев, которая позволяет управлять наложением элементов друг на друга.


Редактор нарративов

В процессе создания редактора мы столкнулись с рядом интересных технических задач. Эта статья — о том, как мы их решали.

Используемый стек


Технологическая база состояла из React (для редактора), preact (для показа), Redux, Draft.js (для текстовых блоков) и flowtype. Состояние хранится в нормализованном виде (см. normalizr), что позволило быстро производить самую частую операцию — обновление свойств элементов на карточке. Для других действий (таких как перестановка карточек, добавление и удаление блоков и пр.) нормализованное состояние также показывает более высокую производительность, чем обычное хранение данных в виде дерева объектов.

Делаем карточку и блоки на карточке адаптивными


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

Следовательно:

  • Карточка сохраняет заданное соотношение сторон (мы выбрали 44:75) при любом размере экрана.
  • Текст на карточке тоже сохраняет одинаковую относительную занимаемую площадь при любом размере карточки. То есть размер шрифта должен быть пропорционален размеру карточки.
  • Блоки сохраняют относительные размеры и расположение при любом размере карточки.

Рассмотрим способы реализации перечисленных требований.

Как сохранить соотношение сторон карточки?


Сначала захотелось воспользоваться чистым CSS. И действительно, в сети описывается несколько способов, которые позволяют это сделать:

  • Задание размеров через padding с использованием свойства padding, заданного в процентах, поскольку берется относительное значение ширины блока. Этот способ не подошел, так как не позволяет «вписывать» карточку в экран. Другими словами, если высота карточки превысит высоту экрана, карточка не будет уменьшаться по высоте, сохраняя свои пропорции.
  • Задание размеров за счет комбинации height, width, max-height и max-width, заданных в vh и vw, позволяет добиться желаемого эффекта. Однако способ ограничен размерами экрана. Иначе говоря, при встраивании карточек в верстку, где карточка займет не целый экран (например, в редакторе), соотношение сторон не будет сохраняться.

Таким образом, от решения на чистом CSS пришлось отказаться, и в итоге используется решение на JS, которое оказалось куда компактнее и понятнее решения на CSS:

// @flow
type Size = { width: number, height: number };

function getFittedSlideSize(container: Size, target: Size): Size {
    const targetAspectRatio = target.width / target.height;
    const containerAspectRatio = container.width / container.height;
    // if aspect ratio of target is "wider" then target's aspect ratio
    const fit = targetAspectRatio > containerAspectRatio
        ? 'width' // fit by width, so target's width = container's width
        : 'height'; // fit by height, so target's height = container's height

    return {
        width: fit === 'width'
            ? containerWidth
            : Math.round(containerHeight * ( target.width / target.height)),
        height: fit === 'height'
            ? containerHeight
            : Math.round(containerWidth * (target.height / target.width)),
    };
}

Ощутимого минуса в скорости отрисовки оно не дает, есть потенциал к ускорению. Например, можно вынести выполнение выравнивания из основного бандла JS и выполнять его сразу после HTML-кода карточек. Тогда карточки будут сразу отображаться в правильных размерах.


Пропорции карточки сохраняются на любом экране

Как сохранить относительные размеры текстовых элементов?


Для пропорционального изменения размера текстовых элементов внутри слайда мы сделали следующее:

  1. Все размеры в текстовых элементах заданы в em.
  2. Для слайда размер шрифта задается в px и вычисляется в пропорции, полученной из следующих положений:

    • Пусть базовая ширина слайда (BASE_WIDTH) равняется 320px.
    • Пусть при базовой ширине слайда базовый размер шрифта (BASE_FONT_SIZE) равен 16px.
    • Тогда при изменении размера слайда новый размер шрифта рассчитывается так:

      const relativeFontSize = (BASE_FONT_SIZE * slideSize.width) / BASE_WIDTH;

Тем самым задание размера шрифта в em приводит к автоматическому перерасчету размера шрифта элементов.

Как заставить объекты на карточке сохранять расположение и относительные размеры?


Для сохранения композиции лучше всего подходит введение относительной системы координат. Благодаря веб-платформе такая система уже есть — это задание размеров и расположения блоков в процентах! Действительно, каким бы ни был размер карточки в пикселях, размеры и расположение объектов, заданные в процентах, позволяют им пропорционально меняться.

Получается, мы ввели новую систему координат («карточную») в рамках каждой карточки с видимой областью от 0 до 100% по каждой из осей. Теперь надо научиться пересчитывать все пиксельные размеры в процентные. Это понадобится, когда мы будем:

  • Считать размеры объектов, исходя из знаний о том, каковы размеры по одной оси, и исходных размеров. Например, если мы вставляем изображение на слайд, задаем 90-процентную ширину по умолчанию и должны посчитать высоту в процентах.
  • Перемещать объекты по карточке.
  • Менять их размеры.

Инициализация объектов с неизвестными размерами


Теперь, имея «карточную» систему координат, можно размещать блоки на карточке, не переживая, что их взаимное расположение исказится при изменении размера карточки.

Каждый блок имеет свойство geometry, которое описывает размеры и расположение блока:

{
    geometry: {
        x: number,
        y: number,
        width: number,
        height?: number
    }
}

Если добавить блок с фиксированным соотношением сторон (например, картинку или видео), возникает проблема перерасчета размеров из пиксельной системы координат в «карточную».

Например, при добавлении картинки на слайд по умолчанию задана 90-процентная ширина элемента в «карточной» системе координат. Зная оригинальные размеры картинки (Image.naturalWidth и Image.naturalHeight), размеры «карточного пикселя» и ширину картинки в новых координатах, необходимо посчитать высоту (тоже в новых координатах). Прибегнув к знаниям высшей арифметики, мы вывели функцию вычисления в «карточной» системе координат. Например, можно вычислить высоту картинки:

function getRelativeHeight(natural: Size, container: Size, relativeWidth: number) { 
    return (natural.height / natural.width) 
    	* (container.width / container.height) 
    	* relativeWidth;
}

Тут natural — размеры картинки в px, container — размеры слайда в px, relativeWidth — размеры картинки на слайде в процентах.



Передвижение объектов


Когда мы освоили переводы в «карточную» систему координат, реализовать передвижение объекта стало несложно. Код, который за это отвечает, примерно такой:

type Size = {width: number, height: number};
type Position = {x: number, y: number};

class NarrativeEditorElement extends React.Component {
    // ...

    handleUpdatePosition = (e) => {
        // slide - DOM-элемент, который вмещает текущий элемент
         const {slide} = this.props;

         if (!this.state.isMoving) {
            // this.ref — DOM-элемент текущего объекта (текста, картинки и т.п.) 
            this.initialOffsetLeft = this.ref.offsetLeft;
            this.initialOffsetTop = this.ref.offsetTop;
        }


        const relativePosition = getRelative(
            {width: slide.offsetWidth, height: slide.offsetHeight},
            {x: this.initialOffsetLeft + e.deltaX, y: this.initialOffsetTop + e.deltaY},
        );

        this.setState({
            geometry: {
                ...this.state.geometry,
                x: relativePosition.x,
                y: relativePosition.y,
            },
            isMoving: true,
        });
    }
    // ...
}

function getRelative(slideSize: Size, position: Position) {
    return {
        x: 100 * position.x / slideSize.width,
        y: 100 * position.y / slideSize.height,
    };
}

Изменение размеров по 4 точкам


В любом порядочном визуальном редакторе можно менять размеры объекта, перетаскивая «квадратики», расположенные по углам его границ. У нас такую возможность тоже нужно было реализовать.



Написать компактный и понятный код, обрабатывающий изменение размеров объекта в зависимости от угла, за который тянет пользователь, оказалось не так уж просто. Прежде чем «велосипедить» свое решение, мы провели обзор того, как это делается в популярных библиотеках. Например, так выглядит код в jQuery UI:



Код выглядит компактным, но разобраться в нем непросто: функции не являются «чистыми», используется большое количество внутренних методов класса и его свойств, имеет значение контекст выполнения функции (см. apply).

В нашем проекте примерно такой же код написан следующим образом. Тут дополнительно учитывается минимальный размер объекта и опциональное ограничение на сохранение соотношения сторон (preserveAspectRatio) — это важно при изменении размеров видео или картинки.

Наш код нельзя назвать компактным, но функция получилась «чистой», а структура самого решения — прямолинейной.

Было бы здорово, если бы вы, уважаемые читатели, предложили вариант кода, решающий эту задачу. Допускаю, что существует некая закономерность, после понимания которой код становится суперкоротким и понятным.

Проблема неконсистентного рендеринга текста на разных платформах


После того, как началось более-менее масштабное тестирование показа нарратива, мы с удивлением обнаружили: в некоторых случаях один и тот же текст при одном и том же шрифте, размере и прочих атрибутах имеет разное число строк на разных платформах!

Например, в Safari при создании нарратива какой-то текстовый блок имел 4 строки, однако при просмотре его в Chrome на Android показывались 3 строки. Мы так и не выяснили точную причину такого поведения и списали его на особенности движков рендеринга текста на различных платформах.

Проблему мы решили разбиением текстовых блоков на строки перед публикацией. И тут тоже нашлось место интересному. Первый подход к определению строк состоял в оборачивании каждого символа в <span> и определении его положения с помощью getBoundingClientRect. Это работало быстро, и мы довольно долго не замечали проблему, которую породил такой подход. Догадаетесь, о какой проблеме идет речь?

Оказалось, многие шрифты, в том числе и Yandex Sans Text, содержат оптимизации отображения межсимвольного расстояния для некоторых сочетаний символов (кернинг).


В правом столбце выставлено CSS-свойство font-kerning: none

Если каждый символ обернуть в <span>, эта оптимизация не работает! Получается, что строка с указанными сочетаниями, но без тегов <span> вокруг каждого символа (то есть такая, какой ее видит пользователь редактора) может быть короче, чем с тегами.

Быстро решить эту проблему можно древним CSS-свойством font-kerning: none, которое попросту отключает эти оптимизации. Скорее всего, большинство людей, просматривающих нарратив, ничего не заметят.

Но ведь должен же быть способ сделать всё красиво! И мы нашли решение в использовании такого же древнего, но весьма полезного Range API, который может для заданного диапазона выделения текста предоставлять информацию, аналогичную getBoundingClientRect(). Сейчас мы работаем над этим решением, и, надеемся, в ближайшее время оно поедет в продакшен.

Непростая подложка под текстовыми элементами


Многие авторы использовали полупрозрачные картинки для увеличения контрастности шрифта, размещенного поверх фотографии. Другие писали нам с просьбами добавить соответствующую функцию в сам редактор.

Наш дизайнер, Аня, удивила разработку выбором самого непростого варианта геометрии подложки. Помимо объединения строк похожей длины в один прямоугольник, появилась идея использовать середину строчной буквы без выносных элементов (например, «a» или «o») как ось симметрии. Такая реализация создает усиленный эффект «мультяшности» получившихся фигур — они напоминают speech bubbles в комиксах.


Алгоритм и реализация подложки

Рисовать фигуры пришлось вручную, используя габариты строк, рассчитанные на прошлом этапе. Они реализованы как замкнутые svg-пути, состоящие из дуг окружностей одного и того же радиуса и прямых линий.

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

Заключение


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

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

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

Планируется нативная реализация просмотрщика нарратива на iOS и Android, поэтому мы изучаем возможность упростить создание таких просмотрщиков. Как нам кажется, один из интересных путей — «скриншоты» отдельных элементов на слайде. Они позволили бы не думать о правильном размере шрифта: картинки, в отличие от текста, очень естественно изменяются в размерах за счет процентной «карточной» системы координат. Кроме того, нам вообще не надо будет загружать шрифт Яндекса, не надо будет тянуть довольно заковыристый алгоритм отрисовки подложки текста и т. д.

Наконец, планируем переводить видео с потоков (изначально для потокового видео была хорошая инфраструктура) на обычные файлы MP4/WebM: с короткими видео такой подход показывает лучшую совместимость и скорость работы.


Статья подготовлена сотрудниками Яндекс.Дзена: Дмитрий Душкин и Василий Горбунов написали про фронтенд, Ульяна Сало — про дизайн.

Комментарии (24)


  1. koot
    16.02.2018 14:33

    Вопросик как вообще можно убрать новости о политике ?


    1. sky2high0 Автор
      16.02.2018 15:18

      Наверное, имеется в виду: «Как убрать из моей ленты Дзена новости»? К сожалению, специальной кнопки про это нет, но можно просто блочить все эти каналы — по дизлайку на карточке появится «сервисное меню», где будет вариант «Заблокировать канал».


      1. LDZ
        16.02.2018 16:18
        +1

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

        Я думал может после нескольких часов Настройки (лайки интересных тем и дизлайки неинтересных) помогут мне видеть в ленте только то, что хочу, но до сих пор из 100 материалов я минусую или блочу до 60-80.

        Сколько нужно потратить времени, чтобы настроить ленту под себя?


        1. bonifaci
          16.02.2018 17:06

          Именно заблокированный источник не должен появляться в ленте повторно. Возможно, это какие-то похожие по тематике источники. Если у вас есть примеры обратного поведения, пожалуйста, пришлите мне личным сообщением свой логин и тот источник, который у вас появился в ленте после блокировки. (Стоит также учитывать, что блокировки сохраняются в привязке к сессионной куке или логину)

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

          Сколько нужно потратить времени, чтобы настроить ленту под себя?
          Всё индивидуально и зависит от имеющейся у Яндекса информации о читателе, от активности самого пользователя, от узости тех тем, в которых заинтересован каждый пользователь. Если материалов этой тематики мало в интернете и Дзене, настраивать придётся немного дольше. В мобильном приложении Дзен для Android можно указать несколько любимых источников, дав более явный сигнал рекомендательной системе, на какие темы посты вы хотите видеть в ленте (не забудьте авторизоваться ;) ).

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


          1. LDZ
            16.02.2018 17:16

            Насчёт конкретного источника — сходу не назову, но теперь буду записывать.

            А разрывает информационный пузырь яндекс почему-то какой-то развлекательной мутотой в стиле одноклассников. Я очень сомневаюсь, что люди, похожие на меня, интересуются подобными вещами.

            Подписка и отписка по темам — это единственное, чего мне безумно не хватает в дзене


          1. Duduka
            17.02.2018 10:02

            еще проблемы, накопилось, простите:
            каждый топик появляется, как минимум, два раза, и заблокированный вполне может вылезти далее по ленте;
            каждый топик появляется через несколько дней, даже если поставил лайк и открывал и прокручивал вниз, как отключать показ одного и того же контента?
            заблокированные авторы топиков появляются (да, нерегулярно, но иногда система начинает транслировать древнюю древность, отменяя блокировки);
            уровень свежести топиков никак не отображается и «срочные» новости часто «протухают», видимо у вас нет механизма указания сроков жизни сообщений, и степени «желтизны» названия, которое, иногда, бывает одиноким, со скрытым текстом (если бы текст сообщения появлялся в «болоне» или ниже, как иногда срабатывает контекстная реклама, было бы удобнее);
            потеря фокуса окна приводящая к перезагрузке странице — еще одна «фича», неужели Вы считаете, что это приемлемый подход? в «яндекс.картинках» отказались от «гугловской простыни», но здесь опять повторили этот выдающийся дизайн, у Вас нотники не плавятся еще?!

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


            1. bonifaci
              17.02.2018 11:26

              иногда система начинает транслировать древнюю древность, отменяя блокировки
              Старые материалы иногда действительно могут попадать в рекомендации, но то что заблокировано, точно не выводится в ленту. Может, вы не заблокировали источник, а только дизлайкнули? После дизлайка появляется кнопка «заблокировать».
              «срочные» новости часто «протухают»
              Дзен не новостной ресурс, поэтому прямо сейчас некоторые материалы попадают в ленту с задержкой. К тому же, все пользователи оперативно следят за событиями.
              у вас нет механизма указания сроков жизни сообщений
              Срок жизни материала определяется тем, насколько он популярен у читателей: если его открывают, лайкают, мало дизлайкают, такой материал находит новый охват, потому что система ищет новых пользователей, похожих на полайкавших. Конечно, при этом, мы постоянно работаем над тем, чтобы учить машину распознавать, какие материалы скоропортящиеся, а какие можно показывать целый год.
              потеря фокуса окна приводящая к перезагрузке странице — еще одна «фича», неужели Вы считаете, что это приемлемый подход?
              Страница не должна сама обновляться. Когда вы почитали публикацию и вернулись в ленту, мы предложим вам оценить прочитанное и покажем материалы на схожую тематику в выпадающих из только что кликнутой карточки. Или вы имеете в виду, что лента обновляется, если вы не заходили в неё много часов?
              создать приемлемый контекст, без биткоинов, политики… — долгий процесс, никто из них не дошел до приемлемой ленты
              Мы прямо сейчас экспериментируем с тем, чтобы стартовая лента была более тематической, даже если мы плохо знаем интересы пользователя. Дело в том, что при малом наборе информации о читателе, система пытается предложить что-то разноплановое, эдакий винегрет из всего сразу, и 1) бывают материалы ближе к средним интересам; 2) выходят наиболее популярные публикации, имеющие высокий ctr, из-за чего, бывает, в этот набор попадают желтоватые заголовки и статьи. Но мы это изменим :)
              если с этого компьютера заходят и родители и их дети, то не факт что лента будет их разделять, никак!
              Все ваши интересы, лайки, дизлайки, блокировки, могут быть привязаны к вашему логину. Если вы настроите ленту, а потом зайдёте в инкогнито, вы увидите совершенно другие рекомендации. Кроме того, на данный момент многие браузеры позволяют держать несколько профилей работы как раз для такой ситуации семейного использования. Например, почитайте, как это реализовано в Яндекс.Браузере.


              1. Duduka
                17.02.2018 17:19

                Страница не должна сама обновляться. Когда вы почитали публикацию и вернулись в ленту, мы предложим вам оценить прочитанное и покажем материалы на схожую тематику в выпадающих из только что кликнутой карточки. Или вы имеете в виду, что лента обновляется, если вы не заходили в неё много часов?
                нет, последние firefox с блокировщиком js (отключен) и ublock… перезагрузка при потере фокуса закладкой с дзеном(несколько открытых ссылок с дзен, нередко и чтение одной закладки[я не читаю часами], приводит к полной перезагрузке), решаю проблему — открывая ссылки с дзена в другом окне, оставляя закладку дзен активной.
                Кроме того, на данный момент многие браузеры позволяют держать несколько профилей работы как раз для такой ситуации семейного использования.
                это понятно, но будь у Вас такой механизм [поиск тоже можно было бы организовать тематический, но, да, это очень затратно, просто поинт на будущее]… система была бы более стабильной (то, что я могу себе позволить создавать несколько ящиков не значит, что и другие будут так делать), а с тематическим контекстом и более продуктивной, не всем нужно читать весь поток, люди, бывает, ценят свое время.
                Понятно, что Вас сейчас интересует проблема поиска авторов, но если не будет отклика от читателей… а ведь отсутствия лайка не факт, что читатель не хотел что-то сказать, как и отсутствие подписки или ее наличие — есть форма одобрения или нет. Ну, если оно «такое» (игра в одни ворота), вещук-в-себе, то возникает вопрос об эффективном использовании ресурса, так ли много людей согласится, чтобы его интересы определял и диктовал алгоритм натренированный на толпе?! Вот произошло событие,… несколько авторов «среагировало»,… толпа накрутила «интерес», в ленту вылилось несколько однотипных текстов из общих источников, вопрос: какова ценность этой информации?! Если серьезно, то я не знаю как можно было бы исправить Ваш ресурс… он необычайно совершенен, и самое ненужное в нем — это человек, даже авторов лучше заменить нейросетью, симулируя поведение более стабильного по качеству текстов автора.


                1. bonifaci
                  17.02.2018 17:46

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


                  1. Duduka
                    19.02.2018 08:09

                    уточню, это излишне упрощенная точка зрения, запросы и лайки никакой связи с интересами не имеют, Вы предлагаете контент прошедший ваш фильтр, на это повлиять никак нельзя, нельзя задать контекст и интерес, резоны. Ваша система — «молоток, которая видит во всем только гвозди», запросы — это не профиль личности, не индивидуальность, и не источник информации (то что Вы видите только эту информацию не значит что это и есть «личность»), а «дзен»- способ навязывания контента (может с благими намерениями, надеюсь), и взяв «не-информацию» как базис, вы включили странный информационный поток (не факт, что он не вызывает отторжения, действуя столь грубо), есть ощущение, что Вы руководствовались рассказом Азимова «выход из положения», ага дзен — прикольный, но больной.


                    1. bonifaci
                      19.02.2018 11:50

                      Вы предлагаете контент прошедший ваш фильтр
                      Мы предлагаем контент на основе знания поведения пользователя в интернете, сайтов, которые он посещает, а также лайков и дизлайков в ленте. Ограничение только одно: соответствие материалов нашим правилам, то есть никакого порно, хейтспича, шок-контента и спама, например.
                      на это повлиять никак нельзя, нельзя задать контекст и интерес, резоны
                      Повлиять можно лайками и дизлайками, а ещё блокировками. Но если и этого недостаточно, можно указать несколько любимых источников в настройках Дзена, чтобы более явно показать, какой тематики ресурсы и материалы вы предпочитаете. Это можно сделать через мобильное приложение Дзен для Android и через настройки Яндекс.Браузера. В будущем мы сделаем эти настройки во всех продуктах, где присутствует Дзен.


  1. Daniil1979
    17.02.2018 09:48

    Больше половины источников — говно, из оставшихся новостей из других новостей — половина тоже говно, и каждый второй блок — реклама. Причем совершенно мне не интересная.
    О, кстати? Люди, подскажите, как Adblock настроить, чтобы резать рекламу в Дзене? Надоела уже.


  1. divanus
    17.02.2018 10:50
    -3

    В целом ребята из тындекса захламили свой поисковик рекламной. Всю рекламу народ массово блочит. По рекламе гуляют роботы. Эффективности никакой — скоро придет осознание рекламодателей о том, что их очень сильно обманули на всём этом.
    Если раньше в первой странице поиска выдавался нужный материал, то сейчас все 10 последующих страниц так же как и на первой завалены рекламным мусором. Именно поэтому все используют для поиска информации google.
    Посмотрел нарратив — в принципе, это подача материала для мозга золотой рыбки, которая хранит информацию 9 секунд. Среднестатисчиский современный человек всего 8 ;)
    Благодаря тындексу и многим другим ресурсам человек получил море бесполезной информации. Информационный мусор. Продукты информационные в этих корпорациях «добра» формируют команды, состоящие из фриков и просто дебилов. Уж простите, но как есть, так и есть. В костяке конечно сидят много тех, кто с нуля создавал свои детища, но вся та движуха по формированию пыли, совещаний и инфомусора — это и есть всё то, что сейчас представляет ЛЮБАЯ корпорация «добра»: максимум тупости, море идиотизма и ноль полезностей.
    И конечно же главная фича всех мва-манагеров: монетизировать, всё срочно монетизировать.
    При этом настоящие продукты, которые переворачивают рынки и делают их лучше — уже НИКТО не создает ;)
    Могу лишь намекнуть: жкх, недвижимость, строительство. Только в этих трех направлениях на полке лежат продукты, способные перевернуть страну с пятой точки и из лужи как минимум на ноги и в сапоги ;)….
    Но, как я уже сказал — мы лучше будем картинки выдавать.
    При чем просто тупо «автор» не подумал о том, что на самом деле есть нарратив.
    (от лат. narrare — языковой акт, рассказ) — понятие, фиксирующее способ бытия повествовательного текста, в котором сознание и язык, бытие и время, человек и мир оказываются тесно взаимосвязанными. Сама тематизация мира жизни, задающая фигуры событий, их взаимосвязь, а также коды и адреса сообщений, строится в опоре на очевидности сознания, которое имеет некую привилегированную позицию «всевидящего ока». В философии языка она сменяется позицией «говорящего субъекта», который, выступая держателем нарративных кодов, тематизирует и упаковывает события, тем самым финализируя их.
    Нарративная форма первенствует в формировании традиционного знания. Народные истории рассказывают о том, что можно назвать успехами или неудачами, легитимируют общественные институты (функция мифов), предлагают различные модели интеграции в установленные институты (легенды, сказки). Таким образом, рассказы позволяют, с одной стороны, определить критерии компетентности, свойственные обществу, в котором они рассказываются, а с др. — оценить, благодаря этим критериям, результаты, которые в нем достигаются или могут быть достигнуты. Нарративная форма, в отличие от развитых форм знания, допускает внутри себя множественность языковых игр. Так, в рассказе можно найти денотативные высказывания, обращенные к небу, к временам года, к флоре и фауне; деонтические высказывания, предписывающие, что нужно делать в отношении самих этих референтов или в отношении родства, различия полов, детей, соседей, чужеземцев и т.д..; вопросительные высказывания; оценочные высказывания и т.д.
    Ну, это так — как говорят — нагуглил :)


    1. bonifaci
      17.02.2018 10:58
      +2

      Приходите к нам работать, пожалуйста. Нам нужны светлые головы, наполненные правильными идеями и умеющими делать хорошие продукты для людей. yandex.jobs


      1. divanus
        18.02.2018 20:17

        Ну, я пробовал как-то :) не прохожу :) старый, глупый :)


    1. divanus
      18.02.2018 23:23

      Интересна логика минусаторов? Все из CEO? Ну, вы это — держитесь там ;)


  1. 1c80
    18.02.2018 20:13

    А где то модно посмотреть топовые нарративы?


    1. sky2high0 Автор
      18.02.2018 20:14

      Ура, спасибо за первый вопрос по теме!)
      Топовые нарративы тут — zen.yandex.ru/narrative


      1. 1c80
        18.02.2018 21:04

        Спасибо, а как стату посмотреть можно сколько раз показали, сколько прочитали?


        1. sky2high0 Автор
          18.02.2018 22:17

          Такая статистика доступна только авторам.


          1. 1c80
            18.02.2018 23:31

            ну в обычных-то публикациях можно посмотреть, может скажете в среднем у топовых наративов сколько показов в ленте и применяются ли к ним фильтры такие же как к обычным публикациям на дзене, может пока какие преимущества есть, экспериментировали с ними и не получилось разогнать почему то показы.


            1. sky2high0 Автор
              19.02.2018 10:49

              Топовые нарративы собирают в 5 раз больше показов и просмотров, чем обычные. Но все зависит от того, насколько нарратив интересен пользователям. Даже нарративы без такого промо могут собрать до 500 тысяч показов и до 60 тысяч просмотров.


              1. 1c80
                19.02.2018 11:29

                ясно спасибо, это очень хороший показатель, а за какой период? обычная новость живёт сутки, потом бот ее понижает в выдаче и она сходит на нет. с нарративами так же или там другая система? по ссылке что Вы прислали как раз и есть такие нарративы сверху?


  1. SeTM
    18.02.2018 20:14

    Сделали Дзен и тихо убрали возможность добавления виджетов на главную, 1-1=0.