Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

Re: Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

par two3d » 23 mars 2021, 16:16

ta class Pagerank {} n'entoure pas les fonctions dessous, je suis pas expert en classe..

Ensuite; donner des liens à la variable $_links, via un constructeur ou directement dans la clase, dans le array();

Re: Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

par chegmarco » 23 mars 2021, 15:21

Le système de pagerank n'existe plus il me semble, du moins, chez Google.

Tu dois faire un système de pagerank, donner une note suivant le contenu de la page par exemple, la grandeur de texte par rapport aux balises HTML. Tenter de crawler les liens web que tu as dans la bdd et voir si ils sont présent sur le web pour déterminer le nombre de backlinks.
Merci pour votre réponse. C'est ce que fait la classe ci-dessus si je ne me trompe pas.
Je voudrais donc préciser que les liens web dont je dispose dans ma base de données existe bel et bien sur le web et ce sont d'ailleurs le top 10 des sites les plus visités au monde.

Comment donc appliquer mon algorithme de la classe ci-dessus à ces différents liens afin de déterminer leur pertinence ???

Mon problème est comment comment utiliser cette classe PageRank lorsque je procède au crawl des sites avec DomDocument en PHP ???

Re: Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

par two3d » 23 mars 2021, 11:55

Le système de pagerank n'existe plus il me semble, du moins, chez Google.

Tu dois faire un système de pagerank, donner une note suivant le contenu de la page par exemple, la grandeur de texte par rapport aux balises HTML. Tenter de crawler les liens web que tu as dans la bdd et voir si ils sont présent sur le web pour déterminer le nombre de backlinks.

Aidez-moi SVP à utiliser cette classe PageRank pour déterminer le Score de chacun Lien disponible dans ma BDD

par chegmarco » 22 mars 2021, 22:35

Bonjour.

J'essaie d'utiliser cette classe (https://github.com/champion1337/Spidere ... kClass.php) PHP qui permet une implémentation de PageRank pour classer des URLs. Cependant, je ne sais pas comment m'y prendre sachant que j'ai une liste de liens dans la Table site de ma base de données.

Code complet de la Classe PageRank:
<?php
class Pagerank 
{
  private  $_links = array(); 
  private  $_graph = array();
  private function _get_id($url) {
    $ret = false;
    foreach($this->_links as $link) { //loop all links
    if ($link['link'] == $url) {
      $ret = $link['id']; //get mysql id
    }
  }
  return $ret;
}

  public function add_link($link, $to,$id) {
    $item['link'] = $link; //original url
    $item['to'] = $to; //array for links pointing to
    $item['id'] = $id; // mysql id
    $item['to_id'] = array();
    array_push($this->_links,$item);
  }
  private function _compute_ids() {
    foreach ($this->_links as $link) { //loop all links
        $this->_graph[$link['id']] = array();
        if( !empty( $link['to'] ) ) {
            foreach ($link['to'] as $to) { // loop the links pointing to
                $to_id = $this->_get_id($to);
                if ($to_id != false ) { //if the link is registered, add it to the new graph with it's mysql id
                  array_push($this->_graph[$link['id']],$to_id);
                }
            }
        }
    }
  }
  private function _compute_pagerank($linkGraph, $dampingFactor = 0.15) {
    $pageRank = array();
    $tempRank = array();
    $nodeCount = count($linkGraph);
    // initialise the PR as 1/n
    foreach($linkGraph as $node => $outbound) {
      $pageRank[$node] = 1/$nodeCount;
      $tempRank[$node] = 0;
    } 
    $change = 1;
    $i = 0;
    while($change > 0.00005 && $i < 100) {
      $change = 0;
      $i++;
  
      // distribute the PR of each page
      foreach($linkGraph as $node => $outbound) {
        $outboundCount = count($outbound);
        foreach($outbound as $link) {
          $tempRank[$link] += $pageRank[$node] / $outboundCount;
        }
      }

      $total = 0;
      //   calculate the new PR using the damping factor
      foreach($linkGraph as $node => $outbound) {
        $tempRank[$node]  = ($dampingFactor / $nodeCount)
        + (1-$dampingFactor) * $tempRank[$node];
        $change += abs($pageRank[$node] - $tempRank[$node]);
        $pageRank[$node] = $tempRank[$node];
        $tempRank[$node] = 0;
        $total += $pageRank[$node];
      }
  
      // Normalise the page ranks so it's all a proportion 0-1
      foreach($pageRank as $node => $score) {
        $pageRank[$node] /= $total;
      }
    }
    return $pageRank;
  }

  public function calculate() {
    set_time_limit(50 );
    //print_r($this->_links);
    $this->_compute_ids();
    $pagerank = $this->_compute_pagerank($this->_graph);
    foreach ($pagerank as $key => $value) {
        $sql = "UPDATE links SET pagerank = '" . $value . "' WHERE id='" . $key . "'";
        mysql_query($sql);
    }

  }
}
J'ai essayé après d'instancier cette classe comme ceci:
$score = new PageRank();
Mais à présent, je me demande comme utiliser cette instance pour déterminer le Score de chaque lien disponible dans ma base de données ???
Je ne sais même pas quelle fonction appeler via cette cette instance ($score->???) ???

Aidez-moi s'il vous plait, à appliquer cette classe aux liens que j'ai dans ma DBB afin de déterminer le Score de la Pertinence de chacun.

Merci d'avance de votre aide.