Zmiana w systemie funkcjonowania tagów

9

W założeniu tagi miały zawierać jedynie nazwy technologii (języki, frameworki, bazy danych itp). Niestety społeczność wykorzystuje je w nieco innych celach niż zakładane dodając tagi typu pomoc, projekt, praca, ocena co nie ma zbyt dużego sensu.

Pojawił się wiec pomysł usunięcia niepotrzebnych tagów oraz stworzenia "czarnej listy". Dodatkowo proponuje aby do utworzenia nowego tagu potrzebna była większa liczba punktów reputacji (póki co jedynie 1 pkt wystarczy).

2

Faktycznie - limit jednego punktu doświadczenia jest bardzo słaby, właściwie to można przyjąć, że w ogóle nie ma limitu.

Co do listy zakazanych tagów - popieram całkowicie. Takie rzeczy jak "problem, pomoc, program" itp. powinny być blokowane.

Poza tym nie wiem, czy nie skłonić/zmusić ludzi to włożenia trochę więcej wysiłku w tagowanie i nie dać obowiązkowych 2-3 tagów. Bo teraz wpisze na odpieprz "java" i wątek przejdzie. A może jakby musiał wpisać coś bardziej pasującego, to trochę bardziej się przyłoży do opisania problemy - będzie to z korzyścią zarówno dla niego, jak i dla jakości forum.

EDIT
Przemyślenie po chwili - jeśli aktualnie każdy może tworzyć dowolnie głupie tagi, przy okazji opisanych zmian chyba dobrze by było od razu przefiltrować istniejące i wykasować śmieci. Może to jest oczywiste, ale wolałem dodać ;)

1

A może by tak próbować tagować po zawartości posta. Może dałoby się wyciągnąć te informacje z samego posta bez konieczności angażowania ułomnego użytkownika?
@cerrato myślę, że wymuszanie na użytkowniku więcej nie jednego taga może wprowadzić jeszcze większy chaos - jak otagowac posta o to jak wypisać w Javie coś na konsole itp?

3

@Tomek Pycia: właśnie miałem napisać identyczny post :) Można analizować treść danego posta i proponować na tej podstawie użytkownikom tagi.

1

A w temacie analizowania treści postów - pewien czas temu ktoś (chyba @Krolik, ale pewien nie jestem) stworzył bota - @Tasmanian Devil, który podpowiadał/sugerował dodanie kodu w odpowiednie tagi. Ale jakoś od dłuższego czasu nie widziałem komentarzy od niego, a na pewno wiele takich postów się pojawia, sam codziennie poprawiam kilkanaście. Pytanie - czy ten bot działa? A może on odpala się co pewien czas i ja szybciej poprawiam, niż on wykrywa? ;)

Żeby nie było, że offtopuję - jeśli bot się sprawdził, to można by było, zamiast odpalać go cyklicznie, dodać jego wywołanie podczas zapisywania posta. I w ramach tego bota (a właściwie to w ramach jego algorytmu, bo odpalanie podczas zapisu już nie do końca będzie botem) dodać także sugerowanie odpowiednich tagów.

5

pewien czas temu ktoś (chyba @Krolik, ale pewien nie jestem) stworzył bota

Dobrze pamiętasz, Ktoś ;)

Pytanie - czy ten bot działa? A może on odpala się co pewien czas i ja szybciej poprawiam, niż on wykrywa?

Działa. Aczkolwiek ostatnio nie działał, bo zostało zmienione API do pobierania postów i musiałem przerobić go na nowe, na co nie było czasu. Ale obecnie działa ponownie.

Ale tak, co jakiś czas (30 minut dokładnie) pobiera listę ostatnio wybranych postów i wtedy coś z nimi robi, więc potencjalnie możesz zdążyć zanim doda komentarz.

Żeby nie było, że offtopuję - jeśli bot się sprawdził, to można by było, zamiast odpalać go cyklicznie, dodać jego wywołanie podczas zapisywania posta. I w ramach tego bota (a właściwie to w ramach jego algorytmu, bo odpalanie podczas zapisu już nie do końca będzie botem) dodać także sugerowanie odpowiednich tagów.

Miałem pomysł nieco podobny - aby całą tę analizę treści posta w poszukiwaniu nieoznaczonego kodu robić już na serwerze podczas zapisywania posta, zamiast odrębnym narzędziem udawać logowanie i komentowanie na forum. Aczkolwiek to by wymuszało odpalenie mojego modelu ML bezpośrednio na Coyote - istnieje projekt php-ml, ale nie przyglądałem się jeszcze, jakie modele jest on w stanie ładować i wykorzystywać.

Pytanie czy bot sugerujący tagi musiałby być oparty aż o ML, tak jak Tasmanian robi to teraz, bo może wystarczy proste "jeśli w treści posta jest WPF to zasugeruj tag wpf"?

1

Z drugiej strony samo przeszukanie treści posta może być niemiarodajne. Nie wiem nawet, czy AI/ML by sobie poradził(a) z postem w stylu

mam rok doświadczenia w Pythonie, kolega programuje w C++, kiedyś w szkole miałem ćwiczenia z Delphi, ale nie wiem, czy on tak samo dobrze się nadaje do robienia stron jak PHP. Czy mając skrpypty w JS mogę z nich generować od razu CSS, czy może lepiej je osadzić w HTML albo pobrać jako JSON :P

3
cerrato napisał(a):

Z drugiej strony samo przeszukanie treści posta może być niemiarodajne. Nie wiem nawet, czy AI/ML by sobie poradził(a) z postem w stylu

mam rok doświadczenia w Pythonie, kolega programuje w C++, kiedyś w szkole miałem ćwiczenia z Delphi, ale nie wiem, czy on tak samo dobrze się nadaje do robienia stron jak PHP. Czy mając skrpypty w JS mogę z nich generować od razu CSS, czy może lepiej je osadzić w HTML albo pobrać jako JSON :P

Pewnie se nie poradzi, bo z tym to nawet średnio ogarnięty homo sapiens sobie nie poradzi. Wystarczy, żeby to AI, czy co tam będzie, sugerowało tagi, które user będzie mógł zmienić, pewnie 90% userów i tak tego nie ruszy.

0
cerrato napisał(a):

Żeby nie było, że offtopuję - jeśli bot się sprawdził, to można by było, zamiast odpalać go cyklicznie, dodać jego wywołanie podczas zapisywania posta. I w ramach tego bota (a właściwie to w ramach jego algorytmu, bo odpalanie podczas zapisu już nie do końca będzie botem) dodać także sugerowanie odpowiednich tagów.

@Tasmanian Devil wydaje się dość generyczną nazwą, nie przeczę. Niemniej pamiętaj o potrzebie separation of concerns.

Co do automatycznego dodawania tagów oraz sugerowania (tzn. automatycznego dodawania, ale z możliwością zmiany przez autora wątku): w ogólnej teorii to bardzo dobre. Obawiam się jednak, czy w praktyce nie będzie to zaprzeczeniem przejrzystości wątku; w mojej opinii brak tagów jest lepszy niż nieodpowiednie tagi.

4

Może łatwiej zamiast czarnej listy tagów, zrobić bialą listę jedynie dozwolonych tagów? W końcu tych języków programowania i technologii nie jest tak dużo.

Ewentualnie dwie listy: biała i czarna, a kiedy ktoś wpisze coś z poza tych obydwu list, nowy tag idzie do moderatora który decyduje, czy go przypisać do białej listy, czy do czarnej.

0

Dorzucę swój post z innego tematu dotyczący tego zagadnienia Obserwowanie innych użytkowników + dopytam/zaproponuję przy okazji modyfikowania tagów - czy dałoby radę dorzucić możliwość obserwowania danego tagu z dostawaniem powiadomienia o nowym poście z tym tagiem.

Przykładowo chciałbym móc obserwować tag https://4programmers.net/Forum/Tag/scala i dostawać powiadomienia o nowych postach. Wydaje mi się to ciekawsze niż propozycja obserwowania użytkowników (w odwołaniu do innego tematu).

0
axde napisał(a):

Dorzucę swój post z innego tematu dotyczący tego zagadnienia Obserwowanie innych użytkowników + dopytam/zaproponuję przy okazji modyfikowania tagów - czy dałoby radę dorzucić możliwość obserwowania danego tagu z dostawaniem powiadomienia o nowym poście z tym tagiem.

Przykładowo chciałbym móc obserwować tag https://4programmers.net/Forum/Tag/scala i dostawać powiadomienia o nowych postach. Wydaje mi się to ciekawsze niż propozycja obserwowania użytkowników (w odwołaniu do innego tematu).

W takim razie (rozmyślnie cytując cały post bezpośrednio nad moim) ja zaproponuję dodanie również obserwowania całych kategorii (nie pamiętam, czy taka propozycja już padła).

1
Silv napisał(a):

W takim razie (rozmyślnie cytując cały post bezpośrednio nad moim) ja zaproponuję dodanie również obserwowania całych kategorii […]

To ja jeszcze dorzucę pomysł obserwowania całego serwisu, a jak już to zostanie dodane co całego internetu. ;)

2

To jak ruszamy tagi, to ja bym proponował przypisać obowiązkowe tagi zależne od działu w którym się pisze. Konretnie w Bazach Danych przydałby się tag jakiej bazy dotyczy pytanie i naprzykład obowiązkowy byłby jeden z tagów: mssql, mysql, postgres, oracle, db2, takie wymuszenie by użytkownik wpisał jakiego silnika używa.
Sporo by to ułatwiło odpowiadającym. Pewnie nie wszystkie działy tego wymagają, ale w tym ma to naprawdę znaczenie.

0

@Panczo: to rodzi pewne problemy – w przykładzie z bazami:

  • może się zdarzyć, że ktoś nie będzie używać żadnej bazy, ale postanowi zadać pytanie teoretyczne;
  • może się zdarzyć, że ktoś poda inny silnik niż używa (bo np. używa go tylko na uczelni/w szkole i zapomniał nazwy).

UPDATE:

  • A w rzadkich – przyznaję – sytuacjach może się zdarzyć, że nasza lista tagów nie będzie uwzględniać tego, czego używa użytkownik.
0

Jak pytanie będzie ogólne to wstawi dowolny tag, zresztą to wynika z treści, czy wersja silnika ma znaczenie, czy nie. A jak ktoś nie wie jakiej bazy używa to tym bardziej tag jaki wstawi nie robi różnicy ;)

1

Ale według tego, co piszesz, to jeśli tag będzie nieodpowiedni, nie zrobi to różnicy. A przecież jeśli będzie się wymuszać tagi, to dlatego, że one właśnie robią różnicę. Czy chcesz przez to powiedzieć, że należy wymuszać tagi, nawet jeśli (niewielka? duża?) część wątków miałaby mieć niepoprawne tagi?

0

Chcę tylko aby zalecenia z tego wątku nie były martwe: STOSUJCIE TAGI Z NAZWĄ systemu BAZY danych podczas zakładania nowego wątku bo na chwilę obecną nikła część się do tego stosuje.
Dopuszczam błędy, ale zakładam, że ktoś przynajmniej się zastanowi o czym pisze. Zakładam że nie wszystkie tematy tego wymagają, ale przynajmniej te gdzie to istotne będą ten tag z wersją miały.

0

@Panczo: problemem jest nie tyle brak tagów, co bezmyślność użytkowników i bylejakość, ale też nieogarnianie przeznaczenia tagów. W niektórych kategoriach tagi są wymuszane (co najmniej jeden), ale wielu nie rozumie co się powinno tam wpisać, więc wpisują problem i tego typu rzeczy.

Ktoś zakłada wątek dotyczący np. programu w C++, ale jakimś cudem nie skojarzy sobie, że w tagu powinien podać nazwę języka, a nie jakieś randomowe słowa, byle pokonać blokady. Smutne to trochę.

0

Hm, po zastanowieniu – może można by tak zrobić, jak proponujesz. Oto, co udało mi się stworzyć na podstawie niektórych postów w tym wątku:

Opis rozwiązania

Dla odpowiednich kategorii będzie wymuszać się podanie tagów o rodzajach odpowiednich dla tej kategorii.

Na przykład:

  • Dla kategorii Bazy danych będzie wymuszać się podanie tagu opisującego używany silnik bazy danych. Czyli – rodzaj tego tagu to nazwa silnika bazy danych.
  • Dla kategorii C/C++ będzie wymuszać się podanie tagu opisującego, czy to język C, czy C++, (jakiś inny?), czy też bez różnicy. Czyli – rodzaj tego tagu to nazwa języka programowania z rodziny C/C++.

Ważne jest, by w każdej kategorii był również do wyboru tag brak-lub-nieznane (obecnie w tagach nie może być ukośników, dlatego zastosowałem tutaj ciąg znaków -lub-).

To rozwiązanie musi być oparte na białej liście tagów – inaczej nie będzie wiadomo, czy podany tag jest tagiem odpowiednim dla danej kategorii, czy nie.

Czarnej listy osobiście nie popieram ani nie odrzucam – jeśli uznamy, że warto, to niech i będzie.

Korzyści

To rozwiązanie wykorzystuje 3 elementy, które mogą przynieść osobne korzyści:

  1. wymuszenie podania co najmniej jednego tagu;
  2. wymuszenie podania co najmniej jednego tagu odpowiedniego dla danej kategorii;
  3. informacja o oczekiwaniach względem użytkownika.

Każdy z tych trzech elementów przyniesie następujące korzyści (zgodnie z tym, co było w tym wątku zaznaczane i co Ty, @Adam Boduch, i inni wyrażali wiele razy):

  1. Wymuszenie podania co najmniej jednego tagu (rzecz oczywista, już zresztą jest zaimplementowane u nas) pozwoli na otrzymywanie powiadomień o treściach oznaczanych tym tagiem.
  2. Wymuszenie podania co najmniej jednego tagu odpowiedniego dla danej kategorii (rzecz oczywista) przyczyni się się do zmniejszenia liczby "losowych" lub bardzo ogólnych tagów (np. "pomoc"), co przyczyni się do lepszej kategoryzacji treść na forum, co w dalszej kolejności przyczyni się do lepszego wyszukiwania treści oraz trafniejszych powiadomień.
  3. Informacja o oczekiwaniach względem użytkownika:
  • pomoże użytkownikowi lepiej opisać swój post, szczególnie w następujących sytuacjach: (a) gdy w ogóle nie pomyśli/nie będzie się przejmował, że można/należy/dobrze by było dodać jakieś tagi; (b) gdy nie będzie wiedział/pewien, jaki rodzaj tagów powinien być w danym wątku (np. że wątki z baz danych wymagają podania nazwy silnika bazy danych); (c) gdy żaden tag nie będzie odpowiedni (poda wtedy tag brak-lub-nieznane);
  • pozwoli w sytuacji dobrej woli użytkownika nie dopuścić do stanu opisywania wątku przez tagi niezwiązane z pytaniem (użytkownik nie zamieści np. tagu SQL, gdy w pytaniu chodzi o NoSQL).

Poza wymienionymi wyżej korzyściami zaletą jest też relatywnie prosta (?) implementacja.

Szczegóły implementacyjne

Tak jak ja to widzę, to:

  1. W formularzu dodawania posta w danej kategorii należy dodać jedną etykietę z tekstem odpowiednim dla tej kategorii – na przykład, jak wyżej napisałem, Wymagany co najmniej 1 tag – silnik bazy danych. Opcją jest tu też po prostu zmiana bieżącego placeholdera w polu tekstowym dodawania tagów; osobiście jednak nie jestem fanem placeholderów, dlatego proponuję osobną etykietę.
  2. Od strony back-endu/bazy danych należy dla każdej kategorii, w której ma to sens, określić:
    • tagi jakiego rodzaju będą wymagane (np. dla baz danych ten rodzaj to silnik bazy danych);
    • konkretne tagi, jakie będą podpadać pod ten rodzaj (np. dla baz danych listę wszystkich silników baz danych, które chcemy, by można było podać).
  3. Podpowiedzi być nie musi. Jeśli jednak będą, to lista dostępnych tagów będzie wyświetlana tak samo*, jak podpowiedzi nazwy użytkownika przy tworzeniu postu czy komentarza – tylko nie trzeba będzie podawać znaku @.

Myślę, że nie ma sensu wprowadzać dla jakiejkolwiek kategorii więcej niż jednego tagu – z uwagi na to, by zakładanie tematu nie zaczęło wydawać się użytkownikom zbyt skomplikowane. Ale to tylko moje przeczucie.


UPDATE: * Oczywiście po umieszczeniu kursora w polu dodawania tagów.

2
Ktos napisał(a):

Miałem pomysł nieco podobny - aby całą tę analizę treści posta w poszukiwaniu nieoznaczonego kodu robić już na serwerze podczas zapisywania posta, zamiast odrębnym narzędziem udawać logowanie i komentowanie na forum. Aczkolwiek to by wymuszało odpalenie mojego modelu ML bezpośrednio na Coyote - istnieje projekt php-ml, ale nie przyglądałem się jeszcze, jakie modele jest on w stanie ładować i wykorzystywać.

Pytanie czy bot sugerujący tagi musiałby być oparty aż o ML, tak jak Tasmanian robi to teraz, bo może wystarczy proste "jeśli w treści posta jest WPF to zasugeruj tag wpf"?

Myślałem, że może to wyglądać podobnie jak w module Praca. Tam po wpisaniu jednego tagu, podpowiadane są kolejne, które mogą pasować w ogłoszeniu:

screenshot-20200204065306.png

Na forum, kod podpowiadający tagi mógłby być wywoływany po wywołaniu zdarzenia onblur w znaczniku <textarea>. Jeżeli to jest jakiś zaawansowany program, to mógłby działać na serwerze jako odrębny microservice wywoływany z poziomu JS.

0

Na forum, kod podpowiadający tagi mógłby być wywoływany po wywołaniu zdarzenia onblur w znaczniku <textarea>. Jeżeli to jest jakiś zaawansowany program, to mógłby działać na serwerze jako odrębny microservice wywoływany z poziomu JS.

Zasadniczo, jeśli takie rozwiązania ci nie przeszkadzają, to ja bym chętnie spróbował zamknąć właśnie Tasmanian Devil w takiej postaci - jako mikroserwis, którego pytamy "czy tutaj cokolwiek wygląda jak nieoznaczony kod?" i tyle, całkowicie po stronie klienta, bez bota który pyta stronę o coś co jakiś czas :)

Jestem w stanie przygotować kontener Dockera na przykład do hostowania tego mikroserwisu.

0

To fajnie. Jak najbardziej. Zaimplementowałbym tu przy okazji przepisywania frontu i pozbywania się jQuery.

2

Ale tak w sumie, to po co te tagi? Tematy są grupowane zazwyczaj po kategoriach, a uzyte technologie itp zazwyczaj są w temacie postu

1
danek napisał(a):

Tematy są grupowane zazwyczaj po kategoriach, a uzyte technologie itp zazwyczaj są w temacie postu

No i jak po usunięciu tagów przefiltrujesz wątki w poszukiwaniu tylko tych dotyczących np. gamedevu? Bo ja sobie skorzystam z tagu gamedev i będę takie wątki widział. ;)


Szkoda tylko, że nie można tagów łączyć, tak aby móc filtrować na podstawie kilku, np. gamedev + c++, albo jakiekolwiek inne. @Adam Boduch: co Ty na to? Taki ficzer by był całkiem przydatny. Trzeba by tylko UI jakoś dostosować to ich wybierania.

1

Od początku byłem przeciwny tagom na forum argumentując, że ludzie nie będą ich stosowali poprawnie albo w ogóle nie będą ich używali.
I jak zwykle miałem rację.

Więc może czas powrócić do czasów rozsądku i tagi całkowicie usunąć?

0

@somekind: powiem Ci, że mnie też to uwiera, że ta funkcjonalność jest taka trochę wymuszana.

W mojej ocenie teoretyczne korzyści wynikające z istnienia tagów przewyższają korzyści z ich braku (wypisałem je już w tym wątku). Poza tym usuwanie też zabiera czas i energię, a obecnie z tagami nie ma problemów jako takich.

Jeśli @Adam Boduch zechce je usunąć (z jakiegokolwiek powodu), to czy Ty byłbyś za możliwością obserwacji kategorii? Tak, jak wyżej napisałem w komentarzach – nie widzę wielkich problemów z liczbą powiadomień: albo byłoby ich mało (np. z kategorii Coyote), albo wystarczyłoby powiadomienie o samej ich liczbie, które linkowałoby do widoku zbiorczego, który pokazuje nowe wątki/wątki z nowymi postami.

1
Silv napisał(a):

@somekind: powiem Ci, że mnie też to uwiera, że ta funkcjonalność jest taka trochę wymuszana.

Właśnie.
Tego nie było od początku, więc ludzie od początku nie byli do tego przyzwyczajeni. Od początku to było forum, a na forach tematy od zawsze grupowało się po kategoriach/działach. Tagi to mechanizm typowy raczej dla serwisów typu Q&A, w których działów nie ma, są tylko tagi i tam to ma sens (tzn. też nie ma sensu, ale też nie ma innego wyjścia, skoro nie chcą mieć hierarchii).

Efekt taki, że tagów się nie stosuje do wyszukiwania (bo szybciej przez kategorie albo google), za to są konieczne do utworzenia wątku, więc ludzie wpisują cokolwiek, byle tylko walidator przepuścił. To jest całkowicie naturalny, ludzki mechanizm, że jak ktoś zawraca dupę, to się mu odpowiada cokolwiek, byle się odczepił, i tak to działa z tagami. Następstwem jest oczywiście więcej, bezużytecznych, nieużywalnych i nieużywanych tagów.
Do tego automatyczne dodawanie tagów w niektórych sytuacjach rodziło absurdy typu wątek z pytaniem o VB.NET obowiązkowo otagowany jako C#.

W mojej ocenie teoretyczne korzyści wynikające z istnienia tagów przewyższają korzyści z ich braku (wypisałem je już w tym wątku).

Teoretyczne korzyści są bez znaczenia, bo nie istnieją.

Jeśli @Adam Boduch zechce je usunąć (z jakiegokolwiek powodu), to czy Ty byłbyś za możliwością obserwacji kategorii? Tak, jak wyżej napisałem w komentarzach – nie widzę wielkich problemów z liczbą powiadomień: albo byłoby ich mało (np. z kategorii Coyote), albo wystarczyłoby powiadomienie o samej ich liczbie, które linkowałoby do widoku zbiorczego, który pokazuje nowe wątki/wątki z nowymi postami.

Ja od wielu lat tak forum używam, wchodzę tutaj: Forum dyskusyjne i mam widok zbiorczy kategorii, które sobie wybrałem. I nie potrzebuję do tego powiadomień.

0

Generalnie ja jestem fanem ujednolicania (np. właśnie UI), a nadto jestem przyzwyczajony do powiadomień – dlatego też optuję cały czas za nimi.

@Adam Boduch: czy odpowiednie tagi spełniają obecnie jakąś większą rolę w funkcjonowaniu 4p?

2

Jeśli Adam Boduch zechce je usunąć (z jakiegokolwiek powodu), to czy Ty byłbyś za możliwością obserwacji kategorii?

A co ma obserwacja kategorii do tagów? Cały sens istnienia tagów polega na tym, że mamy możliwość obserwowania wątków, które nie są w kategoriach, które zazwyczaj obserwujemy, ale dotyczą tematów, które nas interesują. Ja na przykład śledzę tag xamarin, którego posty pojawiają się zarówno w C#, jak i Mobilne, jak i czasami Java (którego kompletnie nie przeglądam inaczej).

1 użytkowników online, w tym zalogowanych: 0, gości: 1