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
Istruzioni dell'esercizio
- Aggiungi ogni
line_nodeall'oggettograph_document. - Crea le relazioni
HAS_LINEeSPOKEN_BYrispettivamente tra ognisceneeline_node, e traline_nodeecharacter, e aggiungile agraph_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)