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>Instructions de l’exercice
- Ajoutez chaque
line_nodeà l’objetgraph_document. - Créez des relations
HAS_LINEetSPOKEN_BYentre chaquesceneetline_node, puis entre chaqueline_nodeetcharacter, 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)