Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ulubione / popularne artykuły - Favorite Post Calculator, Funkcja obliczająca popularność postu
Malinaa
post 2.03.2021, 20:13:41
Post #1





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Mamy artykuły (np. 100 rekordów) w bazie danych, pola typu liczba odsłon (views) i data publikacji (date) i inne.
Jak obliczyć, które artykuły są najbardziej popularne / ulubione posty czytelników?

Przydałby się funkcja obliczająca jakiś wskaźnik popularności (sprawdzająca popularność)
i aby można była w pętli foreach generującej tablice danych najnowszych artykułów
"zaznaczyć" te, które mają parametry odpowiadające ulubionym / popularnym postom.

Jak określić popularność postu? Parametry: liczba odsłon, czas... Macie pomysł jak to zrobić?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
LowiczakPL
post 3.03.2021, 14:15:23
Post #2





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Jak dla mnie popularność posta można określić na podstawie:

sprawdzam ile dni temu był opublikowany post, jak często jest czytany w jakimś zakresie czasu
1. do tygodnia to propagacja tematu więc strzałów musi być coraz więcej = popularny
2. powyżej tygodnia do miesiąca znaczy temat się rozszedł i jest popularny = popularny

tendencja malejąca odsłon znaczy temat wygasa

pojedyncze strzały w dłuższych odstępach to jednostki zainteresowane tematem albo o nim dopiero usłyszały


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Malinaa
post 3.03.2021, 16:08:04
Post #3





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Też tak to sobie wyobrażam, czyli wiemy o co chodzi smile.gif

Tylko nie chce mi się tego pisać, więc może pójdźmy na łatwiznę.
Czy są jakieś przykłady, najlepiej gotowce, gdzie do funkcji podstawię tylko czas, odsłony i problem z głowy.
Nic bardziej złożonego (dodatkowe pola w bazie danych itp.) nie są tu potrzebne, prosty skrypcik popularności.


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
dublinka
post 3.03.2021, 16:58:01
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(Malinaa @ 2.03.2021, 19:13:41 ) *
Jak określić popularność postu? Parametry: liczba odsłon, czas... Macie pomysł jak to zrobić?


Liczba odslon zapisywana gdzies w tabeli


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 3.03.2021, 17:05:06
Post #5





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Powinieneś dysponować logami (im więcej różnych danych tym lepiej) dla posta wtedy istnieje jakaś podstawa aby napisać algorytm popularności, coś jak sztuczna inteligencja, to może być np filltr Bayeasa, który będzie się uczył aż przyniesie wymierne efekty.


Licznik odsłon mówi o odsłonach nie o popularności posta


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Malinaa
post 3.03.2021, 17:25:35
Post #6





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Odsłony i czas pisałem już, że są w bazie.
Napisałem też, że chcę uniknąć dodatkowych pól tabeli, czy też tabel z logami, bo zdaję sobie sprawę, że przydałyby się dla algorytmu sztucznej inteligencji, czy też innego.

Interesuje mnie proste, najprostsze rozwiązanie (im mniej danych tym lepiej) jednak nie może to być zwykły licznik - nie o to pytam,
a nieco bardziej inteligentne rozwiązanie, bo popularność to bardziej złożony proces.


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
dublinka
post 3.03.2021, 19:03:53
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(Malinaa @ 3.03.2021, 16:25:35 ) *
Odsłony i czas pisałem już, że są w bazie.
Napisałem też, że chcę uniknąć dodatkowych pól tabeli, czy też tabel z logami, bo zdaję sobie sprawę, że przydałyby się dla algorytmu sztucznej inteligencji, czy też innego.

Interesuje mnie proste, najprostsze rozwiązanie (im mniej danych tym lepiej) jednak nie może to być zwykły licznik - nie o to pytam,
a nieco bardziej inteligentne rozwiązanie, bo popularność to bardziej złożony proces.

Nie jestes w stanie wejsc do glowy ludzi i zapisac czy to im sie podobslo czy nie. Czy jest cos popularne przedklada sie np. iloscia spdzedanego materialu (gazety, ksiazki, gry itp) a w tym przypadku wyswietlenie arta. Nigdy do konca nie bedziesz pewien czy kliknieto przez przypadek czy nie ale liczenie odslon i posortowanie jest raczej jedynym wyjsciem bo technologia na takie zmyslowe inteligentne podejscie nie pozwala na tenczas.

Ten post edytował dublinka 3.03.2021, 19:05:18


--------------------
Go to the top of the page
+Quote Post
Malinaa
post 3.03.2021, 19:18:50
Post #8





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(dublinka @ 3.03.2021, 19:03:53 ) *
Nie jestes w stanie wejsc do glowy ludzi i zapisac czy to im sie podobslo czy nie. Czy jest cos popularne przedklada sie np. iloscia spdzedanego materialu (gazety, ksiazki, gry itp) a w tym przypadku wyswietlenie arta. Nigdy do konca nie bedziesz pewien czy kliknieto przez przypadek czy nie ale liczenie odslon i posortowanie jest raczej jedynym wyjsciem bo technologia na takie zmyslowe inteligentne podejscie nie pozwala na tenczas.


Uspokój się, please z tą zmysłową inteligencją smile.gif
Mam na myśli matematyczne obliczenie odsłon do czasu i np. określenie wskaźnika popularności (minimum w procentach) dla 100 artów.
Wówczas w można by sprawdzić, czy dany art jest > wskaźnika i jeśli tak to = favorite posts calculator smile.gif

Ten post edytował Malinaa 3.03.2021, 19:30:04


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
gino
post 3.03.2021, 20:22:21
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Fiuuu aż tak poczytne masz te arty? Matematyka i statystyka to poniekąd moja dziedzina, pytanie czy na pewno jest Ci to potrzebne? Można określić prostą funkcją popularności w czasie danego artu. Nawet nie za bardzo wiesz co byś chciał. Dokladne trendy dane jstrony? Po co? Napisz w giełdzie ofert bo gotowca na pewno nikt oprócz Ciebie nie napisze. Poza tym jest trochę wtyczek do Google analystic, gotowe funcje do tego narzędzia na githubie. Tam będziesz miał całą statystykę każdej strony.
Go to the top of the page
+Quote Post
LowiczakPL
post 3.03.2021, 23:13:27
Post #10





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Malina tego algorytmu nie napisze się w kilka godzin, to kilka tygodni jak nie miesięcy, chodzi o nauczenie sztucznej inteligencji jak rozpoznawać popularny post.

Dane testowe do uczenia AI są dostępne w sieci ale nie z każdej dziedziny, gdyż każdy przypadek jest inny.

Najpierw musisz zbudować dane testowe następnie karmić nimi algorytmy,

wyłuskiwać poprawne dane,

znowu karmić algorytmy i tak w nieskończoność aż po okresie testów osiągniesz zadowalający efekt.

Co oczywiście nie znaczy że to koniec.

Czyli nauka algorytmu trwa cały czas,ktoś musi non stop analizować efekty czy są w miarę zadowalające ...

Ten post edytował LowiczakPL 3.03.2021, 23:14:46


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Malinaa
post 3.03.2021, 23:55:59
Post #11





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(gino @ 3.03.2021, 20:22:21 ) *
Fiuuu aż tak poczytne masz te arty? Matematyka i statystyka to poniekąd moja dziedzina, pytanie czy na pewno jest Ci to potrzebne? Można określić prostą funkcją popularności w czasie danego artu. Nawet nie za bardzo wiesz co byś chciał. Dokladne trendy dane jstrony? Po co? Napisz w giełdzie ofert bo gotowca na pewno nikt oprócz Ciebie nie napisze. Poza tym jest trochę wtyczek do Google analystic, gotowe funcje do tego narzędzia na githubie. Tam będziesz miał całą statystykę każdej strony.


Już pisałem, że chciałbym najprostsze rozwiązanie, prostą funkcję sprawdzającą popularność artów,
a mydlisz Pan oczy ludziom statystykami.
Statystyka jak matematyka nie kłamie.


Cytat(LowiczakPL @ 3.03.2021, 23:13:27 ) *
Malina tego algorytmu nie napisze się w kilka godzin, to kilka tygodni jak nie miesięcy, chodzi o nauczenie sztucznej inteligencji jak rozpoznawać popularny post.

Dane testowe do uczenia AI są dostępne w sieci ale nie z każdej dziedziny, gdyż każdy przypadek jest inny.

Najpierw musisz zbudować dane testowe następnie karmić nimi algorytmy,

wyłuskiwać poprawne dane,

znowu karmić algorytmy i tak w nieskończoność aż po okresie testów osiągniesz zadowalający efekt.

Co oczywiście nie znaczy że to koniec.

Czyli nauka algorytmu trwa cały czas,ktoś musi non stop analizować efekty czy są w miarę zadowalające ...


LowiczakPL Ja to rozumiem, dlatego wspomniałem, że nie chce mi się tego pisać.
Byłem jednak ciekaw, czy jest proste rozwiązanie problemu (funkcja).
Jak widać nie ma takiego, jak to już dublinka napisał licznik odwiedzin...
i satysfakcja gwarantowana.


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
gino
post 4.03.2021, 07:07:32
Post #12





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Raz piszesz że to nie ma być proty licznik tylko matematyczne większe obliczenia, teraz że to ma być prosty i zwykły licznik wystarczy, jak pisałem sam nie wiesz czego chcesz.Nie wypowiadaj się z tematów które mało ogarniasz. Mógłbym Ci wyłożyć statystykę i analizowanie danych, teorię zbiorów, badanie zmienności ciągów w czasie na poziomie akademickim, tylko po co? Pisanie takiej funkcji musi mieć swoje uzasadnienie merytoryczne. Jakbyś miał od 3 milionów odsłon takich artykułów w górę miesięcznie to można się bawić. Nawet google dałby Ci więcej api do rozszerzonych statystyk.Wszystko musi mieć swoje uzasadnienie. Chcesz taką funkcję - bo Ci się nie che pisać to inny dział jak pisałem.
Go to the top of the page
+Quote Post
LowiczakPL
post 4.03.2021, 08:15:27
Post #13





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


to moja propozycja jest taka, stosowałem takie wzory w grach, to dla Twojego artykułu proponuję

ocena = unikalneWyświetlenia / (godziny od wydania * 8)

albo coś w tym stylu

view_count = ( 10 * log10( view_count ) ) ^ 2

To oczywiście dla popularnych artykułów bo wspominasz również o ulubionych a to co innego niż popularny.

Ulubiony artykuł ma licznik, ktoś klika że go lubi, wtedy możesz powyższe algorytmy wzbogacić o polubienia.

ocena = unikalneWyświetlenia / (godziny od wydania * 8) + pow(1.2, polubienia);


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Malinaa
post 4.03.2021, 16:32:24
Post #14





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat
Pisanie takiej funkcji musi mieć swoje uzasadnienie merytoryczne. Jakbyś miał od 3 milionów odsłon takich artykułów w górę miesięcznie to można...


Mydlenie oczu... Jeśli o mnie chodzi można przy 50 tys. mc. I nie uzasadnione jest podejście to tematu na zasadzie licznika odsłon.
Wczoraj mydlisz oczy o statystykach, dzisiaj chcesz udzielać na ten temat wykładów?

gino Ufam, że chcesz dobrze, więc zapytam: Właściwie o co Tobie chodzi?

Cytat
ocena = unikalneWyświetlenia / (godziny od wydania * 8)

Jest konkret o to chodziło.

Będzie dobrze i musi wystarczyć.
Dziękuje za dodatkowe info. Możliwe, że sprawdzę co daje jaki wynik.
Chociaż wczoraj już napisałem taką funkcję na zapytaniu.

  1. // Polarity conditions
  2. $timestamp = time() - ($time * 30 * 24 * 60 * 60); // time in months ago
  3. $conditions_for_date = date('Y-m-d H:i:s', $timestamp);
  4.  
  5. $queryBuilder = $em->createQueryBuilder();
  6.  
  7. $queryBuilder ->select()
  8. ->from('Articles', 'a')
  9. ->where()
  10. ->andWhere('a.uploaded_at > :date')
  11. ->setParameter('null', '')
  12. ->setParameter('date', $conditions_for_date)
  13. ->setMaxResults($limit)
  14. ->orderBy('a.views', 'DESC')
  15. ->addOrderBy('a.uploaded_at', 'DESC');


Samo order views to żaden rating, dodałem więc parę porównań i warunek $conditions_for_date.

Podaje $time, a $views oraz $uploaded_at mam, więc = Yes Git smile.gif


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 4.03.2021, 16:55:03
Post #15





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Z ciekawosci:
->setParameter('null', '')
co to robi?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post 4.03.2021, 18:34:39
Post #16





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


jeśli szukasz wyników z ostatniego miesiąca to może tak

  1. ->andWhere('a.uploaded_at >= (NOW() - INTERVAL 1 MONTH)')


  1. SELECT * FROM table_name WHERE updated_at > (NOW() - INTERVAL 1 MONTH)


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Malinaa
post 5.03.2021, 00:18:40
Post #17





Grupa: Zarejestrowani
Postów: 517
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(LowiczakPL @ 4.03.2021, 18:34:39 ) *
jeśli szukasz wyników z ostatniego miesiąca to może tak


Dla sprostowania: "Chociaż wczoraj już napisałem taką funkcję na zapytaniu." ... funkcję tę napisałem dla wyświetlenia 5 popularnych artów,
pozostaje jeszcze napisać funkcję dla sprawdzenia czy art mieści się w ocenie popularności, jeśli tak wyświetl etykietę "Popularny" i tutaj przydadzą się podane "wzory".

Wolałem zamiast ->andWhere('a.uploaded_at >= (NOW() - INTERVAL 1 MONTH)') dać $conditions_for_date
mając na względzie funkcję = ocena (wskaźnik popularności), ale dzięki.


Cytat(nospor @ 4.03.2021, 16:55:03 ) *
Z ciekawosci:
->setParameter('null', '')
co to robi?


To będzie nasz Secret secret secret:
->where('a.thumbnail != :null')

smile.gif


Funkcja napisana i będzie pomocna.

  1. // [ocena = unikalne wyswietlenia / (godziny od publikacji * 8)] [wskaznik = default 8 hours]
  2.  
  3. public function favoriteCalculator($uniqueViews, $dateArticle, $hoursIndicator = 8) {
  4.  
  5. $hours_from_publication = round((time() - $dateArticle) / (60 * 60));
  6.  
  7. $rating = ($uniqueViews / ($hours_from_publication * $hoursIndicator));
  8.  
  9. return $rating;
  10. }


// Popular post (function)
$indicator = 0.95;

foreach () {
...
$rating = $this->favoriteCalculator($views_article, $date_article);
if (($rating > $indicator)) $status = 'popular';
}

Można by jeszcze zapytać o drobiazgi:
1. $hoursIndicator - dlaczego 8h, czy tak będzie optymalnie, w jakich warunkach?
2. $indicator - jaką wartość przyjąć za optymalną dla sprawdzenia $rating, przyjąłem 0.95?

Ten post edytował Malinaa 5.03.2021, 00:27:58


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
LowiczakPL
post 5.03.2021, 07:46:12
Post #18





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Tu już zaczyna się analiza algorytmów i dobranie odpowiedniego współczynnika, gdyż każdy przypadek jest inny.

Stosując podobne algorytmy w grach, wcześniej robię testy algorytmów dla prawdziwych danych.

Musisz mieć dane wejściowe nakarmić nimi te algorytmy i przeanalizować wyniki, na podstawie analizy dobrać wpółczynniki dla Ciebie satysfakcjonujące, tak ja robię.


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 22:26