EmpezarEmpieza gratis

Crear fragmentos de texto

El texto de Romeo y Julieta se ha cargado en un grafo léxico con una estructura de actos y escenas, pero el texto sigue siendo demasiado grande para generar embeddings útiles. Completa el código para dividir el texto del Acto I, Escena I en fragmentos más pequeños, uno por cada línea.

La función visualize_graph() mostrará los nodos y las relaciones del documento del grafo.

Este ejercicio forma parte del curso

Graph RAG con LangChain y Neo4j

Ver curso

Instrucciones del ejercicio

  • Añade cada line_node al objeto graph_document.
  • Crea las relaciones HAS_LINE y SPOKEN_BY entre cada scene y line_node, y entre line_node y character, respectivamente, y añádelas a graph_document.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

graph_document = GraphDocument(nodes=[scene], relationships=[])
characters = {}

for i, line in enumerate(lines[20:40]): 
    character, text = get_character_and_line(line)

    line_node = Node(type="Line", id=f"{scene.id}-line-{i}", properties={"raw": line,"character": character, "text": text, "caption": f"{text[:15]}..."})

    if character not in characters:
        character_node = Node(type="Character", id=character, properties={"name": character})
        characters[character] = character_node
        graph_document.nodes.append(character_node)

    # Add nodes to the array
    graph_document.____.append(____)

    # Add relationship to the array
    graph_document.____.extend(
        [Relationship(source=scene, target=line_node, type="____"),
        Relationship(source=line_node, target=characters[character], type="SPOKEN_BY")]
    )

visualize_graph(graph_document)
Editar y ejecutar código