Inizia subitoInizia gratis

Creare chunk di testo

Il testo di Romeo and Juliet è stato caricato in un grafo lessicale con una struttura di Atti e Scene, ma il testo è ancora troppo grande per generare embedding significativi. Completa il codice per suddividere il testo dell'Atto I, Scena I in chunk più piccoli, uno per ogni battuta.

La funzione visualize_graph() mostrerà i nodi e le relazioni nel documento grafo.

Questo esercizio fa parte del corso

Graph RAG con LangChain e Neo4j

Visualizza corso

Istruzioni dell'esercizio

  • Aggiungi ogni line_node all'oggetto graph_document.
  • Crea le relazioni HAS_LINE e SPOKEN_BY rispettivamente tra ogni scene e line_node, e tra line_node e character, e aggiungile a graph_document.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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)
Modifica ed esegui il codice