ÎncepețiÎncepe gratuit

Crearea fragmentelor de text

Textul din Romeo și Julieta a fost încărcat într-un graf lexical cu o structură de Acte și Scene, însă textul este încă prea mare pentru a genera încorporări (embeddings) relevante. Completează codul pentru a împărți textul din Actul I, Scena I în fragmente mai mici, câte unul pentru fiecare replică.

Funcția visualize_graph() va afișa nodurile și relațiile din documentul de graf.

Acest exercițiu face parte din cursul

Graph RAG cu LangChain și Neo4j

Vezi cursul

Instrucțiuni pentru exercițiu

  • Adaugă fiecare line_node la obiectul graph_document.
  • Creează relațiile HAS_LINE și SPOKEN_BY între fiecare scene și line_node, respectiv între line_node și character, și adaugă-le la graph_document.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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)
Editează și rulează codul