Плагин облака тегов для Discourse?

Существует ли плагин облака тегов для Discourse?

Карл

3 лайка

Нет такого… есть ли конкретная причина, по которой вы хотите его получить? Как бы оно использовалось?

6 лайков

Это было бы круто по двум причинам. Во-первых, облако тегов, по которому можно кликать, чтобы сразу показать все темы, содержащие это слово, например «подписчик». Во-вторых, так можно было бы отображать и другие виды поиска, например, самых активных авторов или что-то ещё, что захочется. Скорее всего, это можно реализовать как задачу cron, запускаемую раз в день или чаще.

1 лайк

Мне показалась эта идея забавной :game_die: … поэтому я её создал*

Сейчас проект находится на очень ранней стадии «просто работает» и нуждается в большой доработке, дополнительных опциях и, возможно, в реализации кликабельности:

Она добавляет ссылку в ваше гамбургер-меню. :tada:

:warning: Обратите внимание, что в данный момент статистика слов строится по всем сообщениям, независимо от их типа и расположения. Это может фактически привести к косвенной утечке данных о приватности (возможно, потребуются дополнительные меры защиты для исключения слов из сообщений в закрытых разделах). Однако для просмотра и доступа к данным необходимо быть авторизованным … слова отображаются в формате SVG … и показывается только топ из нескольких сотен слов, поэтому для большинства сайтов это вряд ли станет серьёзной проблемой. Я поработаю над улучшением безопасности, но текущий подход обеспечивает очень быстрое выполнение запроса.

Приятного использования. :man_dancing:

*Проект использует несколько довольно изящных существующих библиотек, ссылки на которые указаны в репозитории. Особая благодарность @DiscourseMetrics, чей запрос я использовал.

15 лайков

Очень круто. Думаю, вам также стоит исключить некоторые слова из облака тегов?

1 лайк

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

2 лайка

Просто чтобы прояснить, это круто, ха-ха

1 лайк

Добавлен локализованный список игнорируемых слов:

что должно сделать результаты немного более интересными…

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

3 лайка

Отлично! :heart_eyes_cat: Мне нравится эта идея. Молодец. Если можно попросить добавить функции:

  • сделать ссылку на гамбургер-меню опциональной (мне нравится идея сделать это пасхалкой)
  • добавить настройку категорий, чтобы включать только выбранные категории
  • предусмотреть маршрут для категории, чтобы можно было генерировать облако тегов только для одной категории и её подкатегорий, например /wordcloud/category

Вот как это выглядит на моём форуме района.

4 лайка

работает хорошо, нужно его доработать:

3 лайка

Отличный отзыв, спасибо, и отличные идеи!

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

2 лайка
  • Выбор категории находится здесь:

    FEATURE: restrict word stats to specific Categories · merefield/discourse-word-cloud@0777adc · GitHub

    Если вы не выберете категорию (по умолчанию), будет выполнен сканирование всех сообщений форума (включая личные сообщения и всё остальное). Если добавить только одну категорию, статистика слов будет ограничена ею и так далее.

    image

  • Также внесены огромные улучшения в регулярные выражения (:sweat_smile: :stuck_out_tongue: ), которые теперь аккуратно очищают «сырые» данные и удаляют большую часть, если не весь, Markdown.

NB: Статистика слов обновляется каждый час (что, вероятно, всё ещё избыточно, но на данный момент упрощает проверку изменений в Production, так как мы проходим через значительную начальную эволюцию кода).

NB#2: Я пока не рассматривал другие языки, кроме английского (они определённо не протестированы). Текущая обработка слов может работать некорректно в некоторых языках. Предложения и pull-реквесты приветствуются.

3 лайка

Круто! Вот обновлённое облако слов, включающее только самые релевантные категории.

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

Некоторые из включённых слов являются общими и бессмысленными, например: youd, off, got, add и т. д. Интересно, работает ли настройка «часть облака слов, которую нужно игнорировать» (для меня она равна 100, значение по умолчанию)? Или, возможно, существует другой/более подходящий список слов для игнорирования?

1 лайк

Да, я с радостью рассмотрю возможность использования более обширного списка (я нашёл список из 200 слов здесь, но предпочёл Википедию как более «авторитетный источник»).

1 лайк

OK, я:

  • расширил список игнорируемых слов до 300, используя список, найденный здесь
  • улучшил регулярные выражения для удаления кавычек (чтобы слово «quote» не появлялось так часто!)
  • убрал произвольное удаление десяти оставшихся слов, которое стало избыточным после добавления списка игнорируемых слов.

Обратите внимание: если есть ещё слова, которые вы хотите исключить, просто добавьте их в начало:

как я сделал здесь (например, ‘ive’, ‘its’, ‘topic’, ‘post’).

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

На этом пока всё. Возможно, я создам отдельную тему.

3 лайка

Хорошо, возможно, вам понравится это:

Обновление: Я упростил настройку списка игнорируемых слов, поэтому больше нет параметра для выбора «части» списка игнорируемых слов. Теперь вам достаточно просто добавлять или удалять слова из списка игнорируемых, используя встроенную локализованную настройку:

2 лайка

Нужно ли удалять старую версию, чтобы получить это?

1 лайк

Вам, вероятно, потребуется лишь обновить плагин. Возникли проблемы?

Извините, мы уже разобрались. :sunglasses:

1 лайк

Никаких проблем :+1: