• Moderatore

    Google NLP API per la SEO (entity optimization)

    In un video un video pubblicato di recente (una panoramica sull’“ecosistema liquido” di Google nel 2021), @giorgiotave , accenna rapidamente al passage ranking, la capacità di posizionare passaggi provenienti da testi destrutturati, o malamente strutturati (niente H per es.). Se da un lato è vero che Google è più “stupido” di quanto talvolta si favoleggi, resta il fatto che è in grado di estrarre entità presenti in un testo (persone, luoghi, brand, ma anche concetti).

    È molto istruttivo usare le NLP (natural language processing) API di Google perché permettono di osservare come google interpreta un nostro testo, senza alcun elemento di markup o di contesto (la sua presenza su un sito). https://cloud.google.com/natural-language#natural-language-api-demo

    Editare il testo ha un impatto immediato sia sulla categorizzazione che sulla salienza delle entità estratte (che nulla ha a che fare con la frequenza con cui l’entità appare nel teso) e questo permette una sua ottimizzazione nell’ottica della comprensibilità proprio per google. Un testo che immaginavamo ottimizzato su un certo topic, agli occhi di google potrebbe non esserlo.

    Un passaggio importante dell’editing è quello di riconciliare entità duplicate, ossia estratte da Google come fossero diverse fra loro. La struttura della frase, la sintassi, è fondamentale al fine di questa riconciliazione, e non ha senso spingersi troppo il là o si rischia di produrre un testo adatto a un bambino di 5 anni.
    Al di là dell’analisi di un singolo testo. Cosa che ci permette di fare la demo delle NLP API
    Una piccola applicazione in python, realizzata da Charly Wargnier e “impacchettata” su Streamlit (https://streamea-entity-analyzer.herokuapp.com/) ci consente di analizzare l’entity gap fra due articoli fornendo i rispettivi URL (per es. il nostro articolo e quello di un competitor posizionato sopra di noi).
    Il tool funziona inserendo le credenziali per l’uso delle NLP API (creare un progetto su Google cloud, attivare le API, generare il file JSON da usare come key).

    I risultati sono organizzati in delle tabelle e consentono di vedere quali sono le entità (con le rispettive salienze) riconosciute in un articolo e non nell’altro. Questo tipo di analisi permette di vedere come Google interpreta il significato dei 2 articoli e di riorientare la propria entity strategy ottimizzando di conseguenza.
    Anche la categorizzazione è molto importante. Quanto una pagina che parla di una particolare dieta viene interpretata come medica e quanto come appartenente alla categoria food/drink? Se siamo interessati alla prima opzione e Google “legge” l’opposto, vuol dire che magari abbiamo esagerato con gli esempi di ricette per quella dieta e avremmo dovuto parlare in termini più “medici”, usando le entità appropriate.

    E non solo, una volta ottimizzato il testo, e osservato che Google lo interpreta come vorremmo, possiamo esplicitare le entità di cui trattiamo, aggiungendole ai nostri dati strutturati (Schema), per es. nel caso di article o blogPosting, ricorrendo alle property about (1-2 entità principali, quelle con una salienza sempre maggiore di 50) e mention per le entità secondarie, ma comunque centrali per il nostro articolo; Oppure, se si tratta di una person (in una pagina biografia dell’autore) con la property knowsAbout.

    Per inserire le entità in schema è importante fornire a Google un riferimento autorevole (attraverso sameAs) che punti a wikipedia/wikidata/Dbpedia/Freebase o anche db più piccoli e verticali (techcrunch, iMDB ecc.) in modo da corroborare la comprensione dell’entità eliminando possibili ambiguità. Purtroppo le NLP API di Google linkano solo wikipedia quindi gli altri db vanno interrogati manualmente.

    Per semplificare questo time-consuming task, sto sviluppando una piccola app che, partendo da un URL, estragga le entità e fornisca direttamente i link ai vari DB, permettendo anche di scaricare il file in JSON-LD per inserirlo nel proprio schema. Sono ancora indeciso se usare come punto di partenza le API di google per l’estrazione e altre API per il linking. Ci sono API molto migliori di quelle di Google nel compiti di NRE ma è con google che abbiamo a che fare a forse è da lì che conviene partire.

    Questa è sono una rapidissima incursione che scalfisce appena il mondo della seo semantica (scordate le LSI keyword, quella roba no c’entra e non è usata da Google) e della entity optimization. Ricordo un tweet di un mesetto fa di Bill Slawski che diceva più o meno “ho studiato per 20 anni data retrieval, se cominciassi oggi studierei information extraction [entity-extraction] e la loro organizzazione in knowledge graph”.

    Voi che ne dite? Avete esperienza di ottimizzazione per entità, o strategie di content elaborate a partire dalle entità rispetto alle quali si vuole risultare autorevoli.


    MaxxG 1 Risposta
  • Moderatore

    Giusto per disambiguare. Se ci riferiamo alle APi di google entità sono tutte le parole estratte. Altre API preferiscono distinguere fra parole ed entità, considerando le seconde solo quelle che hanno una entri in uno dei DB del Linked Open Data Cloud a cui facevo riferimento prima.
    Se le entità per noi più rilevanti non sono presenti nulla vieta di andarle a creare su wikidata, nel massimo rispetto e consapevolezza che stiamo usando una risorsa pubblica molto importante che Google sfrutta per costruire il suo KG. spesso per definire un'entità su wikidata è necessario creare altre entità necessarie a definirla. Per esempio se definiamo un libro sarà necessario indicare l'editore, e se questo non è presente su wikidata va a sua volta creato.