-
Notifications
You must be signed in to change notification settings - Fork 0
/
page-ranker.py
51 lines (36 loc) · 1.85 KB
/
page-ranker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from createdata import crialista
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
import numpy as np
searchResult = crialista()
# Search Result Possui a Estrutura (id, titulo, descricao, link)
# Eu quero utilizando o LDA, selecionar a melhor pagina para dada pesquisa.
# Pre-processamento e extração de características com a nova estrutura
documents = [result['descricao'] for result in searchResult] # Usando apenas a descrição
# Vectorização dos documentos usando Bag of Words com as descrições
vectorizer = CountVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)
# Aplicação do LDA com a nova estrutura
lda = LatentDirichletAllocation(n_components=50, random_state=0) # Ajustar n_components conforme necessário
lda.fit(X)
# Visualização dos tópicos com a nova estrutura
topics = lda.components_
# Exibindo as palavras associadas a cada tópico com a nova estrutura
words = vectorizer.get_feature_names_out()
topic_words = {}
for topic_idx, topic in enumerate(topics):
top_words_idx = topic.argsort()[-10:][::-1] # Pegar as 10 palavras mais relevantes para o tópico
topic_words[topic_idx] = [words[i] for i in top_words_idx]
print(topic_words)
# Obtenção da distribuição de tópicos para os documentos
document_topics = lda.transform(X)
# Processamento da consulta de pesquisa
query = "ciencia"
query_vector = vectorizer.transform([query])
# Utilização do LDA para obter a distribuição de tópicos para a consulta
query_topic_distribution = lda.transform(query_vector)
# Identificando o tópico principal para a consulta
main_topic_for_query = np.argmax(query_topic_distribution)
print(query_topic_distribution)
print(f"O tópico principal para a consulta '{query}' é o Tópico {main_topic_for_query}.")
print(topic_words[main_topic_for_query])