Aan de slagBegin gratis

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

Bekijk cursus

Oefeninstructies

  • Voeg elke line_node toe aan het object graph_document.
  • Maak respectievelijk HAS_LINE- en SPOKEN_BY-relaties tussen elke scene en line_node, en tussen line_node en character, en voeg ze toe aan graph_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)
Code bewerken en uitvoeren