v4 / modules /text_analysis /discourse_analysis.py
AIdeaText's picture
Update modules/text_analysis/discourse_analysis.py
5203a97 verified
raw
history blame
1.91 kB
import streamlit as st
import spacy
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from .semantic_analysis import (
create_concept_graph,
visualize_concept_graph,
identify_key_concepts,
POS_COLORS,
POS_TRANSLATIONS,
ENTITY_LABELS
)
def compare_semantic_analysis(text1, text2, nlp, lang):
"""
Realiza el análisis semántico comparativo entre dos textos
"""
doc1 = nlp(text1)
doc2 = nlp(text2)
# Identificar conceptos clave para ambos documentos
key_concepts1 = identify_key_concepts(doc1)
key_concepts2 = identify_key_concepts(doc2)
# Crear grafos de conceptos para ambos documentos
G1 = create_concept_graph(doc1, key_concepts1)
G2 = create_concept_graph(doc2, key_concepts2)
# Visualizar los grafos de conceptos
fig1 = visualize_concept_graph(G1, lang)
fig2 = visualize_concept_graph(G2, lang)
# Remover los títulos superpuestos
fig1.suptitle("")
fig2.suptitle("")
return fig1, fig2, key_concepts1, key_concepts2
def create_concept_table(key_concepts):
"""
Crea una tabla de conceptos clave con sus frecuencias
"""
df = pd.DataFrame(key_concepts, columns=['Concepto', 'Frecuencia'])
df['Frecuencia'] = df['Frecuencia'].round(2)
return df
def perform_discourse_analysis(text1, text2, nlp, lang):
"""
Realiza el análisis completo del discurso
"""
graph1, graph2, key_concepts1, key_concepts2 = compare_semantic_analysis(text1, text2, nlp, lang)
# Crear tablas de conceptos clave
table1 = create_concept_table(key_concepts1)
table2 = create_concept_table(key_concepts2)
return {
'graph1': graph1,
'graph2': graph2,
'key_concepts1': key_concepts1,
'key_concepts2': key_concepts2,
'table1': table1,
'table2': table2,
'success': True
}