Résumé un texte avec python 2

 

Comprendre le résumé de texte et créer votre propre résumé en python




Tout c'est tonne de livres? comment extraire automatiquement l'essentiel d'un texte ou d'un article de journal? C'est désormais possible avec l'intelligence artificielle ... 😍😉


Nous interagissons tous avec des applications qui utilisent la synthèse de texte. Beaucoup de ces applications sont destinées à la plate-forme qui publie des articles sur l'actualité quotidienne, le divertissement, le sport. Avec notre emploi du temps chargé, nous préférons lire le résumé de ces articles avant de décider de nous lancer dans la lecture de l'article en entier. La lecture d'un résumé nous aide à identifier la zone d'intérêt, donne un bref contexte de l'histoire. 😃



Le résumé peut être défini comme une tâche consistant à produire un résumé concis et fluide tout en préservant les informations clés et la signification globale.

Impact


Récapitulation de les systèmes ont souvent des preuves supplémentaires qu'ils peuvent utiliser afin de préciser les sujets les plus importants de documents (s). Par exemple, lors de la synthèse des blogs, il y a des discussions ou des commentaires après le billet de blog qui sont de bonnes sources d'informations pour déterminer quelles parties du blog sont critiques et intéressantes.


Dans la synthèse d'articles scientifiques, il existe une quantité considérable d'informations telles que des articles cités et des informations sur les conférences qui peuvent être exploitées pour identifier les phrases importantes dans l'article original.


Comment fonctionne la synthèse de texte



En général, il existe deux types de résumé, le résumé abstrait et le résumé extractif .

1. Résumé abstrait : les méthodes abstraites sélectionnent des mots sur la base d'une compréhension sémantique, même ces mots n'apparaissaient pas dans les documents source. Il vise à produire du matériel important d'une manière nouvelle. Ils interprètent et examinent le texte à l'aide de techniques avancées de langage naturel afin de générer un nouveau texte plus court qui transmet les informations les plus critiques du texte original.


Cela peut être corrélé à la façon dont l'homme lit un article de texte ou un article de blog, puis le résume dans ses propres mots.😏


Document d'entrée → comprendre le contexte → sémantique → créer son propre résumé.

2. Résumé extractif : Les méthodes extractives tentent de résumer les articles en sélectionnant un sous-ensemble de mots qui retiennent les points les plus importants.

Cette approche pondère la partie importante des phrases et utilise la même pour former le résumé. Différents algorithmes et techniques sont utilisés pour définir les poids des phrases et les classer en fonction de leur importance et de leur similitude les unes avec les autres.


Document d'entrée → similarité de phrases → phrases de poids → phrases sélectionnées avec un rang plus élevé.

L'étude limitée est disponible pour un résumé abstrait car elle nécessite une compréhension plus approfondie du texte par rapport à l'approche extractive.


Les résumés purement extractifs donnent souvent de meilleurs résultats que les résumés abstraits automatiques.😉 Cela est dû au fait que les méthodes de résumé abstraites font face à des problèmes tels que la représentation sémantique, l'inférence et la génération de langage naturel, ce qui est relativement plus difficile que les approches basées sur les données telles que l'extraction de phrases.


Il existe de nombreuses techniques disponibles pour générer une synthèse extractive. Pour rester simple, j'utiliserai une approche d' apprentissage non supervisé pour trouver la similitude des phrases et les classer. L'un des avantages de ceci sera que vous n'avez pas besoin de former et de créer un modèle avant de commencer à l'utiliser pour votre projet. 😉


Il est bon de comprendre la similarité du cosinus pour tirer le meilleur parti du code que vous allez voir. La similarité de cosinus est une mesure de similarité entre deux vecteurs non nuls d'un espace de produit interne qui mesure le cosinus de l'angle entre eux. Puisque nous représenterons nos phrases comme un groupe de vecteurs, nous pouvons l'utiliser pour trouver la similitude entre les phrases. Il mesure le cosinus de l'angle entre les vecteurs. L'angle sera de 0 si les phrases sont similaires.

Tout va bien jusqu'à maintenant..? J'espère :)👏



Ensuite, vous trouverez ci-dessous notre flux de code pour générer un texte de synthèse :

 -Saisir l'article → diviser en phrases → supprimer les mots vides → construire une matrice de similarité → générer un classement basé sur la matrice → choisir les N phrases les plus importantes pour le résumé.


Créons ces méthodes.

1. Importez toutes les bibliothèques nécessaires

de nltk.corpus importer des mots 
vides de nltk.cluster.util importer cosine_distance
importer numpy en tant que np
importer networkx en tant que nx

2. Générez des phrases claires

def read_article(file_name):
file = open(file_name, "r")
filedata = file.readlines()
article = filedata[0].split(". ")
phrases = []
pour la phrase dans l'article :
print(sentence)
sentences.append(sentence.replace("[^a-zA-Z]", " ").split(" "))
sentences.pop()

renvoie des phrases

3. Matrice de similarité

C'est là que nous utiliserons la similarité en cosinus pour trouver la similarité entre les phrases.

def build_similarity_matrix(sentences, stop_words):
# Créer une matrice de
similarité vide similarity_matrix = np.zeros((len(sentences), len(sentences)))

for idx1 in range(len(sentences)):
for idx2 in range(len( phrases)):
if idx1 == idx2: #ignore si les deux sont les mêmes phrases
continue
similarity_matrix[idx1][idx2] = phrase_similarity(sentences[idx1], sentences[idx2], stop_words)
    return similarity_matrix

4. Générer la méthode récapitulative

La méthode continuera à appeler toutes les autres fonctions d'assistance pour maintenir notre pipeline de résumé en marche. Assurez-vous de jeter un œil à tout le # Stepscode ci-dessous.

def generate_summary(file_name, top_n=5) :
stop_words = stopwords.words('english')
resume_text = []
# Étape 1 - Lire le texte et tokeniser les
phrases = read_article(file_name)
# Étape 2 - Générer des Similitudes Martix à travers les phrases
phrase_similarité_martix = build_similarity_matrix(sentences, stop_words)
# Étape 3 - Classez les phrases par similarité martix phrase_similarity_graph
= nx.from_numpy_array(sentence_similarity_martix)
scores = nx.pagerank(sentence_similarity_graph)
# Étape 4 - Triez le rang et choisissez les premières
phrasesrank_sentence = trié(((scores[i],s) for i,s in enumerate(sentences)), reverse=True)
print("Les index de l'ordre de toprank_sentence sont ", phrase_classée)
pour i dans la plage (top_n): resume_text.append
(" ".join(ranked_sentence[i][1]))
# Étape 5 - Bien sûr, affichez le résumé texr
print(" Résumez le texte : \n", ". ".join(summarize_text))

Tous réunis, voici le code complet.


# coding: utf-8
from nltk.corpus import stopwords
from nltk.cluster.util import cosine_distance
import numpy as np
import networkx as nx
def read_article(file_name):
file = open(file_name, "r")
filedata = file.readlines()
article = filedata[0].split(". ")
sentences = []
for sentence in article:
print(sentence)
sentences.append(sentence.replace("[^a-zA-Z]", " ").split(" "))
sentences.pop()
return sentences
def sentence_similarity(sent1, sent2, stopwords=None):
if stopwords is None:
stopwords = []
sent1 = [w.lower() for w in sent1]
sent2 = [w.lower() for w in sent2]
all_words = list(set(sent1 + sent2))
vector1 = [0] * len(all_words)
vector2 = [0] * len(all_words)
# build the vector for the first sentence
for w in sent1:
if w in stopwords:
continue
vector1[all_words.index(w)] += 1
# build the vector for the second sentence
for w in sent2:
if w in stopwords:
continue
vector2[all_words.index(w)] += 1
return 1 - cosine_distance(vector1, vector2)
def build_similarity_matrix(sentences, stop_words):
# Create an empty similarity matrix
similarity_matrix = np.zeros((len(sentences), len(sentences)))
for idx1 in range(len(sentences)):
for idx2 in range(len(sentences)):
if idx1 == idx2: #ignore if both are same sentences
continue
similarity_matrix[idx1][idx2] = sentence_similarity(sentences[idx1], sentences[idx2], stop_words)
return similarity_matrix
def generate_summary(file_name, top_n=5):
stop_words = stopwords.words('english')
summarize_text = []
# Step 1 - Read text anc split it
sentences = read_article(file_name)
# Step 2 - Generate Similary Martix across sentences
sentence_similarity_martix = build_similarity_matrix(sentences, stop_words)
# Step 3 - Rank sentences in similarity martix
sentence_similarity_graph = nx.from_numpy_array(sentence_similarity_martix)
scores = nx.pagerank(sentence_similarity_graph)
# Step 4 - Sort the rank and pick top sentences
ranked_sentence = sorted(((scores[i],s) for i,s in enumerate(sentences)), reverse=True)
print("Indexes of top ranked_sentence order are ", ranked_sentence)
for i in range(top_n):
summarize_text.append(" ".join(ranked_sentence[i][1]))
# Step 5 - Offcourse, output the summarize texr
print("Summarize Text: \n", ". ".join(summarize_text))
# let's begin
generate_summary( "msft.txt", 2)

Regardons-le en action.

Le texte complet d'un article intitulé Microsoft lance un hub de cloud intelligent pour améliorer les compétences des étudiants dans les technologies de l'IA et du cloud
Dans le but de créer une main-d'œuvre prête pour l'IA, Microsoft a annoncé Intelligent Cloud Hub, qui a été lancé pour doter la prochaine génération d'étudiants de compétences prêtes pour l'IA. Envisagé comme un programme collaboratif de trois ans, Intelligent Cloud Hub soutiendra environ 100 institutions avec une infrastructure d'IA, un contenu de cours et un programme, une assistance aux développeurs, des outils de développement et donnera aux étudiants un accès aux services cloud et d'IA. Dans le cadre du programme, le géant de Redmond qui souhaite étendre sa portée et envisage de créer un écosystème de développeurs solide en Inde avec le programme mettra en place l'infrastructure de base de l'IA et le hub IoT pour les campus sélectionnés. La société fournira des outils de développement d'IA et des services Azure AI tels que Microsoft Cognitive Services, Bot Services et Azure Machine Learning. Selon Manish Prakash, Country General Manager-PS, Health and Education, Microsoft India, a déclaré : « L'IA étant la technologie déterminante de notre époque, elle transforme les vies et l'industrie et les emplois de demain nécessiteront des compétences différentes. Cela nécessitera davantage de collaborations et de formations. et travailler avec l'IA. C'est pourquoi il est devenu plus essentiel que jamais pour les établissements d'enseignement d'intégrer les nouvelles technologies du cloud et de l'IA. Le programme est une tentative de renforcer la configuration institutionnelle et de renforcer les capacités des éducateurs pour former la main-d'œuvre de demain ." Le programme vise à développer les compétences cognitives et la compréhension approfondie du développement de solutions intelligentes connectées au cloud pour des applications dans l'ensemble de l'industrie. Plus tôt en avril de cette année, la société a annoncé le programme Microsoft Professional In AI comme une piste d'apprentissage ouverte au public. Le programme a été développé pour fournir des compétences prêtes à l'emploi aux programmeurs qui souhaitaient perfectionner leurs compétences en IA et en science des données avec une série de cours en ligne comprenant également des laboratoires pratiques et des instructeurs experts. Ce programme comprenait également une école d'IA axée sur les développeurs qui a fourni un tas d'atouts pour aider à développer les compétences en IA.


et le texte résumé avec 2 lignes en entrée est


Envisagé comme un programme collaboratif de trois ans, Intelligent Cloud Hub soutiendra environ 100 institutions avec une infrastructure d'IA, un contenu de cours et un programme, une assistance aux développeurs, des outils de développement et donnera aux étudiants un accès aux services cloud et d'IA. La société fournira des outils de développement d'IA et des services Azure AI tels que Microsoft Cognitive Services, Bot Services et Azure Machine Learning. Selon Manish Prakash, Country General Manager-PS, Health and Education, Microsoft India, a déclaré : « L'IA étant la technologie déterminante de notre époque, elle transforme les vies et l'industrie et les emplois de demain nécessiteront des compétences différentes.


    Comme vous pouvez le voir, il fait du très bon travail. Vous pouvez également le personnaliser pour le réduire au nombre de caractères au lieu de lignes.    

    Il est important de comprendre que nous avons utilisé textrank comme approche pour classer les phrases.TextRang ne s'appuie sur aucune donnée d'entraînement précédenteet peut travailler avec n'importe quel morceau de texte arbitraire. TextRank est un objectif généralclassement basé sur des graphiques algorithme pour la PNL.

    J'espère que vous avez aimé ce thème, n'hésitez pas de poser des questions si necessaire..


    

Commentaires

Posts les plus consultés de ce blog

Comment fonctionne l'optimise d'Adam

RESEAU DE NEURONE CONVOLUTIF

Comment utiliser les diagrammes PlantUML dans Visual Studio Code pour Windows 10