Créer des segments de texte
Le texte de Roméo et Juliette a été chargé dans un graphe lexical structuré en actes et en scènes, mais il est encore trop volumineux pour produire des embeddings pertinents. Complétez le code pour diviser 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 de graphe.
Cette activité fait partie du cours
Graph RAG avec LangChain et Neo4j
Instructions de l’exercice
- Ajoutez chaque
line_nodeà l'objetgraph_document. - Créez les relations
HAS_LINEetSPOKEN_BYentre chaquesceneetline_node, puis entreline_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)