File size: 1,913 Bytes
c7f1f5b 957c8b2 c7f1f5b 957c8b2 c7f1f5b 957c8b2 |
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 52 |
import streamlit as st
import spacy
import networkx as nx
import matplotlib.pyplot as plt
from collections import defaultdict
from .semantic_analysis import (
create_concept_graph,
visualize_concept_graph,
identify_and_contextualize_entities,
POS_COLORS,
POS_TRANSLATIONS,
ENTITY_LABELS
)
def compare_semantic_analysis(text1, text2, nlp, lang):
doc1 = nlp(text1)
doc2 = nlp(text2)
# Identificar entidades y conceptos clave para ambos documentos
entities1, key_concepts1 = identify_and_contextualize_entities(doc1, lang)
entities2, key_concepts2 = identify_and_contextualize_entities(doc2, lang)
# Crear grafos de conceptos para ambos documentos
concepts1 = [concept for concept, _ in key_concepts1]
concepts2 = [concept for concept, _ in key_concepts2]
G1 = create_concept_graph(text1, concepts1)
G2 = create_concept_graph(text2, concepts2)
# Visualizar los grafos de conceptos
fig1 = visualize_concept_graph(G1, lang)
fig2 = visualize_concept_graph(G2, lang)
# Añadir títulos específicos para cada documento
fig1.suptitle("Documento 1: Relaciones Conceptuales", fontsize=16, fontweight='bold')
fig2.suptitle("Documento 2: Relaciones Conceptuales", fontsize=16, fontweight='bold')
return fig1, fig2, entities1, entities2, key_concepts1, key_concepts2
def perform_discourse_analysis(text1, text2, nlp, lang):
graph1, graph2, entities1, entities2, key_concepts1, key_concepts2 = compare_semantic_analysis(text1, text2, nlp, lang)
# Aquí puedes añadir más análisis de discurso si lo necesitas
# Por ejemplo, podrías comparar las entidades y conceptos clave entre los dos textos
return {
'graph1': graph1,
'graph2': graph2,
'entities1': entities1,
'entities2': entities2,
'key_concepts1': key_concepts1,
'key_concepts2': key_concepts2
} |