텍스트 청크 만들기
Romeo and Juliet의 텍스트가 막(Act)과 장(Scene) 구조의 렉시컬 그래프로 로드되어 있지만, 아직 임베딩을 만들기에는 텍스트가 너무 큽니다. 1막 1장의 텍스트를 각 대사 줄(line) 단위의 더 작은 청크로 나누도록 코드를 완성하세요.
visualize_graph() 함수는 그래프 문서의 노드와 관계를 시각화해 보여줍니다.
이 연습은 강의의 일부입니다
LangChain과 Neo4j로 배우는 Graph RAG
연습 안내
- 각
line_node를graph_document객체에 추가하세요. - 각
scene과line_node, 그리고line_node와character사이에 각각HAS_LINE및SPOKEN_BY관계를 생성하고graph_document에 추가하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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)