Team I.A. Italia

5 min

Creare un sistema di raccomandazione notizie con Python

Un sistema di raccomandazione è un'applicazione popolare della Data Science.

Quasi tutti i siti Web popolari che visiti utilizzano sistemi di raccomandazione. Come suggerisce il nome, un sistema di raccomandazione di notizie è un'applicazione che consiglia articoli di notizie in base alle notizie che un utente sta già leggendo. Quindi, se vuoi imparare come creare un sistema di raccomandazione di notizie, questo articolo è per te. In questo articolo, ti illustrerò come creare un sistema di raccomandazione di notizie utilizzando Python.

Creare un sistema di raccomandazione notizie con Python

Introduzione ai sistemi di raccomandazione

Negli ultimi decenni, con l'ascesa di Youtube, Amazon, Netflix e molti altri servizi web simili, i sistemi di raccomandazione hanno preso sempre più posto nelle nostre vite. Dall'e-commerce (suggerire agli acquirenti articoli che potrebbero interessarli) alla pubblicità online (suggerire agli utenti i contenuti giusti, abbinandoli alle loro preferenze), i sistemi di raccomandazione sono oggi inevitabili nei nostri viaggi online quotidiani.

In modo molto generale, i sistemi di raccomandazione sono algoritmi volti a suggerire elementi rilevanti agli utenti (oggetti come film da guardare, testo da leggere, prodotti da acquistare o qualsiasi altra cosa a seconda dei settori).

I sistemi di raccomandazione sono davvero critici in alcuni settori in quanto possono generare un'enorme quantità di entrate quando sono efficienti o anche essere un modo per distinguersi in modo significativo dalla concorrenza. A riprova dell'importanza dei sistemi di raccomandazione, possiamo ricordare che, alcuni anni fa, Netflix ha organizzato una sfida (il "premio Netflix") in cui l'obiettivo era quello di produrre un sistema di raccomandazione che funzionasse meglio del proprio algoritmo con un premio di 1 milione di dollari da vincere.

Come funziona un sistema di raccomandazione delle notizie?

Quando visiti un sito Web, consiglia contenuti simili in base a ciò che stai già guardando o leggendo. La raccomandazione del contenuto basata sul contenuto che l'utente sta già consumando è una tecnica per creare un sistema di consigli noto come filtro basato sul contenuto.

Tutti i siti Web di notizie popolari utilizzano sistemi di raccomandazione basati sui contenuti progettati per trovare somiglianze tra le notizie che stai leggendo e altri articoli di notizie sul loro sito Web per consigliare gli articoli di notizie più simili.

Spero che ora tu abbia capito come funziona un sistema di raccomandazione delle notizie. Nella sezione seguente, ti illustrerò come creare un sistema di raccomandazione di notizie utilizzando il linguaggio di programmazione Python.

Creare un sistema di raccomandazione notizie con Python

Il set di dati che sto usando per creare un sistema di raccomandazione di notizie è di Microsoft. Poiché i dati richiedevano molta pulizia e preparazione, ho scaricato i dati e li ho preparati per creare un sistema di consigli basato sul contenuto.

Ora iniziamo con l'importazione delle librerie Python necessarie e del set di dati di cui abbiamo bisogno per costruire un sistema di raccomandazione delle notizie:

import numpy as np
 
import as pd
 
from sklearn.feature_extraction import text
 
from sklearn.metrics.pairwise import cosine_similarity
 
import plotly.express as px
 
import plotly.graph_objects as go

Nel caso non hai installato queste librerie in locale lancia questo comando sul terminale.

#per python
 
pip install numpy pandas sklearn plotly
 

 
#per python >= 3
 
pip install numpy pandas sklearn plotly
 

 
#per google colab
 
pip install numpy pandas sklearn plotly

ora carichiamo i dati

data = pd.read_csv("/content/News.csv")
 
print(data.head())

Output:

ID News Category Title \ 0 N88753 lifestyle The Brands Queen Elizabeth, Prince Charles, an... 1 N45436 news Walmart Slashes Prices on Last-Generation iPads 2 N23144 health 50 Worst Habits For Belly Fat 3 N86255 health Dispose of unwanted prescription drugs during ... 4 N93187 news The Cost of Trump's Aid Freeze in the Trenches... Summary Unnamed: 4 Unnamed: 5 \ 0 Shop the notebooks, jackets, and more that the... NaN NaN 1 Apple's new iPad releases bring big deals on l... NaN NaN 2 These seemingly harmless habits are holding yo... NaN NaN 3 NaN NaN NaN 4 Lt. Ivan Molchanets peeked over a parapet of s... NaN NaN Unnamed: 6 Unnamed: 7 0 NaN NaN 1 NaN NaN 2 NaN NaN 3 NaN NaN 4 NaN NaN

Non molto chiaro , ma abbiamo 4 colonne :

  1. ID News

  2. Categoria

  3. Titolo

  4. Riepilogo

Diamo un'occhiata alle categorie di notizie in questo set di dati:

categories = data["News Category"].value_counts()
 
label = categories.index
 
counts = categories.values
 
figure = px.bar(data, x=label,
 
y = counts,
 
title="Types of News Categories")
 
figure.show()

Output:

Creare un sistema di raccomandazione notizie con Python

Esistono due modi per creare un sistema di raccomandazioni utilizzando questo set di dati:

  1. Se scegliamo la colonna Categoria notizie come feature che utilizzeremo per trovare somiglianze, i consigli potrebbero non aiutare ad attirare l'attenzione dell'utente per un periodo di tempo più lungo. Supponiamo che un utente stia leggendo notizie sugli sport in base a una partita di cricket e riceva consigli su altri sport come il wrestling, l'hockey, il calcio ecc., che potrebbero essere inappropriati in base al contenuto che l'utente sta leggendo.

  2. L'altro modo è utilizzare il titolo o il riepilogo come funzionalità per trovare somiglianze. Fornirà consigli più accurati poiché il contenuto consigliato sarà basato sul contenuto che l'utente sta già leggendo.

Quindi possiamo utilizzare il titolo o il riepilogo dell'articolo di notizie per trovare somiglianze con altri articoli di notizie. Qui userò la colonna del titolo. Se desideri utilizzare la colonna di riepilogo, elimina prima le righe con valori nulli, poiché la colonna di riepilogo contiene più di 5000 valori nulli.

Di seguito è riportato come possiamo trovare somiglianze tra gli articoli di notizie convertendo i testi della colonna del titolo in vettori numerici e quindi trovando somiglianze tra i vettori numerici utilizzando l'algoritmo di similarità del coseno:

feature = data["Title"].tolist()
 
tfidf = text.TfidfVectorizer(input=feature, stop_words="english")
 
tfidf_matrix = tfidf.fit_transform(feature)
 
similarity = cosine_similarity(tfidf_matrix)

Ora imposterò la colonna del titolo come indice dei dati in modo da poter cercare consigli sui contenuti fornendo il titolo come input:

indices = pd.Series(data.index, index=data['Title']).drop_duplicates()

Di seguito è riportato come creare un sistema di suggerimenti per le notizie:

def news_recommendation(Title, similarity = similarity):
 
index = indices[Title]
 
similarity_scores = list(enumerate(similarity[index]))
 
similarity_scores = sorted(similarity_scores,
 
key=lambda x: x[1], reverse=True)
 
similarity_scores = similarity_scores[0:10]
 
newsindices = [i[0] for i in similarity_scores]
 
return data['Title'].iloc[newsindices]
 

Ora vediamo come usare questa magica funzione per ottenere suggerimenti sulla base di un titolo dato come input :

print(news_recommendation("Walmart Slashes Prices on Last-Generation iPads"))

Output:

1 Walmart Slashes Prices on Last-Generation iPads
 
2132 CEO slashes own salary to pay employees $70K
 
9377 Meet the Next Generation of Texas Pit Masters
 
15042 Gas Prices Drop Across Michigan
 
4511 Next-generation Kia Optima spied for the first...
 
6108 Six pack abs are the biggest scam of our gener...
 
10469 Kirby Corp. profits rise as it slashes manufac...
 
3131 NASA to show world next generation spacesuit d...
 
5240 10 Amazing Things at Walmart You Can't Buy Any...
 
7261 How To Judge The Prices Of Collector Cars
 

 
Name: Title, dtype: object

Ecco come puoi creare un sistema di raccomandazione di notizie usando il linguaggio di programmazione Python.

Riepilogo su come Creare un sistema di raccomandazione notizie con Python

Tutti i siti Web di notizie popolari utilizzano sistemi di raccomandazione basati sui contenuti progettati per trovare somiglianze tra le notizie che stai leggendo e altri articoli di notizie sul loro sito Web per consigliare gli articoli di notizie più simili. Spero che questo articolo ti sia piaciuto su come creare un sistema di raccomandazione di notizie usando Python. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.