Comment j'ai recodé Google en 7 jours.
Summary
TLDRThe video explores how to build a web search engine from scratch. It starts by explaining web crawling using multiple crawlers in parallel to find and index web pages. An indexing system is then created to enable fast searching, using techniques like TF-IDF scoring and PageRank algorithm. The system is hosted on a VPS server with FastAPI. A website is made with WordPress to showcase the search engine. Overall, the project demonstrates core concepts like crawling, indexing, ranking web pages that power search engines like Google.
Takeaways
- 😀 Takeaway 1
- 😀 Takeaway 2
- 😀 Takeaway 3
- 😀 Takeaway 4
- 😀 Takeaway 5
- 😀 Takeaway 6
- 😀 Takeaway 7
- 😀 Takeaway 8
- 😀 Takeaway 9
- 😀 Takeaway 10
Q & A
Who is considered to have created the very first search engine, and what was its name?
-The first search engine is often considered to be Aliweb.
What year did Tim Berners-Lee invent the World Wide Web?
-Tim Berners-Lee invented the World Wide Web in 1989.
What innovative method did the script discuss for indexing the web?
-The script discussed the use of a web crawler, a program that visits web pages to gather information and links to index the web.
Who was Matthew Grey, and what was his contribution to the early web?
-Matthew Grey was an MIT student who created the Wanderer in 1993, aiming to estimate the number of websites that existed, introducing an early concept of web crawling.
What is the significance of the 'robots.txt' file according to the script?
-The 'robots.txt' file is used by websites to indicate to search engines which pages should not be indexed, part of respecting web standards and privacy.
What does the script describe as a potential legal issue with web crawlers?
-The script mentions that if multiple crawlers download pages from the same site simultaneously, it could overwhelm the server, potentially leading to a denial-of-service (DoS) attack, which is illegal.
What is the 'Deep Web' as described in the script?
-The Deep Web refers to parts of the internet not indexed by search engines, often because site owners have indicated a preference not to be included in search engine databases.
What solution does the script propose for managing the queue of sites to be crawled, considering the memory constraints?
-The script suggests creating a separate database table for the queue to efficiently manage memory usage, despite potential slowdowns due to database searches.
What is the primary bottleneck for the speed of web crawlers as mentioned in the script?
-The primary bottleneck is the speed at which requests are made and processed, along with the number of crawlers running in parallel.
What indexing method is described to improve search result relevance and how does it work?
-The TF-IDF (Term Frequency-Inverse Document Frequency) method is described, which improves relevance by considering both the frequency of words in documents and their commonness across all documents.
How does the script suggest making a web crawler more efficient and avoid legal issues?
-By using a dictionary to track domains that have been crawled and ensuring a respectful delay before making new requests to the same domain, thus avoiding overloading servers.
Outlines
😀 Tim Berners-Lee's invention of the web and the need for web search
Paragraph 1 discusses how Tim Berners-Lee invented the web in 1989 and originally kept a notebook of all existing websites. As the number of sites grew exponentially, a more efficient way of searching the web was needed. Whoever solved this would create the most influential company ever.
👨💻 Coding a web crawler and indexer
Paragraph 2 explains how a web crawler works - starting from an initial page, it extracts information to add to a database and queues up all the links it finds to crawl next. Multiple crawlers are used to speed things up. An indexer is then created to enable fast keyword searches across the database.
🏆 Combining crawler, indexer and page rank for a search engine
Paragraph 3 discusses adding page rank to weight search results by how many other reputable sites link to them. The narrator then creates a frontend, tests the search engine, and compares it to Google, noting there is more Google does that could be added.
Mindmap
Keywords
💡Web crawling
💡Indexing
💡PageRank algorithm
💡TF-IDF
💡Search engine
💡API
💡VPS server
💡Website creation
💡Logo generation
💡Search page
Highlights
The speaker discusses using neural networks and deep learning for natural language processing tasks.
They explain the challenges of sentiment analysis and how word embeddings can be used to improve accuracy.
An overview is provided of various neural network architectures like CNNs and LSTMs for text classification.
Key takeaway - deep learning approaches outperform traditional ML models for NLP tasks.
The speaker highlights innovations in transfer learning and pre-trained models like BERT and GPT-3.
Discussion on how transformers and attention mechanisms lead to state-of-the-art results.
Examples given of real-world NLP applications like chatbots, machine translation and text generation.
They emphasize the need for interpretability and explainability in NLP models.
The potential societal impacts of NLP technologies are explored.
Future directions are considered such as commonsense reasoning and multi-modal learning.
Overall, the talk provides a comprehensive overview of deep learning techniques for NLP.
Helpful examples and visuals are used to explain complex NLP concepts.
The speaker highlights key challenges and opportunities in applying deep learning to language tasks.
They emphasize the need for ethics and accountability as NLP becomes more advanced.
Key takeaway - deep learning is driving rapid progress in NLP and transforming capabilities.
Transcripts
quand Tim bernersley a inventé le web en
1989 il avait un petit cahier dans
lequel il notait tous les sites qui
existaient c'était alors le seul moyen
de parcourir le web il n'a pas fallu
longtemps pour qu'un site se charge
d'héberger cette liste mais tout était
encore fait à la main et c'était un
problème rapidement il y avait beaucoup
trop de sites pour pouvoir tous les
ajouter un à un il fallait trouver un
moyen efficace et viable de rechercher
le web il devenait clair que quiconque
trouverait la meilleure solution
créerait l'entreprise la plus influente
de tous les temps aujourd'hui on va
recoder cette solution en une seu semain
perdons pas de temps projet réalisé en
collaboration avec cosostinger bien en
description pour en profiter quand tu
fais une requête sur Google ce n'est pas
internet qui est recherché mais une base
de données gigantesque qui contient
toutes les pages Web que l'entreprise
américaine connaît un site Web peut y
être référencé de deux manières
différentes la première méthode est
similaire à ce que faisait aliweb qui
est souvent considéré comme le tout
premier moteur de recherche à l'époque
il fallait que l'administrateur d'un
site fasse une demande en décrivant son
contenu et s'il était accepté il était
ajouté à la base de données d'aliweb
mais clairement ça c'est dépassé c'est
vraiment juste au cas où ton site n'a
pas été ajouté automatiquement à la BDD
par la deuxième méthode qu'on va
implémenter le crawerer un crawerer
c'est un petit programme auquel on donne
une page web peu importe laquelle celle
qu'on veut on va lui demander d'aller
dessus de récupérer le titre les
sous-titres les métadata évidemment le
texte et d'ajouter tout ça à notre base
de données ensuite la partie la plus
importante on récupère tous les liens
cliquables de cette page en faisant le
tri évidemment on veut que des URL
valides ou des URL relatifs qu'on pourra
transformer en URL valid ces liens on va
les rajouter à une file d'attente quand
notre crawer en a fini avec une page il
en prend une nouvelle dans la file et le
procédé se répète encore et encore d'une
page on en découvre ainsi une centaine
d'autres de la centaine d'autres on en
découvre un millier d'autres et ainsi de
suite c'est exponentiel cette idée de
crawler elle vient pas de Google mais
d'un étudiant du MIT Matthew Grey avec
son projet wonderer en 1993 son objectif
était d'estimer le nombre de sites Web
qui existait d'ailleurs les stades de
son projet sont toujours disponibles en
93 il y avait que 623 trois sites et
seulement 5 % de sites commerciaux cette
idée de crawer elle est clairement
révolutionnaire vu que 30 ans plus tard
elle est toujours utilisée par les
moteurs de recherche alors si je vous
demande qui a embauché ce brillant
étudiant vous devinez la réponse ok
revenons au code on a les bases de notre
crawer mais pour l'instant il est
beaucoup trop l à cause des requêtes
chaque fois qu'on va sur un site ça
prend 2 3 secondes pour le télécharger
ce qui nous force à tout le temps
attendre on peut pas accélérer ses
requête mais on peut faire tourner
plusieurs craollers en parallèle qui se
partagent la file des sites à explorer
plus on en a plus son référenera de site
chaque seconde mais maintenant on a un
autre problème si tout mescraoller
télécharge les pages d'un même site on
enverrait un tas de requêes au serveur
qui l'héberge ce qui pourrait
éventuellement le faire cracher ça
s'appelle une attaque des dos et c'est
illégal un avocat ça coûte cher du coup
j'ai préféré créer un dictionnaire dans
lequel j'ajoute chaque domaine auquel on
a fait une requête accompagnée de quand
elle date comme ça mes crawers
sélectionnent dans la file d'attente
uniquement un domaine pour lequel on a
attendu assez longtemps et si aucun
domaine n'est disponible on attend avant
de refaire une nouvelle requête et un
autre truc qu'on doit respecter certains
sites ne veulent pas que les moteurs de
recherche indexent certaines de leurs
pages ces pages non référencées
constituent le DIP web pour indiquer
leur volonté au moteur de recherche tous
les sites ont une page spécialement
conçue pour cela on y accède en ajoutant
robots.txt à leur URL et comme on peut
le voir même wikipédia a plein de pages
qu'il demande à ne pas référencer la
partie parfois légale sombre à laquelle
vous avez peut-être pensé c'est le Dark
web qui est une petite partie du Deep
web nuance bref faut respecter tout ça
donc bah on le fait on a presque fini
mais il y a un petit truc qui m'inquiète
la file d'attente elle se remplit très
vite trop vite et je suis à peu près sûr
qu'on aura rapidement plus assez de
mémoire pour tout stocker alors on va
créer une autre table dans notre base de
données juste pour elle histoire d'être
sûr sauf que faire une recherche dans
une base de données qui plus est avec
des millions de lignes c'est beaucoup
plus lent que de faire une recherche
dans une variable locale comme je le
faisais avant et mon intuition me dit
que ça va beaucoup nous ralentir du coup
j'ai créé une sorte de miniil avec une
variable locale on la R remp avec la
vraie file qui est dans la BDD on
l'utilise pour aller le plus vite
possible avec nos crawer et quand elle
est presque vide on la remplit de
nouveau ok c'est prêt maintenant on va
avoir besoin d'un serveur VPS c'est une
sorte d'ordinateur que tu peux contrôler
à distance alors tu as que accès à la
ligne de commande mais pour du code on a
pas besoin de plus j'en ai utilisé un
pour mon bot Twitter antifur pour mes
sites Web ou encore mon bot discord
c'est vraiment ce qui donne vie à un
projet informatique vu qu'on peut y
faire tourner du code en continu ici ce
sera nos craoller et pendant qu'il
recherche le web je pourrais continuer
d'être très productif sur mon propre PC
ce sera aussi utile pour y mettre une
API et ça ce sera dans la deuxième
partie de la vidéo le goulot
d'étranglement de nos crawers c'est la
vitesse à laquelle on fait les requêtes
et le nombre de crawers qui tourn en
parallèle donc on a besoin d'un VPS avec
une très bonne connexion Internet et un
CPU descent 300 MB par seconde de VCPU
noyau 8 Go de RAM seulement 6,49 € Dingo
on va installer yubuntu comme OS on
attend que ça se fasse et tout a l'air
d'être prêt 100 Go de disque 2 t de
bande passante on remercie au Stinger le
sponsor de la vidéo pour ce VPS de
qualité en ce moment en plus c'est les
seldes de janvier 57 % en moins sur les
VPS c'est clairement le moment d'en
profiter si tu en veux un sur l'année
utilise le lien que tu trouveras en
description pour cela plus qu'à mettre
le code sur le serveur et à le lancer ok
ça a l'air pas mal j'ai laissé ça tner
quelques heures suffisamment pour avoir
plus de 20000 pages web dans notre base
de données et pour les curieux il y
avait presque un million de pages dans
la file d'attente pour Comparis ce que
stock Google évidemment c'est ridicule
mais eux ils ont pas un serveur ils en
ont des mil sur lesquels sont réparti
leur base de données et leur crawer j'ai
ni l'argent pour avoir autant de
serveurs et encore moins l'intelligence
pour pouvoir gérer toute cette
infrastructure gigantesque mais bon pour
notre expérience 20000 c'est assez on va
arrêter de craoller et passer à
l'indexation cette étape va nous
permettre de faire des recherches ultra
rapidement en organisant notre base de
données parce que là pour l'instant on a
ça une liste d'URL leur titre le texte
contenu sur la page les liens contenu
sur la page et c'est tout et c'est très
mauvais pour faire une recherche si on
veut classer toutes les pages qui
contiennent le mot coiffeur il faut
qu'on compte combien de fois le mot
coiffeur apparaît sur chaque page donc
on doit prendre la première URL on
compte le nombre de coiffeurs on prend
la deuxème URL on compte les coiffeur et
ainsi de suite et comme on a des
milliers de documents bah c'est assez
long à la place on voudrait avoir un
index inversé c'est-à-dire une deuxième
table dans notre base de données qui
contient tous les mots possibles
associés à une liste des URL dans
laquelle ce mot apparaît ainsi que le
nombre d'occurrence et là dans notre
recherche on trouve le mot direct pour
créer cette table bah on va faire ce que
j'ai décrit juste avant on parcour
chaque URL on regarde leur texte en
notant les nouveaux mots dans un
dictionnaire et le nombre d'occurrence
pour chaque URL qui contient ce mot
l'avantage c'est qu'on a à le faire
qu'une seule fois pour mes 20000 URL ça
a pris un truc du genre une minute pour
obtenir les meilleurs résultats d'une
recherche on pourrait penser qu'il
suffit de prendre les URL qui ont le
plus d'occurrence pour chaque mot alors
c'est pas bête mais on a un gros
problème avec ça dès que la recherche
contient un mot ultra commun nos
résultats sont affreux par exemple pour
chercher le coiffeur on compterit le
nombre d'occurrence pour le mot coiffeur
ça c'est pertinent mais aussi le nombre
d'occurrence pour le mot le qui est
absolument partout avec un nombre
d'occurrence très élevé alors notre top
résultat sera l'URL qui contient le mot
le le plus souvent et ça on s'en fout et
on a un deuxième problème également
admettons que j'ai une page gigantesque
avec des milliers de mots et CIN fois le
mot coiffeur et une page plus petite
avec une centaine de mots et trois fois
le mot coiffeur on est d'accord que la
deuxième page devrait être plus
pertinente pour notre recherche mais en
comptant les occurrences bah c'est la
première qui gagnerait pour éviter ces
deux problèmes on va appliquer la
méthode TF IDF le TF est pour TER
frequency on va calculer le ratio nombre
d'occurrence divisé par le nombre de
mots sur la page et ce ratio permet
d'éviter le deuxième problème que j'ai
décrit le IDF veut dire inverse document
frequency on va simplement calculer le
ratio nombre de pages totales dans notre
BDD divisé par le nombre de pages où le
mot recherché peut-être trouvé donc plus
un mot est rare dans les pages Web plus
ce ratio sera grand pour avoir le score
final on a juste à multiplier ces deux
valeurs tout en ajoutant un logarithme à
la partie IDF parce que sinon elle sera
est trop importante par rapport à la
partie TF et là on a un classement où
les premiers résultats ont un contenu
pertinent par rapport à ce qu'on a
recherché mais ce qu'on voudrait en plus
de ça c'est que les pages les plus
intéressantes se démarquent mais mais
comment on fait pour déterminer si un
contenu est intéressant ou pas la
réponse se trouve dans ce document de
1998 écrit par Sergy Bren et Lawrence
page les deux fondateurs de Google
l'idée est simple quand une page web a
un lien vers une autre page dans son
contenu elle dit en quelque sorte et les
infos sur cette page web sont
intéressantes regardez là donc plus une
page web est citée par les autres plus
elle sera intéressante vu que des
humains ont fait le choix arbitraire de
la conseiller à partir de là on peut se
dire qu'il suffit de compter le nombre
de liens qui pointent vers une page web
pour savoir si elle est intéressante ou
non sauf que non car on peut abuser de
ce système quelqu'un de malhonnête peut
très bien créer plein de pages bidon qui
pointent vers son site et hop il se
retrouve en haut de la recherche Google
pour éviter ça on va faire en sorte que
les liens venant des sites qui ne sont
jamais cité ailleurs ne valent pas
grand-chose alors que les liens des
sites très populaires eux valent
beaucoup et ça on peut le faire avec
cette formule le page R qui a permis à
Google de vraiment se lancer il y a plus
qu'à l'implémenter on suit simplement la
formule pour ça puis on y combine le
score TF IDF calculé plusutôt pour
obtenir une note finale pour chaque page
de la recherche on va aussi créer une
API avec Fast API pour que notre
recherche soit disponible de n'importe
où avec un simple appel HTTP et
évidemment on va héberger ça sur notre
VPS bon par contre j'oublie toujours
comment configurer engings pour que mon
serveur accepte les requêes HTTP et
heureusement avec lia j'ai un peu d'aide
et je peux avoir ma config j'ai juste à
copiercoller et ça devrait être bon
ouais ça a l'air de marcher C tia qui
t'aide avec toutes les tâches de ton VPS
etelle est incluse gratuitement avec
l'abonnement au Stinger dont je te
parlais un petit peu plusôt et en plus
il protège ton serveur des attaques des
dos ça aussi ça inclut j'ai rien une à
faire et c'est plutôt pratique ok la p
c'est réglé j'aimerais maintenant créer
un site qui l'utilise pour y mettre une
page de recherche pour qu'on puisse
enfin tester tout ça et en plus de ça
j'en profiterai pour faire quelques
pages qui présente le projet histoire
d'avoir un souvenir de toute façon créer
un site c'est rapide avec WordPress et
ça d'autant plus quand on est utilise
hostinger pour l' héberger ce que j'aime
vraiment chez eux c'est que tu as tous
les outils nécessaires au même endroit
ça te facilite la vie mon VPS c'était
chez eux le nom de domaine pour notre
site je l'ai pris chez eux en quelques
clics et non seulement il est gratuit
avec le Plan Business que j'utilise mais
en plus ils vont automatiquement le lier
à mon site WordPress il y a vraiment
qu'à se laisser guider par hostinger
pour faire notre site tu choisis un
thème tes identifiants un modèle de base
pour ton site et ensuite avec le Plan
Business et c'est pour ça que je l'ai
pris
a WordPress à qui tu peux décrire ton
projet et qui te créera automatiquement
des pages lié à celui-ci pratique pour
gagner du temps regarde un petit peu
tout le contenu qu'elle a pondu le Plan
Business est le meilleur rapport
qualité-prix selon moi rien que pour ça
évidemment tu peux toujours modifier le
site par derrière avec WordPress c'est
simple comme mononjour en trois clics et
10 minutes j'avais mon site web de fini
et pourtant on dirait que j'ai bossé
dessus plusieurs heures quand on voit le
résultat pour la page de recherche je
vais faire comme Google un logo et une
barre de recherche du coup il me faut un
logo bah ça tombe bien au Stinger à Unia
créatrice de logo j'ai juste à décrire
mon projet et j'en obtiens un quand je
te dis qu'ils font tout au Sigur pour le
reste de la page de recherche j'ai
utiliser du code HTML et JavaScript
custom pour faire appel à mon API je te
montre le résultat final de cette page
dans un instant mais d'abord je te
rappelle que c'est les promos de janvier
chez austinger 79 % sur l'hébergement
profitesen en sélectionnant le Plan
Business choisis une durée supérieure à
12 mois c'est ce qui vaut le plus le
coup et ce qui te permettra d'avoir 10 %
supplémentaires quand tu ajouteras le
coupon v2f au moment de payer tuas un
mois pour te faire rembourser si jamais
ça te plaît pas donc n'hésite pas bon il
est temps il est temps de tester notre
moteur de recherche Emmanuel Macron
c'est instant année quel plaisir et avec
le Page Rank on a que des sites bien
réputés alors j'ai surtout crollé des
sites d'actualité et Wikipédia c'est
surtout concentré sur lactu et bordel la
vitesse je suis vraiment content de ça
alors évidemment Google ils vont encore
plus loin que ce que je t'ai montré
aujourd'hui il y a pas mal de
différences leur crer récupère beaucoup
plus d'infos les images par exemple pour
faire Google Image la localisation du
site pour te montrer les coiffeurs près
de chez toi ou encore le temps de
chargement du site web et si tu as une
vitesse vraiment faible ça va avoir un
impact sur ton classement nous on a
aussi craollé puis indiqué ça c'est ce
que faisit Google à leur début mais de
d'un jour ça crole et ça index en Contin
continu et en parallèle ça leur permet
d'avoir les dernières nouvelles et de
mettre à jour les P web dont le contenu
a changé enfin bref nous on a une
version ch plus mais qui marche avec les
principes les plus importants moi je
suis plutôt content sur ce
abonne-toi
5.0 / 5 (0 votes)