階層的なレキシカルグラフを作る
前の出力には、幕(act)以外の情報も含まれていたことに気づいたかもしれません。ナレッジグラフの抽出は、多くの場合反復的なプロセスです。テキストスプリッターの出力は、ノードやリレーションシップを作成する前に、追加の確認やフィルタリングが必要になることがよくあります。
この演習では、この追加情報を取り除き、さらにそれを使って Play ノードに接続する Act ノードを作成します。
劇を表す Node オブジェクトを格納した play_node 変数と、新たに作成するノードとリレーションシップを保持する graph_document 変数は、すでに用意されています。
この演習はコースの一部です
Graph RAG with LangChain and Neo4j
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
acts = act_splitter.split_text(romeo_and_juliet)
for i, act in enumerate(acts):
lines = act.strip().split("\n")
# Only include text relating to an act
if lines[0].startswith(____):
print(i, act.strip().split("\n")[0])