def obter_temas_importantes(self): lista_h2_todos = set() for site in self.obter_sites_indexados(): for h2 in site.obter_subtitulos_h2(): lista_h2_todos.add(h2.lower().strip()) lista_h2_usar = set() doc_chave = nlp(self.palavra_chave) # for h2 in lista_h2_todos: # for h2_tp in lista_h2_todos: # doc1 = nlp(h2) # doc2 = nlp(h2_tp) # similiaridade = doc1.similarity(doc2) # if similiaridade < 0.8: # similiaridade = doc_chave.similarity(doc1) # print(similiaridade) # if similiaridade >= 0.6: # lista_h2_usar.add(h2) lista_retorno = [] for h2 in lista_h2_todos: doc1 = nlp(h2) similiaridade = doc_chave.similarity(doc1) if similiaridade > 0.48 and len(h2.split()) >= 3: lista_retorno.append([h2, similiaridade]) return lista_retorno
def obter_setencas_similares(self, valor_similaridade=0.4, palavra_chave_local=None, verifica_chave=True): if (palavra_chave_local != None): palavra_chave = palavra_chave_local doc_chave = nlp(palavra_chave_local) else: palavra_chave = self.palavra_chave doc_chave = nlp(self.palavra_chave) lista = [] for sentenca in self.obter_sentencas_dos_textos(): doc_sentenca = nlp(sentenca) similaridade = doc_chave.similarity(doc_sentenca) if similaridade > valor_similaridade: if verifica_chave: if palavra_chave in sentenca: lista.append([sentenca, similaridade]) else: lista.append([sentenca, similaridade]) return lista
def obter_titulo_h1(self): lista = [] doc_chave = nlp(self.palavra_chave) similaridade = 0 artigo = self.sopa.find("body") h1 = "- - - - - - - " if artigo != None: h1 = artigo.find("h1") doc_titulo = nlp(h1.text.strip()) similaridade = doc_chave.similarity(doc_titulo) return str([h1.text.strip(), round(similaridade, 2)])
def lemmatization(texts, allowed_postags): """https://spacy.io/api/annotation""" texts_out = [] for sent in texts: doc = nlp(" ".join(sent)) texts_out.append( [token.lemma_ for token in doc if token.pos_ in allowed_postags]) return np.array(texts_out)
def lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV']): """https://spacy.io/api/annotation""" texts_out = [] for sent in texts: doc = nlp(" ".join(sent)) texts_out.append( [token.lemma_ for token in doc if token.pos_ in allowed_postags]) return texts_out
def lemmatization(texts, allowed_postags): """https://spacy.io/api/annotation""" texts_out = {} for k, sent in texts.items(): doc = nlp(" ".join(sent)) # texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags]) texts_out[k] = [ token.lemma_ for token in doc if token.pos_ in allowed_postags ] return texts_out
def obter_frequencia_com_maior_similaridade(self, total=50, valor_similaridade=0.4): lista_dados = [] doc_chave = nlp(self.palavra_chave) for palavra, frequencia in self.obter_frequencia_palavras_stopwords( total): doc_palavra = nlp(palavra) if palavra not in self.palavra_chave: similaridade = doc_chave.similarity(doc_palavra) if similaridade > valor_similaridade: lista_dados.append( [palavra, frequencia, float(round(similaridade, 2))]) return lista_dados
def obter_similaridade_geral_do_texto(self): doc_chave = nlp(self.palavra_chave) doc_texto = nlp(self.obter_artigo_texto()) similaridade = doc_chave.similarity(doc_texto) return float(round(similaridade, 2))