Open guilhermelmagalhaes opened 1 year ago
import gensim from gensim import corpora import networkx as nx
import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize
import os
def pegarParagrafo(diretorio, arquivo): local = diretorio + "\" + arquivo try: with open(local, 'r') as arqV: conteudo = arqV.read()
paragrafos = conteudo.split('\n')
titulo = paragrafos[0]
texto = paragrafos[1]
topico = paragrafos[2]
except FileNotFoundError:
return "O arquivo não foi encontrado."
return titulo, texto, topico
def pegarTopicos(topicos): x = 0 for topico in topicos: x += 1 txt = topico.split(';') print(f"{x}: ", txt)
resumos = [] texto = [] topico = []
diretorio = 'C:\Users\natha\OneDrive\Área de Trabalho\BaseDadosResumos'
arquivos_txt = [f for f in os.listdir(diretorio) if f.endswith('.txt')]
for arquivo in arquivos_txt: caminho_arquivo = os.path.join(diretorio, arquivo)
with open(caminho_arquivo, 'r') as arquivo_txt:
conteudo = arquivo_txt.read()
resumos.append(conteudo)
paragrafo = pegarParagrafo(diretorio, arquivo)
texto.append(paragrafo[1])
topico.append(paragrafo[2])
pt = pegarTopicos(topico) ''' nltk.download('stopwords') nltk.download('punkt')
corpus = [] stop_words = set(stopwords.words('portuguese'))
for resumo in resumos: words = [word.lower() for word in word_tokenize(resumo) if word.isalpha() and word.lower() not in stop_words] corpus.append(words)
dictionary = corpora.Dictionary(corpus) corpus_bow = [dictionary.doc2bow(text) for text in corpus]
lda_model = gensim.models.LdaModel(corpus_bow, num_topics=10, id2word=dictionary, passes=15)
topics = [] for topic_id, words in lda_model.print_topics(): topic_words = words.split("+") topics.append([word.split("*")[1].strip() for word in topic_words])
G = nx.Graph()
for i, topic_words in enumerate(topics): G.add_node(i, label=" ".join(topic_words))
for i in range(len(topics)): for j in range(i + 1, len(topics)): common_words = set(topics[i]).intersection(topics[j]) similarity = len(common_words) / min(len(topics[i]), len(topics[j])) if similarity > 0.2: # Ajuste o valor de similaridade conforme necessário G.add_edge(i, j, weight=similarity)
import matplotlib.pyplot as plt
pos = nx.spring_layout(G, k=0.2) labels = nx.get_node_attributes(G, 'label') nx.draw(G, pos, labels=labels, with_labels=True, node_size=5000, font_size=10) plt.show() '''
Gabriely Camile - 821238953 Guilherme Malavolta - 82328049 Guilherme Magalhães - 319214926 Nathan Siman Teixeira - 320126372
Construir um grafo de tópicos a partir dos resumos. Cada nó no grafo deve representar um tópico identificado nos resumos. Usar técnicas de modelagem de tópicos para identificar os tópicos. As arestas no grafo devem indicar a similaridade entre os tópicos com base na frequência de palavras-chave compartilhadas.