Tekst opdelen in chunks
De tekst uit Romeo and Juliet is geladen in een lexicaal graafmodel met een structuur van bedrijven (Acts) en scènes, maar de tekst is nog te groot om zinvolle embeddings te maken. Vul de code aan om de tekst uit Act I, Scene I op te splitsen in kleinere chunks per regel.
De functie visualize_graph() laat de knooppunten en relaties in het graafdocument zien.
Deze oefening maakt deel uit van de cursus
Graph RAG met LangChain en Neo4j
Oefeninstructies
- Voeg elke
line_nodetoe aan het objectgraph_document. - Maak respectievelijk
HAS_LINE- enSPOKEN_BY-relaties tussen elkesceneenline_node, en tussenline_nodeencharacter, en voeg ze toe aangraph_document.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
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)