La technologie et les techniques de génération de contenu que je vais présenter dans cette rubrique semblent sorties d’un roman de science-fiction, mais elles sont bien réelles et librement accessibles aujourd’hui.
Après avoir terminé les expériences de codage et commencé à écrire cet article, j’ai réfléchi aux implications positives et négatives du partage public de ces informations.
Comme vous le verrez, il est relativement facile aujourd’hui de produire du contenu généré par des machines et la qualité des générations s’améliore rapidement.
Cela m’a conduit à la triste conclusion que nous verrions beaucoup plus de résultats de spam qu’auparavant.
Heureusement, Google a récemment publié son rapport sur le spam de 2019 qui m’a mis à l’aise.
Avez-vous déjà regardé votre dossier de courrier électronique indésirable ? C’est ce à quoi pourraient ressembler les résultats de recherche sans les mesures que nous prenons pour lutter contre le spam de recherche. Notre article d’aujourd’hui examine la manière dont nous nous efforçons d’éviter que les spams n’apparaissent dans les résultats de recherche de Google https://t.co/RA4lUoDXEF
– Google SearchLiaison (@searchliaison) 9 juin 2020
« L’année dernière, nous avons constaté que plus de 25 milliards de pages que nous trouvons chaque jour sont des spams. (Si chacune de ces pages était une page d’un livre, cela représenterait plus de 20 millions d’exemplaires de « Guerre & Paix » chaque jour).
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Nos efforts ont permis de garantir que plus de 99 % des visites issues de nos résultats se traduisent par des expériences sans spam.
Ces dernières années, nous avons observé une augmentation du nombre de sites de spam au contenu généré et gratté automatiquement, avec des comportements qui gênent ou nuisent aux chercheurs, tels que les faux boutons, les publicités envahissantes, les redirections suspectes et les logiciels malveillants. Ces sites sont souvent trompeurs et n’offrent aucune valeur réelle aux gens. En 2019, nous avons pu réduire l’impact de ce type de spam sur les utilisateurs de Search de plus de 60 % par rapport à 2018″.
Alors que Google signale un nombre stupéfiant de pages de spam par jour, il fait état d’un taux de réussite impressionnant de 99 % dans la suppression du spam en général.
Plus important encore, ils ont fait des progrès incroyables dans la suppression des contenus de spam générés par les machines.
Dans cette rubrique, je vais expliquer avec du code comment un ordinateur est capable de générer du contenu en utilisant les dernières avancées en matière de NLG.
Je vais passer en revue la théorie et quelques lignes directrices pour que votre contenu reste utile.
Cela vous évitera de vous faire prendre avec tout le spam que Google et Bing s’efforcent d’éliminer 24 heures sur 24.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Pages à contenu fin
Dans mon article sur la génération de titres et de méta descriptions, j’ai partagé une technique efficace qui consiste à résumer le contenu d’une page pour produire des méta balises.
Une fois que vous avez suivi les étapes, vous pouvez voir que cela fonctionne vraiment bien et peut même produire des textes de haute qualité et inédits.
Mais que faire si les pages ne comportent pas de contenu à résumer ? La technique échoue.
Laissez-moi vous raconter une astuce très intelligente pour résoudre ce problème.
Si ces pages ont des liens de qualité, vous pouvez utiliser le texte d’ancrage et le texte entourant le lien comme texte de résumé.
Attendez !
Mais pourquoi ?
Permettez-moi de remonter jusqu’en 1998, à la création du moteur de recherche Google.
Dans le document décrivant leur nouveau moteur de recherche, Page et Brin ont partagé un aperçu très intéressant dans la section 2.2.
« La plupart des moteurs de recherche associent le texte d’un lien à la page sur laquelle se trouve le lien. En outre, nous l’associons à la page vers laquelle le lien pointe. Cela présente plusieurs avantages. Premièrement, les ancres fournissent souvent des descriptions plus précises des pages web que les pages elles-mêmes. Deuxièmement, des ancres peuvent exister pour les documents qui ne peuvent pas être indexés par un moteur de recherche textuel, comme les images, les programmes et les bases de données. Cela permet de renvoyer des pages web qui n’ont pas été réellement explorées ».
Voici le plan technique :
- Nous obtiendrons les liens retour et les textes d’ancrage correspondants en utilisant les nouveaux outils pour webmasters de Bing.
- Nous gratterons le texte environnant des liens de la plus haute qualité.
- Nous allons créer des résumés et des contenus longs en utilisant le texte gratté.
Rapport sur les outils pour les webmasters de Bing
L’une des caractéristiques que j’apprécie dans le nouvel outil de rétroliens de BWT, c’est qu’il peut fournir des liens ne pointant pas seulement vers votre propre site, mais aussi vers d’autres sites.
Je m’attends à ce que cela devienne une alternative populaire et gratuite aux outils payants.
J’ai exporté le fichier CSV avec la grande liste de liens et d’ancres, mais lorsque j’ai essayé de le charger en utilisant des pandas Python, j’ai trouvé un certain nombre de problèmes de formatage.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Les textes d’ancrage aléatoires peuvent inclure des virgules et causer des problèmes avec un fichier délimité par des virgules.
Je les ai résolus en ouvrant le fichier en Excel et en l’enregistrant au format Excel.
Grattage du texte environnant avec du python
Comme vous pouvez le voir sur la capture d’écran ci-dessus, beaucoup de textes d’ancrage sont assez courts.
Nous pouvons gratter les pages pour obtenir le paragraphe qui les contient.
Tout d’abord, chargeons le rapport que nous avons exporté de BWT.
import pandas as pd
df = pd.read_excel("www.domain.com_ReferringPages_6_7_2020.xlsx")
df.head()
J’ai examiné l’URL cible en fonction du nombre de liens entrants utilisés.
df.groupby("Target Url").count().tail()
J’ai tiré les liens de retour d’une des pages pour évaluer l’idée en utilisant ce code.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
backlinks = set(df[df["Target Url"] == "https://domain.com/example-page"]["Source Url"])
Maintenant, voyons comment nous pouvons utiliser une URL cible et un lien retour pour extraire le texte d’ancrage pertinent qui inclut l’ancre.
Récupération de textes à partir de liens retour
Tout d’abord, installons requests-html.
!pip install requests-html
from requests_html import HTMLSession
session = HTMLSession()
Afin de garder le code simple, je vais produire manuellement un sélecteur CSS pour saisir le texte entourant le lien.
Il n’est pas difficile de le calculer étant donné le lien et l’ancrage de la page à l’aide de code JavaScript ou Python.
C’est peut-être une bonne idée à essayer comme devoir.
Ouvrez un exemple de page de lien retour et, à l’aide des outils de développement Chrome, vous pouvez cliquer avec le bouton droit de la souris sur le paragraphe qui vous intéresse et copier un sélecteur CSS.
C’est le sélecteur que j’ai utilisé.
with session.get(url) as r:
selector="#entry-78782 > div.asset-content.entry-content > div > p:nth-child(5)"
paragraph = r.html.find(selector, first=True)
text = paragraph.text
C’est le texte qui est revenu. J’ai mis en gras le texte de notre exemple de texte d’ancrage.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Nous savons que la rétention des enseignants améliore les résultats des élèves et, inversement, que le roulement des enseignants peut nuire à la réussite des élèves. Autour de 16 % des éducateurs partent le domaine chaque année, et nous savons que de nombreux enseignants, comme moi, partent au cours des cinq premières années. Les enseignants indiquent que les principales raisons de leur départ sont le manque d’autonomie et de voix, ainsi que des questions de culture et, en particulier, de discipline. De plus, le roulement est coûteux – les districts qui manquent d’enseignants coûtent plus de 2,2 milliards de dollars par an.
Maintenant, passons à la partie amusante !
Génération de textes neuronaux
Nous allons utiliser le même code de résumé que nous avons utilisé pour générer les titres et les méta descriptions dans mon article précédent, mais avec une petite touche.
Au lieu de spécifier une longueur de résumé souhaitable plus courte que le paragraphe original, nous spécifierons une longueur plus longue. Cela fonctionnera-t-il ? Voyons voir !
!pip install transformers
from transformers import pipeline
summarizer = pipeline('summarization')
generated_text = summarizer(text, min_length=150, max_length=250)
print(generated_text)
Je reçois cet avertissement intéressant.
Votre longueur maximale est fixée à 250, mais votre longueur d’entrée n’est que de 99. Vous pouvez envisager de diminuer la longueur maximale manuellement, par exemple avec le summarizer(‘…’, max_length=50)
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Voyons le texte généré.
[{'summary_text': "Around 16 percent of educators leave the field every year. Teachers report that the biggest reasons they leave are lack of autonomy and voice, alongside issues of culture and discipline. Turnover is costly, shorting districts upwards of $2.2 billion a year, according to a report by the National Council of Teachers of English, the nation's largest teacher organization. The report also found that teacher retention improves outcomes for students, and conversely, that teacher turnover can harm student achievement. The study was published in the Journal of Education, published by Simon & Schuster, a division of Penguin Random House, on November 14. For more, visit www.simonandschuster.com. For confidential support, call the National Suicide Prevention Lifeline at 1-800-273-8255 or visit http://www.suicidepreventionlifeline.org/."}]
Le texte original comportait 492 caractères et le texte généré 835.
Mais, regardez la qualité et les phrases de roman qui apparaissent dans le texte généré. Absolument, c’est époustouflant !
Cette technique peut-elle générer des textes encore plus longs ? Oui !
generated_text = summarizer(text, min_length=300, max_length=600)
print(generated_text)
[{'summary_text': "Around 16 percent of educators leave the field every year. Teachers report that the biggest reasons they leave are lack of autonomy and voice, alongside issues of culture and discipline. Turnover is costly, shorting districts upwards of $2.2 billion a year, according to a report by the National Council of Teachers of English, the nation's largest teacher organization. The report also found that teacher retention improves outcomes for students, and conversely, that teacher turnover can harm student achievement. The study was published in the Journal of Education, published by Simon & Schuster, a division of Penguin Random House, on November 14. For more, visit www.simonandschuster.com. For confidential support, call the National Suicide Prevention Lifeline at 1-800-273-8255 or visitxa0http://www.suicidepreventionlifeline.org/. For support in the U.S., call the Samaritans on 08457 90 90 90 or visit a local Samaritans branch, see www.samaritans.org for details. In the UK, contact the National College of Education on 0300 123 90 90, orxa0 visitxa0the Samaritansxa0in the UK. For help in the United States, callxa0thexa0National Suicide Prevention Line on 1xa0800xa0273xa08255,xa0orxa0inxa0the UK on 0800xa0123xa09255. For support on suicide matters in thexa0U.S. call thexa0Nationalxa0Collegexa0of Education,xa0Englandxa0on 08457xa090 90 90. For information on suicide prevention in the UK andxa0Europe, visit the Nationalxa0College of England and Wales."}]
Ce texte généré comporte 1 420 caractères et maintient le flux logique !
La bête qui alimente cette technique est un modèle de Facebook appelé BART.
Les auteurs du document le décrivent comme une forme généralisée de l’ORET.
Voyons comment cela fonctionne.
Comment fonctionne la génération de textes neuronaux
Avez-vous passé des tests d’aptitude ou de QI où l’on vous présente une séquence de chiffres et où vous devez deviner le suivant ?
C’est essentiellement ce que notre modèle a fait ci-dessus lorsque nous avons fourni un texte initial et demandé à nos modèles de prédire ce qui allait suivre.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Il a transformé notre texte initial en une séquence de chiffres, a deviné le chiffre suivant, a pris la nouvelle séquence qui comprend le chiffre deviné et a répété le même processus.
Cela continue jusqu’à ce qu’elle atteigne la limite de longueur que nous avons spécifiée.
Maintenant, il ne s’agit pas seulement de nombres réguliers, mais de vecteurs et plus spécifiquement (dans le cas de BERT et BART) d’encastrements de mots bidirectionnels.
J’ai expliqué les vecteurs et l’incorporation bidirectionnelle de mots en utilisant une analogie avec le GPS dans mes articles d’apprentissage approfondi, partie 1 et partie 2. N’oubliez pas de les consulter.
En résumé, les embeddings encodent de riches informations sur les mots qu’ils représentent, ce qui augmente considérablement la qualité des prévisions.
Voici donc un exemple de la façon dont cela fonctionne.
Compte tenu du texte : « Le meilleur langage de programmation pour les OSE effectuant des tâches répétitives est ____ et pour les OSE effectuant des audits en amont est ____ »Nous demandons au modèle de compléter la phrase.
La première étape consiste à convertir les mots en chiffres/encastrements, où chaque encastrement identifie le mot dans son contexte.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Ensuite, transformez cela en un puzzle que l’ordinateur peut résoudre pour trouver les chiffres/embeddings qui peuvent remplir les blancs compte tenu du contexte.
L’algorithme qui peut résoudre ce type d’énigmes est appelé modèle de langage.
Un modèle de langue est similaire aux règles grammaticales en anglais ou dans toute autre langue.
Par exemple, si le texte est une question, il doit se terminer par un point d’interrogation.
La différence est que tous les mots et symboles sont représentés par des chiffres/embeddings.
Maintenant, ce qui est intéressant, c’est qu’en apprentissage approfondi (ce que nous utilisons ici), vous n’avez pas besoin de créer manuellement une grande liste de règles de grammaire.
Le modèle apprend les règles de manière empirique par des essais et des erreurs efficaces.
Cela se fait pendant ce que l’on appelle une phase de pré-formation où les modèles sont formés sur un énorme corpus de données pendant plusieurs jours et en utilisant un matériel très puissant.
Le mieux pour nous est que les résultats de ces efforts soient mis gratuitement à la disposition de tous.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Ne sommes-nous pas vraiment chanceux ?
BERT est un exemple de modèle linguistique, tout comme GPT-2 et BART.
Comment l’utiliser à bon escient
Comme je l’ai mentionné plus haut, ce truc est vraiment puissant et pourrait être utilisé pour produire du contenu inutile à une échelle relativement peu coûteuse.
Personnellement, je ne voudrais pas perdre de temps à patauger dans les ordures pendant que je cherche.
Au fil du temps, je me suis rendu compte que pour que le contenu soit performant dans la recherche, il doit l’être :
- Être utile.
- Satisfaire un besoin réel.
Si ce n’est pas le cas, qu’il soit produit par ordinateur ou par l’homme, il n’obtiendra aucun engagement ou validation de la part des utilisateurs finaux.
Les chances de classement et de performance sont vraiment faibles.
C’est pourquoi je préfère des techniques comme le résumé et la traduction ou la question/réponse où l’on a un plus grand contrôle sur la génération.
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
Ils peuvent vous aider à vous assurer que vous apportez une nouvelle valeur ajoutée.
Projets communautaires et ressources d’apprentissage
J’ai essayé de garder cet article léger dans le code et les explications aussi simples que possible pour permettre à plus de personnes de la communauté de se joindre à l’amusement.
Mais, si vous êtes plus technique, je pense que vous apprécierez cette explication plus granulaire et mathématique du sujet.
Assurez-vous de suivre également les liens dans la section « Lectures complémentaires » de l’article lié ci-dessus.
Maintenant, quelques nouvelles passionnantes.
J’ai demandé à la communauté de partager les projets Python sur lesquels elle travaille. J’en attendais peut-être une poignée, et j’ai été complètement époustouflé par le nombre de ceux que j’ai reçus en retour. #DONTWAIT
Celui-ci est Python et JS, mais je vais quand même le mettre là ! Extension Chrome pour lutter contre le spam sur Google Maps. Le code du serveur est en Python et fait la validation et la classification des adresses. pic.twitter.com/Rvzfr5ku4N
– zchtodd (@zchtodd) 8 juin 2020
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
1. RPA en python pour automatiser les prises d’écran répétitives https://t.co/zyaafY0bcd
2. Console de recherche API + NLP pour vérifier les pages où le mot dans le méta titre ne correspond pas aux requêtes utilisées par les visiteurs : https://t.co/KsYGds7w1r– Michael Van Den Reym (@vdrweb) 8 juin 2020
3. Vérifiez le code d’état de toutes les url avec les impressions de la console de recherche en utilisant l’API de la console de recherche https://t.co/qX0FxSoqgN
– Michael Van Den Reym (@vdrweb) 8 juin 2020
Salut Hamlet !
Je travaille sur un vérificateur de redirection avec des capacités de correspondance floue.
Il y aura une @GoogleColab mais, dans l’idéal, je voudrais aussi être déployé dans @streamlit pour que les gens puissent évaluer la qualité de leurs redirections en un seul clic, par glisser-déposer.
Je partagerai bientôt
– Charly Wargnier (@DataChaz) 9 juin 2020
@hamletbatista https://t.co/oPt5M393Lu
Il a travaillé sur ce sujet en utilisant @streamlit
Rédigez des titres Méta plus convaincants.
Vidéo explicative : https://t.co/YvVoFMQ4FS– Anubhav Bittoo Narula (@anubhavn22) 9 juin 2020
Scrapear redes sociales y pasarlo por npl o Red neuronal para saber el sentimiento del escrito y de ahí sacar gráficas con datastudio o kibana (perdona que responda en español pero mi inglés es bastante mejorable)
– JaviLázaro (@JaviLazaroSEO) 8 juin 2020
PUBLICITÉ
CONTINUER LA LECTURE CI-DESSOUS
1. Lire les fichiers journaux et afficher 5xx/4xx en temps réel pour se détendre !
2. Intention du mot-clé vs score de correspondance de l’URL.– Venus Kalra (@venuskalra) 9 juin 2020
https://t.co/9we85HXJgJ
– Marat Gaziev (@MaratGaziev) 9 juin 2020
Je suis en train de construire un paquet pour #SEOet les spécialistes du marketing en ligne, contenant entre autres
– Crawler
– robots.txt testeur
– Vérificateur du SERP
– Plan du site au convertisseur DataFrame
– Convertisseur d’URL en DataFrameet plus encore https://t.co/BMVeeQaTxE
– Elias Dabbas (@eliasdabbas) 9 juin 2020
Quelques analyses de contenu avec Beautiful Soup + l’API de la boîte de connaissances + l’API de l’entité du nuage !
– Jess mais à 2 mètres (@jessthebp) 8 juin 2020
Plus de ressources :
Crédits image
Toutes les captures d’écran prises par l’auteur, juin 2020