Écrivez votre moteur de recherche

SCraping & Machine Learning

Qui suis-je ?

@simongeorges

Expert Drupal - SEO

L'instant storytelling

Fin octobre 2017

Mais…

Mi-novembre 2017

Une question de vocabulaire

Une question de vocabulaire

GoogleBot, c'est l'étape 1 !

Il n'interprète pas le javascript

L'objectif, c'est de découvrir des pages

CURL

L'outil le plus simple

DEMO

Scrapy, un "vrai" outil

Scrapy, un crawler en python

Respecte nativement le robots.txt

Un code assez simple à écrire

DEMO

Pour aller plus loin

Allez voir la conférence sur le scrap de Julien demain à 10h !

Une question de vocabulaire

L'indexation, c'est "Caffeine"

D'ailleurs…

D'ailleurs…

Utilisation de Chrome headless

chromium-browser --headless --disable-gpu --dump-dom [URL]

Gestion du robots.txt

Extension Gooreplacer (merci LightOnSEO !)

headless-chrome-crawler

Google

The Anatomy of a Large-Scale Hypertextual Web Search Engine

Schéma d'un crawler (Nutch)

Source : Building Nutch: Open Source Search

Pour aller plus loin

Brevet Scheduler for search engine crawler

The Tale of Creating a Distributed Web Crawler

Indexing

Traitement naturel du langage (NLP)

  • Nettoyage HTML
  • HTML -> texte
  • Traitement du texte

Nettoyage HTML


(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXX-1', 'auto');
ga('send', 'pageview');

HTML to text

Approche simpliste : on enlève les balises, et on concatène tout

Approche HTML 5 : on ne conserve que le <MAIN>

Traitement du texte

  • Nettoyage (ponctuation, stop words, …)
  • Découpage en phrases
  • Découpage en mots

Mais ce n'est pas facile !

Les ordinateurs ne comprennent pas le texte !

On va le transformer en chiffres

  • Compte
  • Tf-Idf
  • Co-occurences

Pour aller plus loin

Compte

"Le SEO Campus, une super conférence SEO"

"Les chats ne comprennent rien au SEO"

"Bag Of Words"

Tf-Idf

Tient compte de la fréquence des mots dans le corpus

BM25

Tient compte en plus de la longueur des documents

C'est une famille d'algorithmes

Co-occurences

LSI (~1990)

Les documents similaires vont comporter des mots similaires

LDA (2003)

Basé une version probabiliste de LSI (1999)

Idée maîtresse : pas plus de 2 à 3 sujets par documents

Gensim

Gensim

Implémente tous ces algorithmes

Le "Machine Learning"

2 définitions :

  • Modèle
  • Entrainement

Souvenez-vous de votre scolarité !

Word2Vec

Google, 2013

Word2Vec

Word2Vec

Word2Vec

Et d'autres choses encore…

Instagram analyse les emojis

DEMO

Aujourd'hui ?

GloVe (Stanford)

FastText (Facebook)

Pour aller plus loin

Allez voir la conférence de Marguerite Leenhardt (TAL et SEO) à 17h30

Plein de choses à ajouter

  • PageRank
  • "Qualité du site"
  • N-grams
  • Knowledge Graph

Le ranking

Algorithme type "Learning to Rank" (Microsoft, 2004)

Schéma générique du ranker

Et la recherche vocale ?

Encore d'autres algorithmes…

La question ?

On transforme les sons en nombres

Et plein d'autres choses…

Et pour la réponse ?

Utilisation du Knowledge Graph en priorité, et sinon…

Les "Featured Snippets"

La science du résumé !

Extraction de phrases-clés

Le TextRank !

Mais ce n'est pas ça qui est utilisé…

Résumé intelligent

Machine Learning ("Sentence Compression")

Allez lire cet article

Ça peut évoluer…

Suivez ce que fait Enrique Alfonseca

Et pour l'application SEO, suivez Dawn Anderson (@dawnieando)

Et côté Black Hat ?

Peut-on "tromper" le machine learning ?

Le monde est un grille-pain

Pareil avec l'audio

Amazon et le Super Bowl

Et pour le texte ?

Cherchez "adversarial NLP"

J'ai menti dans le titre…

Why Writing Your Own Search Engine is Hard

Questions ?