Tworzenie fragmentów tekstu
Tekst z Romea i Julii został wczytany do grafu leksykalnego o strukturze opartej na aktach i scenach, jednak jest nadal zbyt obszerny, aby generować na jego podstawie sensowne osadzenia (embeddings). Uzupełnij kod, aby podzielić tekst z Aktu I, Sceny I na mniejsze fragmenty — po jednym dla każdej kwestii.
Funkcja visualize_graph() wyświetla węzły i relacje w dokumencie grafu.
To ćwiczenie jest częścią kursu
Graph RAG z LangChain i Neo4j
Instrukcje do ćwiczenia
- Dodaj każdy
line_nodedo obiektugraph_document. - Utwórz relacje
HAS_LINEiSPOKEN_BY— odpowiednio między każdąscenealine_nodeoraz międzyline_nodeacharacter— i dodaj je dograph_document.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)