Membuat potongan teks
Teks dari Romeo and Juliet telah dimuat ke dalam sebuah grafik leksikal dengan struktur Act dan Scene, tetapi teksnya masih terlalu besar untuk menghasilkan embedding yang bermakna. Lengkapi kode untuk membagi teks dari Act I, Scene I menjadi potongan yang lebih kecil untuk setiap baris.
Fungsi visualize_graph() akan menampilkan node dan relationship dalam dokumen grafik.
Latihan ini merupakan bagian dari kursus
Graph RAG dengan LangChain dan Neo4j
Instruksi latihan
- Tambahkan setiap
line_nodeke objekgraph_document. - Buat relationship
HAS_LINEdanSPOKEN_BYmasing-masing antara setiapscenedanline_node, serta antaraline_nodedancharacter, lalu tambahkan kegraph_document.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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)