Comment utiliser les entités Google et GPT-4 pour créer des plans d’articles

Dans cet article, vous apprendrez à utiliser le grattage et le Knowledge Graph de Google pour effectuer une ingénierie automatisée des invites qui génère un plan et un résumé pour un article qui, s’il est bien écrit, contiendra de nombreux ingrédients clés pour bien se classer.

À la base des choses, nous disons à GPT-4 de produire un plan d’article basé sur un mot-clé et les principales entités qu’ils ont trouvées sur une page bien classée de votre choix.

Les entités sont classées par leur score de saillance.

« Pourquoi le score de saillance ? » vous pourriez demander.

Google décrit la saillance dans leur Documentation sur l’API comme:

« Le score de saillance d’une entité fournit des informations sur l’importance ou la centralité de cette entité dans l’ensemble du texte du document. Les scores plus proches de 0 sont moins saillants, tandis que les scores plus proches de 1,0 sont très saillants.

Cela semble être une assez bonne mesure à utiliser pour influencer les entités qui devraient exister dans un contenu que vous pourriez vouloir écrire, n’est-ce pas ?

Commencer

Vous pouvez procéder de deux manières :

  • Passez environ 5 minutes (peut-être 10 si vous avez besoin de configurer votre ordinateur) et exécutez les scripts depuis votre machine, ou…
  • Passez au Colab J’ai créé et commencé à jouer tout de suite.

Je suis partisan du premier, mais j’ai aussi sauté sur un Colab ou deux dans ma journée. 😀

En supposant que vous êtes toujours là et que vous souhaitez configurer cela sur votre propre machine mais que vous n’avez pas encore installé Python ou un IDE (environnement de développement intégré), je vous dirigerai d’abord vers une lecture rapide sur configurer votre machine pour utiliser Jupyter Notebook. Cela ne devrait pas prendre plus de 5 minutes environ.

Maintenant, il est temps d’y aller !

Utiliser des entités Google et GPT-4 pour créer des plans d’articles

Pour rendre cela facile à suivre, je vais formater les instructions comme suit :

  • Marcher: Une brève description de l’étape où nous en sommes.
  • Code: Le code pour terminer cette étape.
  • Explication: Une courte explication de ce que fait le code.

Étape 1 : Dites-moi ce que vous voulez

Avant de plonger dans la création des contours, nous devons définir ce que nous voulons.

query = input ("What do you want to rank for :") 
print(query) 
url = input("What URL should I be inspired by : ") 
print(url)

Lorsqu’il est exécuté, ce bloc invitera l’utilisateur (probablement vous) à entrer la requête pour laquelle vous souhaitez que l’article soit classé / à propos de, ainsi qu’à vous donner un endroit pour mettre l’URL d’un article que vous aimeriez que votre pièce dont il faut s’inspirer.

Je suggérerais un article qui se classe bien, est dans un format qui fonctionnera pour votre site et qui, selon vous, mérite bien le classement en fonction de la valeur de l’article et pas seulement de la force du site.

Une fois exécuté, il ressemblera à :

Étape 2 : Installation des bibliothèques requises

Ensuite, nous devons installer toutes les bibliothèques que nous utiliserons pour que la magie opère.

!pip install google-cloud-language beautifulsoup4 openai
!pip install wandb --upgrade
!pip install --force-reinstall -Iv protobuf==3.20.00

import requests
import json
from bs4 import BeautifulSoup
from google.cloud import language_v1
from google.oauth2 import service_account
import os
import openai
import pandas as pd
import wandb

Nous installons les bibliothèques suivantes :

  • Demandes: Cette bibliothèque permet de faire des requêtes HTTP pour récupérer du contenu à partir de sites Web ou d’API Web.
  • JSON: Il fournit des fonctions pour travailler avec les données JSON, y compris l’analyse des chaînes JSON en objets Python et la sérialisation des objets Python en chaînes JSON.
  • BelleSoupe: Cette bibliothèque est utilisée à des fins de grattage Web. Il aide à analyser et à naviguer dans les documents HTML ou XML et à en extraire les informations pertinentes.
  • Google.cloud.language_v1: Il s’agit d’une bibliothèque de Google Cloud qui fournit des capacités de traitement du langage naturel. Il permet d’effectuer diverses tâches telles que l’analyse des sentiments, reconnaissance d’entitéet analyse syntaxique sur des données textuelles.
  • Google.oauth2.service_account: Cette bibliothèque fait partie du package Google OAuth2 Python. Il prend en charge l’authentification auprès des API Google à l’aide d’un compte de service, ce qui permet d’accorder un accès limité aux ressources d’un projet Google Cloud.
  • SE: Cette bibliothèque permet d’interagir avec le système d’exploitation. Il permet d’accéder à diverses fonctionnalités telles que les opérations sur les fichiers, les variables d’environnement et la gestion des processus.
  • OpenAI: Cette bibliothèque est le package OpenAI Python. Il fournit une interface pour interagir avec les modèles de langage d’OpenAI, y compris GPT-4 (et 3). Il permet aux développeurs de générer du texte, d’effectuer des complétions de texte, etc.
  • Pandas: C’est une bibliothèque puissante pour la manipulation et l’analyse de données. Il fournit des structures de données et des fonctions pour gérer et analyser efficacement des données structurées, telles que des tableaux ou des fichiers CSV.
  • Baguette B: Cette bibliothèque signifie « Weights & Biases » et est un outil de suivi et de visualisation des expériences. Il permet de consigner et de visualiser les métriques, les hyperparamètres et d’autres aspects importants des expériences d’apprentissage automatique.

Lorsqu’il est exécuté, il ressemble à ceci :

Installation des bibliothèques requises

Recevez la newsletter quotidienne sur laquelle les spécialistes du marketing de recherche comptent.


Étape 3 : Authentification

Je vais devoir nous écarter un moment pour partir et mettre en place notre authentification. Nous aurons besoin d’une clé API OpenAI et des informations d’identification Google Knowledge Graph Search.

Cela ne prendra que quelques minutes.

Obtenir votre API OpenAI

À l’heure actuelle, vous devez probablement rejoins liste d’attente. J’ai la chance d’avoir accès à l’API tôt, et j’écris donc ceci pour vous aider à vous installer dès que vous l’aurez.

Les images d’inscription proviennent de GPT-3 et seront mises à jour pour GPT-4 une fois que le flux sera disponible pour tous.

Avant de pouvoir utiliser GPT-4, vous aurez besoin d’une clé API pour y accéder.

Pour en obtenir un, rendez-vous simplement sur La page produit d’OpenAIet cliquez Commencer.

Page produit OpenAI

Choisissez votre méthode d’inscription (j’ai choisi Google) et exécutez le processus de vérification. Vous aurez besoin d’accéder à un téléphone pouvant recevoir des SMS pour cette étape.

Une fois cette opération terminée, vous allez créer une clé API. C’est ainsi qu’OpenAI peut connecter vos scripts à votre compte.

Ils doivent savoir qui fait quoi et déterminer si et combien ils doivent vous facturer pour ce que vous faites.

Tarification OpenAI

Lors de votre inscription, vous obtenez un crédit de 5 $ qui vous mènera étonnamment loin si vous ne faites qu’expérimenter.

Au moment d’écrire ces lignes, le passé de prix qui est :

Tarification OpenAI

Création de votre clé OpenAI

Pour créer votre clé, cliquez sur votre profil en haut à droite et choisissez Afficher les clés API.

Création de votre clé OpenAI

…puis vous créerez votre clé.

Création de votre clé OpenAI

Une fois que vous fermez la visionneuse, vous ne pouvez pas voir votre clé et vous devrez la recréer, donc pour ce projet, copiez-la simplement dans un document Bloc-notes pour l’utiliser sous peu.

Note: N’enregistrez pas votre clé (un document Bloc-notes sur votre bureau n’est pas hautement sécurisé). Une fois que vous l’avez utilisé momentanément, fermez le document du Bloc-notes sans l’enregistrer.

Obtenir votre authentification Google Cloud

Tout d’abord, vous devrez vous connecter à votre compte Google. (Vous êtes sur un site SEO, donc je suppose que vous en avez un. 🙂)

Une fois que vous avez fait cela, vous pouvez revoir le Informations sur l’API Knowledge Graph si vous vous sentez si enclin ou accéder directement à la console API et allez-y.

Une fois que vous êtes sur la console :

Obtenir votre authentification Google Cloud

Nommez-le quelque chose comme « Les articles géniaux de Dave ». Vous savez… facile à retenir.

Ensuite, vous activerez l’API en cliquant sur Activer les API et les services.

Google Cloud - Activer les API et les services

Recherchez l’API Knowledge Graph Search et activez-la.

API de recherche Google Cloud Knowledge Graph

Vous serez ensuite redirigé vers la page principale de l’API, où vous pourrez créer des identifiants :

Page de l'API de recherche Google Cloud Knowledge Graph

Et nous allons créer un compte de service.

Google Cloud Knowledge Graph Search - gérer le compte de service

Créez simplement un compte de service :

Google Cloud Knowledge Graph Search - création d'un compte de service

Remplissez les informations requises :

Google Cloud Knowledge Graph Search - Détails du compte de service

(Vous devrez lui donner un nom et lui accorder des privilèges de propriétaire.)

Nous avons maintenant notre compte de service. Il ne reste plus qu’à créer notre clé.

Cliquez sur les trois points sous Actions et cliquez Gérer les clés.

Google Cloud Knowledge Graph Search – Gérer les clés

Cliquez sur Ajouter une clé alors Créer une nouvelle clé:

Google Cloud Knowledge Graph Search - Créer de nouvelles clés

Le type de clé sera JSON.

Immédiatement, vous le verrez télécharger vers votre emplacement de téléchargement par défaut.

Cette clé donnera accès à vos API, alors gardez-la en sécurité, tout comme votre API OpenAI.

D’accord… et nous sommes de retour. Prêt à continuer avec notre script ?

Maintenant que nous les avons, nous devons définir notre clé API et le chemin d’accès au fichier téléchargé. Le code pour faire cela est :

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = '/PATH-TO-FILE/FILENAME.JSON'
%env OPENAI_API_KEY=YOUR_OPENAI_API_KEY
openai.api_key = os.environ.get("OPENAI_API_KEY")

vous remplacerez YOUR_OPENAI_API_KEY avec votre propre clé.

Vous remplacerez également /PATH-TO-FILE/FILENAME.JSON avec le chemin d’accès à la clé de compte de service que vous venez de télécharger, y compris le nom du fichier.

Exécutez la cellule et vous êtes prêt à passer à autre chose.

Etape 4 : Créer les fonctions

Ensuite, nous allons créer les fonctions pour :

  • Grattez la page Web que nous avons entrée ci-dessus.
  • Analysez le contenu et extrayez les entités.
  • Générez un article en utilisant GPT-4.
#The function to scrape the web page
def scrape_url(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    paragraphs = soup.find_all("p")
    text = " ".join([p.get_text() for p in paragraphs])
    return text
#The function to pull and analyze the entities on the page using Google's Knowledge Graph API
def analyze_content(content):
    client = language_v1.LanguageServiceClient()
    response = client.analyze_entities(
        request={"document": language_v1.Document(content=content, type_=language_v1.Document.Type.PLAIN_TEXT), "encoding_type": language_v1.EncodingType.UTF8}
    )
    top_entities = sorted(response.entities, key=lambda x: x.salience, reverse=True)[:10]
    for entity in top_entities:
        print(entity.name)   
    return top_entities
#The function to generate the content
def generate_article(content):
    openai.api_key = os.environ["OPENAI_API_KEY"]
    response = openai.ChatCompletion.create(
        messages = [{"role": "system", "content": "You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well."},
                  {"role": "user", "content": content}],
        model="gpt-4",
        max_tokens=1500, #The maximum with GPT-3 is 4096 including the prompt
        n=1, #How many results to produce per prompt
        #best_of=1 #When n>1 completions can be run server-side and the "best" used
        stop=None,
        temperature=0.8 #A number between 0 and 2, where higher numbers add randomness
)
    return response.choices[0].message.content.strip()

C’est à peu près exactement ce que décrivent les commentaires. Nous créons trois fonctions aux fins décrites ci-dessus.

Les yeux perçants remarqueront :

message = [{"role": "system", "content": "You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well."},

You can edit the content (You are a highly skilled writer, and you want to produce articles that will appeal to users and rank well.) and describe the role you want ChatGPT to take. You can also add tone (e.g., “You are a friendly writer …”).

Step 5: Scrape the URL and print the entities

Now we’re getting our hands dirty. It’s time to:

  • Scrape the URL we entered above.
  • Pull all the content that lives within paragraph tags.
  • Run it through Google Knowledge Graph API.
  • Output the entities for a quick preview. 

Basically, you want to see anything at this stage. If you see nothing, check a different site.

content = scrape_url(url)
entities = analyze_content(content)

You can see that line one calls the function that scrapes the URL we first entered. The second line analyzes the content to extract the entities and key metrics. 

Part of the analyze_content function also prints a list of the entities found for quick reference and verification.

Step 6: Analyze the entities

When I first started playing around with the script, I started with 20 entities and quickly discovered that’s usually too many. But is the default (10) right?

To find out, we’ll write the data to W&B Tables for easy assessment. It’ll keep the data indefinitely for future evaluation. 

First, you’ll need to take about 30 seconds to sign up. (Don’t worry, it’s free for this type of thing!) You can do so at https://wandb.ai/site.

Once you’ve done that, the code to do this is:

run = wandb.init(project="Article Summary With Entities")      
columns=["Name", "Salience"]
ent_table = wandb.Table(columns=columns) pour l'entité dans les entités : ent_table.add_data(entity.name, entity.salience) run.log({"Entity Table": ent_table}) wandb.finish()

Une fois exécuté, le résultat ressemble à ceci :

Écrire les métriques de l'entité à W&B pour analyse

Et lorsque vous cliquez sur le lien pour afficher votre course, vous trouverez :

Tableau des entités

Vous pouvez constater une baisse du score de saillance. N’oubliez pas que ce score calcule l’importance de ce terme pour la page, et non pour la requête.

Lors de l’examen de ces données, vous pouvez choisir d’ajuster le nombre d’entités en fonction de la pertinence ou simplement lorsque vous voyez apparaître des termes non pertinents.

Pour ajuster le nombre d’entités, dirigez-vous vers la cellule des fonctions et modifiez :

Tableau des entités

Vous devrez ensuite exécuter à nouveau la cellule et celle que vous avez exécutée pour gratter et analyser le contenu afin d’utiliser le nouveau nombre d’entités.

Étape 7 : Générer le plan de l’article

Le moment que vous attendiez tous, il est temps de générer le plan de l’article.

Cela se fait en deux parties. Tout d’abord, nous devons générer l’invite en ajoutant la cellule :

entity_names = [entity.name for entity in entities]
gpt_prompt = f"Create an outline for an article about {query} that includes the following entities: {', '.join(entity_names)}."
print(gpt_prompt)

Cela crée essentiellement une invite pour générer un article :

Générer une invite de présentation d'article

Et puis, il ne reste plus qu’à générer le plan de l’article en utilisant ce qui suit :

generated_article = generate_article(gpt_prompt)
print(generated_article)

Ce qui produira quelque chose comme :

Générer le plan de l'article

Et si vous souhaitez également obtenir un résumé rédigé, vous pouvez ajouter :

gpt_prompt2 = f"Write an article summary about {query} for an article with an outline of: {generated_article}."
generated_article = generate_article(gpt_prompt2)
print(generated_article)

Ce qui produira quelque chose comme :

Générer le résumé de l'article

Les opinions exprimées dans cet article sont celles de l’auteur invité et pas nécessairement Search Engine Land. Les auteurs du personnel sont répertoriés ici.

Newsletter

Rejoignez notre newsletter pour des astuces chaque semaine