# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import spacy from spacy.lang.en.stop_words import STOP_WORDS from string import punctuation from collections import Counter from heapq import nlargest ''' Paso: 1 Construcción de modelo y carga de texto a procesar ''' '''nlp = spacy.load('en_core_web_sm') ''' nlp = spacy.load('es_core_news_sm') doc = 'Dentro de los platos tradicionales y típicos de la deliciosa gastronomía lojana estan la deliciosa Cecina, este es un plato tradicional lojano que consiste en un filete muy muy fino de lomo de cerdo. El proceso de obtener el filete "finitito" se conoce como cecinar la carne y por eso recibe el nombre de Cecina. Es un plato muy tradicional en toda la provincia de Loja, y dependiendo del lugar se prepara de forma diferente. La preparación más frecuente es la de secar la cecina al sol y/o aumarla en leña, luego adobar con ajo y sal. Finalmente se asa al carbón o a la plancha. El sabor se determina por la calidad de la carne y el toque secreto lo agrega el aliño. Cuando estes en Loja, debes disfrutar una buena Cecina Lojana, mucho mejor si lo haces en el Emporio Lojano. El edificio emporio lojano, es una de las primeras edificaciones de la ciudad, su decoración simple y elegante, fiel a la Loja de antaño, es el escenario propicio para degustar buena comida en compañia de colegas, amigos y familia.' doc = nlp(doc) len(list(doc.sents)) ''' Paso: 2 Filtrado de tokens ''' keyword = [] stopwords = list(STOP_WORDS) pos_tag = ['PROPN', 'ADJ', 'NOUN', 'VERB'] for token in doc: if (token.text in stopwords or token.text in punctuation): continue if (token.pos_ in pos_tag): keyword.append(token.text) freq_word = Counter(keyword) freq_word.most_common(5) ''' Paso: 3 Normalización ''' max_freq = Counter(keyword).most_common(1)[0][1] for word in freq_word.keys(): freq_word[word] = (freq_word[word]/max_freq) freq_word.most_common(5) ''' Paso: 4 Pesado de sentencias ''' sent_strength={} for sent in doc.sents: for word in sent: if word.text in freq_word.keys(): if sent in sent_strength.keys(): sent_strength[sent]+=freq_word[word.text] else: sent_strength[sent]=freq_word[word.text] print (sent_strength) ''' Paso: 5 Resumir el texto en precesamiento ''' summarized_sentences = nlargest(3, sent_strength, key=sent_strength.get) print(summarized_sentences) print(summarized_sentences[0]) final_sentences = [w.text for w in summarized_sentences] summary = ' '.join(final_sentences) print (summary)