CommencerCommencez gratuitement

Créer des segments de texte

Le texte de Roméo et Juliette a été chargé dans un graphe lexical structuré en actes et scènes, mais il reste trop volumineux pour générer des embeddings pertinents. Complétez le code pour découper le texte de l’Acte I, Scène I en plus petits segments, un par réplique.

La fonction visualize_graph() affichera les nœuds et les relations du document graphe.

Cet exercice fait partie du cours

<cours>Graph RAG avec LangChain et Neo4j</cours>
Voir le cours

Instructions de l’exercice

  • Ajoutez chaque line_node à l’objet graph_document.
  • Créez des relations HAS_LINE et SPOKEN_BY entre chaque scene et line_node, puis entre chaque line_node et character, respectivement, et ajoutez-les à graph_document.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code