Skapa textbitar
Texten från Romeo och Julia har laddats in i ett lexikalt graf med en struktur av akter och scener, men texten är fortfarande för stor för att generera meningsfulla inbäddningar. Komplettera koden för att dela upp texten från Akt I, Scen I i mindre bitar – en per replik.
Funktionen visualize_graph() visar noderna och relationerna i grafdokumentet.
Den här övningen är en del av kursen
Graph RAG med LangChain och Neo4j
Övningsinstruktioner
- Lägg till varje
line_nodeigraph_document-objektet. - Skapa
HAS_LINE- ochSPOKEN_BY-relationer mellan varjesceneochline_node, respektive mellanline_nodeochcharacter, och lägg till dem igraph_document.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)