Text in Chunks aufteilen
Der Text aus Romeo and Juliet wurde in einen lexikalischen Graphen mit einer Struktur aus Akten und Szenen geladen, aber der Text ist noch zu groß, um sinnvolle Embeddings zu erzeugen. Vervollständige den Code, um den Text aus Akt I, Szene I zeilenweise in kleinere Chunks zu splitten.
Die Funktion visualize_graph() zeigt die Knoten und Beziehungen im Graph-Dokument an.
Diese Übung ist Teil des Kurses
<Kurs>Graph RAG mit LangChain und Neo4j</Kurs>Übungsanweisungen
- Hänge jeden
line_nodean das Objektgraph_documentan. - Erstelle
HAS_LINE- undSPOKEN_BY-Beziehungen jeweils zwischensceneundline_nodesowie zwischenline_nodeundcharacter, und füge sie zugraph_documenthinzu.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)