From 45baa02963a4b5ce36bd7452243751942a2bed71 Mon Sep 17 00:00:00 2001 From: Tomaz Bratanic Date: Mon, 29 Jul 2024 19:23:24 +0200 Subject: [PATCH] retriever --- msft_graphrag/ms_graphrag_retriever.ipynb | 1075 +++++++++++++++++++++ 1 file changed, 1075 insertions(+) create mode 100644 msft_graphrag/ms_graphrag_retriever.ipynb diff --git a/msft_graphrag/ms_graphrag_retriever.ipynb b/msft_graphrag/ms_graphrag_retriever.ipynb new file mode 100644 index 0000000..a018ab0 --- /dev/null +++ b/msft_graphrag/ms_graphrag_retriever.ipynb @@ -0,0 +1,1075 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 159, + "id": "c5a1cd8f-9443-4b5d-aa04-00d81c12d35e", + "metadata": {}, + "outputs": [], + "source": [ + "from neo4j import GraphDatabase, Result\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import tiktoken\n", + "import numpy as np\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "from typing import Dict, Any\n", + "\n", + "# Adjust pandas display settings\n", + "pd.set_option('display.max_colwidth', None) # Set to None to display the full column width\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "NEO4J_URI=\"bolt://localhost\"\n", + "NEO4J_USERNAME=\"neo4j\"\n", + "NEO4J_PASSWORD=\"password\"\n", + "\n", + "driver = GraphDatabase.driver(NEO4J_URI, auth=(NEO4J_USERNAME, NEO4J_PASSWORD))" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "5a4d6914-4b50-41ed-a1ab-2f3c0b52b404", + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "OpenAI API Key: ········\n" + ] + } + ], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "e63a96a3-2ae8-4a1f-9dde-7289ba26653c", + "metadata": {}, + "outputs": [], + "source": [ + "def num_tokens_from_string(string: str, model: str = \"gpt-4o\") -> int:\n", + " \"\"\"Returns the number of tokens in a text string.\"\"\"\n", + " encoding = tiktoken.encoding_for_model(model)\n", + " num_tokens = len(encoding.encode(string))\n", + " return num_tokens\n", + "\n", + "def db_query(cypher:str,params: Dict[str, Any] = {}) -> pd.DataFrame:\n", + " \"\"\"Executes a Cypher statement and returns a DataFrame\"\"\"\n", + " return driver.execute_query(cypher,\n", + " parameters_=params,\n", + " result_transformer_=Result.to_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "id": "0038386e-53db-4415-8c60-2cfeef4ec9f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
token_countcount
0300230
11551
\n", + "
" + ], + "text/plain": [ + " token_count count\n", + "0 300 230\n", + "1 155 1" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"MATCH (n:__Chunk__) RETURN n.n_tokens as token_count, count(*) AS count\")" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "id": "1ad653a6-ae66-4740-9a29-2e10c5110b79", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescription
0PROJECT GUTENBERGProject Gutenberg is a pioneering organization dedicated to the free distribution of electronic works, with a focus on those not protected by U.S. copyright law. It was initiated by Professor Michael S. Hart and is supported by a network of volunteers and the Gutenberg Literary Archive Foundation. The organization's mission is to increase the number of public domain and licensed works freely distributed in machine-readable form, thereby promoting free access to literature and electronic works. Project Gutenberg owns a compilation copyright in its collection of electronic works, ensuring their accessibility while requiring compliance with specific copyright and distribution guidelines outlined in their license agreement.\\n\\nFor over forty years, Project Gutenberg has been creating and distributing eBooks, offering a vast array of works in various formats, including 'Plain Vanilla ASCII'. Its collection includes notable titles like 'A Christmas Carol', available for free under a license that allows copying, giving away, and re-using with almost no restrictions. The organization operates globally, emphasizing copyright status and adherence to its license, which includes a system of royalty payments and refunds under certain conditions. Project Gutenberg's main search facility is accessible through its website, www.gutenberg.org, facilitating easy access to its extensive library.\\n\\nProject Gutenberg is committed to keeping its collection freely available for future generations, supported by donations and the efforts of its volunteer network. It promotes the creation, modification, and redistribution of eBooks, especially focusing on works that allow for free copying and distribution in the United States under specific terms. The organization is described as being focused on promoting free access to electronic works, ensuring that literature remains accessible to the public while keeping its name associated with shared works in compliance with its agreement.
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 PROJECT GUTENBERG \n", + "\n", + " description \n", + "0 Project Gutenberg is a pioneering organization dedicated to the free distribution of electronic works, with a focus on those not protected by U.S. copyright law. It was initiated by Professor Michael S. Hart and is supported by a network of volunteers and the Gutenberg Literary Archive Foundation. The organization's mission is to increase the number of public domain and licensed works freely distributed in machine-readable form, thereby promoting free access to literature and electronic works. Project Gutenberg owns a compilation copyright in its collection of electronic works, ensuring their accessibility while requiring compliance with specific copyright and distribution guidelines outlined in their license agreement.\\n\\nFor over forty years, Project Gutenberg has been creating and distributing eBooks, offering a vast array of works in various formats, including 'Plain Vanilla ASCII'. Its collection includes notable titles like 'A Christmas Carol', available for free under a license that allows copying, giving away, and re-using with almost no restrictions. The organization operates globally, emphasizing copyright status and adherence to its license, which includes a system of royalty payments and refunds under certain conditions. Project Gutenberg's main search facility is accessible through its website, www.gutenberg.org, facilitating easy access to its extensive library.\\n\\nProject Gutenberg is committed to keeping its collection freely available for future generations, supported by donations and the efforts of its volunteer network. It promotes the creation, modification, and redistribution of eBooks, especially focusing on works that allow for free copying and distribution in the United States under specific terms. The organization is described as being focused on promoting free access to electronic works, ensuring that literature remains accessible to the public while keeping its name associated with shared works in compliance with its agreement. " + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"MATCH (n:__Entity__) RETURN n.name AS name, n.description AS description LIMIT 1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "f046b02e-7fa3-4071-9c32-cdf31b90b8d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
description
0\"Project Gutenberg is responsible for releasing 'A Christmas Carol' as an eBook.\"
1\"Suzanne Shell produced the eBook version of 'A Christmas Carol' for Project Gutenberg.\"
2\"Janet Blenkinship produced the eBook version of 'A Christmas Carol' for Project Gutenberg.\"
3Project Gutenberg operates within the United States, where it is significantly influenced by U.S. laws, particularly those concerning copyright and the redistribution of eBooks. Its activities, including the creation and distribution of electronic works, are conducted freely within the legal framework of the United States, emphasizing the organization's adherence to copyright law and the conditions under which eBooks can be shared. Project Gutenberg's collection mainly comprises works that are in the public domain in the United States, underscoring a crucial geographical and legal relationship between the organization's operations and U.S. copyright laws. This relationship dictates the accessibility of Project Gutenberg's works and ensures that their distribution is in compliance with U.S. copyright confirmation processes. Overall, Project Gutenberg's presence and operations in the United States highlight its commitment to making literary works accessible within the confines of copyright law, ensuring that donations and the sharing of works are handled in accordance with U.S. regulations.
4\"Project Gutenberg establishes and enforces the General Terms of Use and Redistributing guidelines for its electronic works.\"
\n", + "
" + ], + "text/plain": [ + " description\n", + "0 \"Project Gutenberg is responsible for releasing 'A Christmas Carol' as an eBook.\"\n", + "1 \"Suzanne Shell produced the eBook version of 'A Christmas Carol' for Project Gutenberg.\"\n", + "2 \"Janet Blenkinship produced the eBook version of 'A Christmas Carol' for Project Gutenberg.\"\n", + "3 Project Gutenberg operates within the United States, where it is significantly influenced by U.S. laws, particularly those concerning copyright and the redistribution of eBooks. Its activities, including the creation and distribution of electronic works, are conducted freely within the legal framework of the United States, emphasizing the organization's adherence to copyright law and the conditions under which eBooks can be shared. Project Gutenberg's collection mainly comprises works that are in the public domain in the United States, underscoring a crucial geographical and legal relationship between the organization's operations and U.S. copyright laws. This relationship dictates the accessibility of Project Gutenberg's works and ensures that their distribution is in compliance with U.S. copyright confirmation processes. Overall, Project Gutenberg's presence and operations in the United States highlight its commitment to making literary works accessible within the confines of copyright law, ensuring that donations and the sharing of works are handled in accordance with U.S. regulations.\n", + "4 \"Project Gutenberg establishes and enforces the General Terms of Use and Redistributing guidelines for its electronic works.\"" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"MATCH ()-[n:RELATED]->() RETURN n.description AS description LIMIT 5\")" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "a0b6046f-6c10-40d4-aca0-bb4c5e184c19", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlesummaryfull_content
0The Cratchit Family: A Study of Resilience and TransformationThe Cratchit family, central to the narrative, showcases themes of love, hardship, and transformation, particularly in relation to their interactions with Ebenezer Scrooge. This report delves into the dynamics within the Cratchit family, their relationship with Scrooge, and the significant impact of Christmas Day on their lives and on Scrooge's transformation. The family's experiences highlight broader societal issues of poverty and the potential for personal change.# The Cratchit Family: A Study of Resilience and Transformation\\n\\nThe Cratchit family, central to the narrative, showcases themes of love, hardship, and transformation, particularly in relation to their interactions with Ebenezer Scrooge. This report delves into the dynamics within the Cratchit family, their relationship with Scrooge, and the significant impact of Christmas Day on their lives and on Scrooge's transformation. The family's experiences highlight broader societal issues of poverty and the potential for personal change.\\n\\n## The pivotal role of Bob Cratchit\\n\\nBob Cratchit, as a devoted family man and employee of Scrooge, represents the struggles of the lower class while maintaining a hopeful and loving demeanor. His relationship with Scrooge evolves from one of power imbalance to mutual respect, marked by Scrooge's transformation and his promise to assist the Cratchit family. Bob's interactions with his family, especially Tiny Tim, underscore his role as a caring father and his impact on Scrooge's change of heart [Data: Entities (11, 177); Relationships (25, 159, 20, 29, +more)].\\n\\n## Mrs. Cratchit's influence and resilience\\n\\nMrs. Cratchit is a strong, caring figure within the family, showcasing resilience in the face of hardship. Her disdain for Scrooge reflects her protective nature and desire for justice. Mrs. Cratchit's efforts to maintain festive spirits, despite financial constraints, highlight her role in fostering family unity and her indirect influence on Scrooge's transformation through her husband's experiences [Data: Entities (26); Relationships (81, 77, 73, +more)].\\n\\n## Tiny Tim as a symbol of hope\\n\\nTiny Tim, despite his physical frailties, embodies hope and innocence. His optimistic outlook and the concern for his well-being from both his family and Scrooge symbolize the potential for societal change. Tiny Tim's character prompts Scrooge's transformation, illustrating the impact of empathy and care on personal redemption. His condition and spirit reflect broader themes of social responsibility and the value of each individual within society [Data: Entities (174); Relationships (158, 289, +more)].\\n\\n## The transformative power of Christmas Day\\n\\nChristmas Day serves as a catalyst for change and reflection within the narrative. For the Cratchit family, it is a time of joy and familial bonding, despite their hardships. For Scrooge, it marks the beginning of his transformation, influenced by the Ghosts and his observations of the Cratchit family. The day's significance is highlighted through the contrast between Scrooge's initial miserliness and his eventual generosity, underscoring the themes of redemption and the impact of kindness [Data: Entities (172); Relationships (160, 286, +more)].\\n\\n## The broader societal implications of the Cratchit family's narrative\\n\\nThe Cratchit family's experiences and their interactions with Scrooge touch on broader societal issues such as poverty, inequality, and the capacity for personal growth. Their story serves as a microcosm for exploring themes of social justice, the importance of family, and the potential for change in individuals and society. Through their resilience and the transformative journey of Scrooge, the narrative offers insights into the power of empathy, community, and the spirit of Christmas in fostering societal change [Data: Entities (180, 149); Relationships (25, 158, 160, +more)].
\n", + "
" + ], + "text/plain": [ + " title \\\n", + "0 The Cratchit Family: A Study of Resilience and Transformation \n", + "\n", + " summary \\\n", + "0 The Cratchit family, central to the narrative, showcases themes of love, hardship, and transformation, particularly in relation to their interactions with Ebenezer Scrooge. This report delves into the dynamics within the Cratchit family, their relationship with Scrooge, and the significant impact of Christmas Day on their lives and on Scrooge's transformation. The family's experiences highlight broader societal issues of poverty and the potential for personal change. \n", + "\n", + " full_content \n", + "0 # The Cratchit Family: A Study of Resilience and Transformation\\n\\nThe Cratchit family, central to the narrative, showcases themes of love, hardship, and transformation, particularly in relation to their interactions with Ebenezer Scrooge. This report delves into the dynamics within the Cratchit family, their relationship with Scrooge, and the significant impact of Christmas Day on their lives and on Scrooge's transformation. The family's experiences highlight broader societal issues of poverty and the potential for personal change.\\n\\n## The pivotal role of Bob Cratchit\\n\\nBob Cratchit, as a devoted family man and employee of Scrooge, represents the struggles of the lower class while maintaining a hopeful and loving demeanor. His relationship with Scrooge evolves from one of power imbalance to mutual respect, marked by Scrooge's transformation and his promise to assist the Cratchit family. Bob's interactions with his family, especially Tiny Tim, underscore his role as a caring father and his impact on Scrooge's change of heart [Data: Entities (11, 177); Relationships (25, 159, 20, 29, +more)].\\n\\n## Mrs. Cratchit's influence and resilience\\n\\nMrs. Cratchit is a strong, caring figure within the family, showcasing resilience in the face of hardship. Her disdain for Scrooge reflects her protective nature and desire for justice. Mrs. Cratchit's efforts to maintain festive spirits, despite financial constraints, highlight her role in fostering family unity and her indirect influence on Scrooge's transformation through her husband's experiences [Data: Entities (26); Relationships (81, 77, 73, +more)].\\n\\n## Tiny Tim as a symbol of hope\\n\\nTiny Tim, despite his physical frailties, embodies hope and innocence. His optimistic outlook and the concern for his well-being from both his family and Scrooge symbolize the potential for societal change. Tiny Tim's character prompts Scrooge's transformation, illustrating the impact of empathy and care on personal redemption. His condition and spirit reflect broader themes of social responsibility and the value of each individual within society [Data: Entities (174); Relationships (158, 289, +more)].\\n\\n## The transformative power of Christmas Day\\n\\nChristmas Day serves as a catalyst for change and reflection within the narrative. For the Cratchit family, it is a time of joy and familial bonding, despite their hardships. For Scrooge, it marks the beginning of his transformation, influenced by the Ghosts and his observations of the Cratchit family. The day's significance is highlighted through the contrast between Scrooge's initial miserliness and his eventual generosity, underscoring the themes of redemption and the impact of kindness [Data: Entities (172); Relationships (160, 286, +more)].\\n\\n## The broader societal implications of the Cratchit family's narrative\\n\\nThe Cratchit family's experiences and their interactions with Scrooge touch on broader societal issues such as poverty, inequality, and the capacity for personal growth. Their story serves as a microcosm for exploring themes of social justice, the importance of family, and the potential for change in individuals and society. Through their resilience and the transformative journey of Scrooge, the narrative offers insights into the power of empathy, community, and the spirit of Christmas in fostering societal change [Data: Entities (180, 149); Relationships (25, 158, 160, +more)]. " + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"MATCH (n:__Community__) RETURN n.title AS title, n.summary AS summary, n.full_content AS full_content LIMIT 1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "bdce0534-c342-4894-af07-e72f00425828", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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dofjtuTgwYM444wzkJSUhPPPPx9FRUVYt24dpk2bho8//jjY/vHjx6OsrAyffvop+vTp0+zfiBOH9BJRAol01kZEFC5o57f/Dz30kAAgrr766pMef+K31Oeee64AIN59992T4nz77beirq4u+HvTb7Rb0rQX4Oc//3mLvS+n6mnSarXiww8/DG53uVzimmuuEQDE5Zdf3uwxoX4r35LWepreffddAUDk5eWJ3bt3B7fX1NSI8ePHCwDitttua7F9siyL9957L7jd4/GIGTNmCADinnvuabEdJ1IURQwbNkwAEHfccUezHpJ3331XyLIsrFarKCkpafa4pj14HdHez1pLjxk0aJAoLS0Nbt+/f79ITU0VAMTevXubPaZnz55tnqe197itx9XU1Aiz2SyysrKE0+lsts/r9YqCggKh0WjEkSNHTvmcXnjhBQFAnH/++ac89kTffvtt8H1Zv359cLvD4RC//OUvBQAxY8aMZo8J5TMd+Ax6vd7gvscff1wAEOecc06zxzTtFSYiEkIIlhwnooQT+Mb92LFjpzy2oqICADB58uST9gW+te4og8GAf/7znzAajR1+7BVXXIGLL744+LtOp8M//vEPmM1mfPDBByguLu5wzHB48sknAQD33nsv+vXrF9yekpKCJUuWQJIkPPfcc3A4HCc99uqrr8a0adOCv2s0GixcuBAA8NVXX7Xr/KtXr8bWrVtRUFCAhx56qFkPyYwZMzBt2jQ0NDTgpZde6szTa1VbJccDRSZO9OSTTzbrzSosLMTMmTMBAP/73//C2r6WpKSk4KqrrkJFRQX+/e9/N9v33//+F0VFRbjkkkuQl5d3ylhVVVUAgKysrA6346mnnoKiKLjlllswZsyY4HaDwYCnnnoKJpMJ7733Xtg+04WFhVi0aBFk+filz/z585GWlob169fD5XKF5TxEFJ+YNBFRwhH+MsynGnoEIFg2+de//jW+++47KIoS8vlHjRqF7t27d+qxV1111UnbAkOjhBARmWjvdruxfv16AMA111xz0v7hw4dj+PDhaGhowObNm0/a39Kwrv79+wMASktL29WGQLJxxRVXtFgB8de//nWz48Jl1qxZrd5aqmin0+kwceLEk7Z39PmG6uabbwYAvPDCC822B36/8cYbVW9D4L1o6TPTrVs3XHjhhVAUBWvXrg3L+c477zzo9fpm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CIFymxcAkGPWdDqOVtIixZgBrdS5j7QsSTi9mwlfHmnEdxV2jMgwQJKa9DZptUBmpu+eiIiIKM5NnToVLpcLkiRhypQpzfYNHjwYBoMBRUVFmDBhQouPHzRoED744INm29afOLzwBGvXrsXs2bPx85//HIAvOTuxeESk8AqQIuqYU4FLEdBKQIax80lTn4yhWHntoZDaMiLDgLWlNlQ5vNhf50afFP3xncOH+yZZEhERESUAjUaDnTt3Bn9uKikpCbfffjsWLFgARVEwfvx41NbWYu3atUhOTsasWbNw880347HHHsP/+3//D9dffz02btyIl19+uc1z9uvXDytWrMCll14KSZJwzz33qN6D1F6snkcRVWYPLGarhSxFdh6RQSNjhH9Y3rdH2yg/TkRERJQAkpOTkZyc3OK+Bx98EPfccw8WL16MQYMGYerUqfjwww9RWFgIACgoKMC//vUvvP/++xgxYgSeffZZLFq0qM3z/f3vf0daWhrOOussXHrppZgyZQpGtTVksQtJQog2VvSMP3V1dUhJSUFtbW2rHwI6tU2bNmH06NF44ZOvMWD4yE7FcHgVbKxwAgBGZRpgCmE+04HqHbjrv1dh0YXLUZg+uM1jd/24GTdMHY+NGzee9IdY6/Li2e3HIABcNyAV2WZ/Z+z27cDllwP//jcwZEin20lERETxzeFw4MCBAygsLITRyDnS0aCt96S9uQF7mihiAnOZUvRySAkTALgUF47U7YdLcZ364Dak6DUYlOabwNist8npBPbt890TERERUUJh0kQRoQgRrJqXY46uqXVndPN9A/FTjbP1xW6JiIiIKGEwaaKIqHEpcCuATgbSDdH1Mcw165Bt0sArgG3V7FkiIiIiSnTRdbVKCaPS7hual2nURLwAREsC6zRtqXIgwab9EREREdEJmDRRl/MKgWrn8aQpHHok98ajF72PHsm9wxJvcJoBOhmocnhxpNED9O0LfPKJ756IiIjoFPila/QIx3vBpIm6XI1TgVcABllCki48H0GLPhln5k+GRR+eiogGjYyBqb6CEJurHEByMjBliu+eiIiIqBU6nQ4AYLPZItwSCgi8F4H3pjOiawY+JYQKh7+XyaSBFKaheZW2MnywYykuGzwXmeacsMQcmWnE1monfjrmxGS5DsalLwA33QTk5oYlPhEREcUfjUaD1NRUHD16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rKCgIADA/PnzERERAWtra8TGxurt+8477yA2NhY2NjZ4+umn1cXEiBEj4Ofnh6+++gq+vr4YOXJkm+awcOFCHDt2DKtWrUJRURGee+45uLm5oba2Fnl5eSgtLUVJSQkAYPHixcjNzYVCocD8+fPRt29fZGdno7KyEl9//bX6yXnDhw/H6NGjsWTJEly4cAF9+/bFpk2bcOPGDaOOz+18fHwgl8uxbt069O7dGw4ODggJCYG3t3e7xyQiIv1YNBERUbskJSVpbc/MzDS6aIqOjsbrr7+OTZs2IScnB0IInUXTqFGj8N5772HdunXYuXMnVCoVKisrNZ6ON336dCxatMjgAyBuZ2VlhY0bNyIyMhIZGRlYuXIlLl++jH79+mHMmDFIS0tDaGgoAMDV1RUlJSVITEzEmjVr0NTUhICAAHz33XeYOHGixriff/454uPjkZqaCrlcjlmzZuGxxx7DE088YdQxamFjY4Ps7GwsWbIEr7zyCm7cuIHMzEwWTUREJiQJ3l1KRETdzMcff4w333wTVVVVrZ7eR0REZCwWTURE1K0IIRAYGAhnZ2cUFRV19nSIiKgb4MfziIioW2hsbMS3336LoqIilJWVYdu2bZ09JSIi6iZ4pYmIiLqFqqoqeHt7Qy6X47XXXsP777/f2VMiIqJugkUTERERERGRHvw7TURERERERHqwaCIiIiIiItKDRRMREREREZEeLJqIiIiIiIj0YNFERERERESkB4smIiIiIiIiPVg0ERERERER6cGiiYiIiIiISI//A19nxHzZRdtpAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "entity_df = db_query(\n", + " \"\"\"\n", + "MATCH (d:__Chunk__)\n", + "RETURN count {(d)-[:HAS_ENTITY]->()} AS entity_count\n", + "\"\"\"\n", + ")\n", + "# Plot distribution\n", + "plt.figure(figsize=(10, 6))\n", + "sns.histplot(entity_df['entity_count'], kde=True, bins=15, color='skyblue')\n", + "plt.axvline(entity_df['entity_count'].mean(), color='red', linestyle='dashed', linewidth=1)\n", + "plt.axvline(entity_df['entity_count'].median(), color='green', linestyle='dashed', linewidth=1)\n", + "plt.xlabel('Entity Count', fontsize=12)\n", + "plt.ylabel('Frequency', fontsize=12)\n", + "plt.title('Distribution of Entity Count', fontsize=15)\n", + "plt.legend({'Mean': entity_df['entity_count'].mean(), 'Median': entity_df['entity_count'].median()})\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "10eb4b97-632a-44d9-b452-6b9130a8c432", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3bt3V/u1p0yZQvv27fH09LT5gqA8FouF8ePHEx4ejoeHB126dGHPHts1wk6fPk2/fv3w9fXF39+fIUOGVPtnoYK9DsgsDeWnn28kszTULpaTU48VK/qRk1OPHKMviwCTr6/DPl19fYm99VZcK9BWRERERKSuaNasGUeOHLE+1q1bZxMfOXIk//nPf1i6dCnfffcdhw8f5q677qr2fNLT03nppZeYM2cO//znPy+pL4vFQmlpaRVnWHEeHh6EhIRU+3WKi4vp06cPjz76aIXPmT59Om+88QZvv/02GzduxMvLi27dulFYWGht069fP7Zv386KFSv44osvWLt2LQ899FB1vAQrFex1wP6SVjz9y3fsL2llFzt6NI4XX1zE0aNxHHarzwNAcf36Dvv0joyk/Usv4R0ZWfUJi4iIiIjUUs7OzoSFhVkfQUFB1lhWVhbvvvsur776KjfffDOJiYnMmzePH374gR9//JH09HRuuukmAOrVq4fBYGDQoEHW881mM6NHjyYgIICwsDAmTpxY4XwiIyO555576NevH59//rm1v6lTpxIXF4eHhwctW7bk448/tp57brT/q6++IjExETc3N9atW4fZbGb69Ok0bNgQNzc3oqOjmTJlivW8AwcO0LdvX/z9/QkICOCOO+4gPT3dGh80aBC9e/dmxowZhIeHExgYSFJSEiUlJcDZ6f/79+9n5MiR1hkCYD8lvizvvPMOTZs2xd3dnSZNmvDWW285fI8uNGnSJEaOHEnz5s0r1N5isTBz5kyee+457rjjDlq0aMHChQs5fPgwn332GQA7d+5k+fLlvPPOO7Rt25YOHTrw5ptv8sEHH3D48OFK51hRKtjrADdyaeDyM27YT8dwcSkkIiIVF5dCXM1FxAOGoiKHfZqKisjZvx9TBdqKiIiIiFRIwRE4vdn2kbvvbMxUaB87vfl/52bvso8VnT4bKzxhH8u23/K4Ivbs2UNERAQNGjSgX79+ZGRkWGMpKSmUlJTQpUsX67EmTZoQHR3Nhg0biIqK4pNPPgFg165dHDlyhNdff93adsGCBXh5ebFx40amT5/O5MmTWbFiRaXy8/DwoLi4GICpU6eycOFC3n77bbZv387IkSPp378/3333nc05Y8aMYdq0aezcuZMWLVowduxYpk2bxrhx49ixYwdLliwhNPTsbN2SkhK6deuGj48P33//PevXr8fb25vu3btbrwuwevVq0tLSWL16NQsWLGD+/PnMnz8fgGXLlhEZGcnkyZOtMxUqYvHixYwfP54pU6awc+dOXnzxRcaNG8eCBQusbTp16mTzJUhV2LdvH0ePHrX5XP38/Gjbti0bNmwAYMOGDfj7+3Pttdda23Tp0gUnJyc2btxYpfmcz7naepY/TROP9czs350Ri5aztaCbTSw2dgdz5iTy0EMp5B3cyw/Azr17oV27cvvMSktjeZ8+dF+6lICEhGrMXkRERESuGHtmw2+TbI/F9oP2iyD/ICxPtD/nfsvZnxsGwakfbWPt3oe4/pDxEfw83DYW1hVu/rpS6bVt25b58+fTuHFjjhw5wqRJk7jhhhv47bff8PHx4ejRo7i6utqNEoeGhnL06FGMRiMBAQEAhISE2LVr0aIFEyZMAKBRo0bMmjWLVatWccstt1Qov5SUFJYsWcLNN99MUVERL774IitXrqTdH/9v36BBA9atW8fs2bPp2LGj9bzJkydbr5GTk8Prr7/OrFmzGDhwIADx8fF06NABgA8//BCz2cw777xjHRmfN28e/v7+rFmzhq5duwJnZxDMmjULo9FIkyZN6NWrF6tWrWLYsGEEBARgNBrx8fEhLCysom8/EyZM4JVXXrHeYhAXF8eOHTuYPXu2Ndfo6GjCw8Mr3GdFHD16FMD6pcU55z7Xc20unM7v7OxMQECAtU11UMEuIiIiIiJ/jkYPQ+Tttsdc65396RkJ3VMufm67+VCaZ3vMK/bsz+i+EHTBgJSzT6XT69Gjh/X3Fi1a0LZtW2JiYvjoo48YMmRIpfu7UIsWLWyeh4eHc/z48XLP2bZtG97e3phMJoqLi+nVqxezZs0iNTWV/Px8u2K/uLiYa665xubY+aPCO3fupKioiM6dO5d5va1bt5KamoqPj+37V1hYSFpamvV5s2bNMBqNNq9l27Zt5b6W8uTl5ZGWlsaQIUMYNmyY9XhpaSl+fn7W5wsXLrzka/wVqWAXEREREZE/h0f42UdZjO4Q0Pri5/o2vnjMPfjso4r5+/tz1VVXkZqaCkBYWBjFxcVkZmbajJ4fO3asQiPJLi4uNs8NBgNms7nccxo3bsznn3+Os7MzERERuLq6AljvKf/yyy+pf8EaVW5ubjbPvby8rL97eHiUe73c3FwSExNZvHixXSw4+H/v8aW8FkfXBZg7dy5t27a1iZ3/xUB1OPfZHTt2zGb0/tixY9Zt58LCwuy+XCktLeX06dOVmkVQWbqHXUREREREpAy5ubmkpaVZi7jExERcXFxYtWqVtc2uXbvIyMiwTks/V1CbTKYqycHV1ZWGDRsSGxtr7RsgISEBNzc3MjIyaNiwoc0jKirqov01atQIDw8Pm9dwvtatW7Nnzx5CQkLs+j1/pLsieVfmPQgNDSUiIoK9e/faXTcuLq7C/VyKuLg4wsLCbN6T7OxsNm7caP1c27VrR2ZmJikp/5sF8u2332I2m+2+YKhKKthFRERERESAJ598ku+++4709HR++OEH7rzzToxGI/fddx9wdiGyIUOGMGrUKFavXk1KSgqDBw+mXbt2XH/99QDExMRgMBj44osvOHHiRLXt0+3j48OTTz7JyJEjWbBgAWlpaWzevJk333zTZpG2C7m7u/P0008zevRoFi5cSFpaGj/++CPvvvsucHbrsqCgIO644w6+//579u3bx5o1a3j88cc5ePBghfOLjY1l7dq1HDp0iJMnT1bonEmTJjF16lTeeOMNdu/ezbZt25g3bx6vvvqqtc2AAQMYO3Zsuf1kZGSwZcsWMjIyMJlMbNmyhS1btth8Fk2aNOHTTz8Fzs4OGDFiBC+88AKff/4527ZtY8CAAURERNC7d28AmjZtSvfu3Rk2bBg//fQT69evZ/jw4dx7771ERERU+H2pLE2JrwO2FnTjprmWMmN79rTmppvOxnI8wQCkNG3qsM+AhATu3769KtMUEREREanVDh48yH333cepU6cIDg6mQ4cO/PjjjzZTwV977TWcnJy4++67KSoqolu3bjZbj9WvX59JkyYxZswYBg8ezIABA6yrp1e1559/nuDgYKZOncrevXvx9/endevWPPPMM+WeN27cOJydnRk/fjyHDx8mPDycRx55BABPT0/Wrl3L008/zV133UVOTg7169enc+fO+Pr6Vji3yZMn8/DDDxMfH09RUREWS9n1yvmGDh2Kp6cnL7/8Mk899RReXl40b96cESNGWNtkZGTg5FT+uPP48eNtvrQ4d0//6tWr6dSpE3B2ZkRWVpa1zejRo8nLy+Ohhx4iMzOTDh06sHz5ctzd3a1tFi9ezPDhw+ncubP138Abb7xRkbfjkhksFXnn6rDs7Gz8/PzIysqq1D/AP9vmzZtJ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Z59l2LBhVZ6slO2kOZYFh18uM5aVFcxnnyUBkONSj7eAIfXqOezTPSCAq+6/vyrTFBERERERkUqo0Aj7N998w0cffUTPnj3LLNYBYmJiGDt2LHv27OHmm2+u0iSrQ3JyMgkJCbRp06amU7ls9ZwOcXfwi9RzOmQX8/E5TZcui/DxOY1vaRb9AGNWlsM+izIz2fef/1CUmVn1CYuIiIiIiIhDFSrYmzZtWuEOXVxciI+Pv+SE/ixJSUns2LGDTZs21XQqly3a7TeG936WaLff7GJhYek8++wDhIWlE158mEWA6+HDDvvMO3yYDWPGkFeBtiIiIiIiIlL1LmmV+O+//57+/fvTrl07Dh06O6r7/vvvs27duipNTkRERERERORKVemC/ZNPPqFbt254eHjwyy+/UFRUBEBWVhYvvvhilScoIiIiIiIiciWqdMH+wgsv8PbbbzN37lyb+9n/9re/sXnz5ipNTkRERERERORKVemCfdeuXdx44412x/38/MjUAmU1Is/kR/reBuSZ/OxihYVebN9+PYWFXhQ6ebABMHt4OOzT2cODwJYtca5AWxEREREREal6FdrW7XxhYWGkpqYSGxtrc3zdunU0aNCgqvKSSkgtvp7Bq9LKjB040JjhwzcAkOOeR3sg5YLPriy+cXF0W7KkCrMUERERERGRyqh0wT5s2DCeeOIJ3nvvPQwGA4cPH2bDhg08+eSTjBs3rjpylCq2c+fOyzo/KCiI6OjoKspGREREREREylLpgn3MmDGYzWY6d+5Mfn4+N954I25ubjz55JM89thj1ZGjONDS42tm9u/OiEXL2VrQzSbWqNFm5sxJ5KGHUsha/T0/A6379+cXB33GurszpUEDnt27l/TCQpuYu7snu3btVNEuIiIiIiJSjSpdsBsMBp599lmeeuopUlNTyc3NJSEhAW9v7+rIT6pQaWkOABHhz+EUcWe5bUPM6VA0jqZNFxPoFGs9np+/k507+3Py5EkV7CIiIiIiItWo0gX7Oa6uriQkJFRlLvIncXOLwcendbltPEvcoQg8PZvg46LPWURERERE5M9WoYL9rrvuqnCHy5Ytu+RkREREREREROSsChXsfn7224WJiIiIiIiISPWpUME+b9686s5DLsPvBX9jyPxNHCppYhdLT0+gX789nDgRyXG3rTQEvN1iqeegz0zneD4M+C95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ijh06FCVJCWV09B1I3M7NqGh60a7WGTkbl57rRORkbuJKTrCaiCm6IDDPv1K0+l1ZhB+pelVn7CIiIiIiIg4VOH5zp9//rn196+//tpmSzeTycSqVauIjY2t0uSkYryMmTS8ahdeP2XaxTw8cmnV6js8PHLxNBfSCXjTnE+hgz6dLflElGzC2ZJfDRmLiIiIiIiIIxUu2Hv37g2AwWBg4MCBNjEXFxdiY2N55ZVXqjQ5ERERERERkStVhQt2s9kMQFxcHJs2bSIoKKjakhIRERERERG50lV6CfB9+/ZVRx4iIiIiIiIicp5L2rNr1apVrFq1iuPHj1tH3s957733qiSxyrjzzjtZs2YNnTt35uOPP/7Tr1/TDhY1Zc7nz3GwqKld7NixaF5+eS7HjkVzwiWIocARl1DcHPSZawxnrc8kco3h1ZKziIiIiIiIlK/Sq8RPmjSJrl27smrVKk6ePMmZM2dsHjXhiSeeYOHChTVy7drglDma/zv2PKfM0Xax7Owg/vvfoWRnB5Hp7MO7QKazv8M+i5zqscvj7xQ51av6hEVERERERMShSo+wv/3228yfP58HHnigOvK5JJ06dWLNmjU1nUaNCXTKoGvwXL45McyuaPf1PUmHDp+xbl1vig7lMATYUZrpsE838xlii1aR7tZZRbuIiIiIiEgNqPQIe3FxMe3bt6+yBNauXcttt91GREQEBoOBzz77zK5NcnIysbGxuLu707ZtW3766acqu35dEOm2k4duf4FIt512sdDQDJ56ahihoRmEl5zkHSC85JjDPr1NR7gxZwLepiPVkLGIiIiIiIg4UumCfejQoSxZsqTKEsjLy6Nly5YkJyeXGf/www8ZNWoUEyZMYPPmzbRs2ZJu3bpx/PjxKstBREREREREpLap9JT4wsJC5syZw8qVK2nRogUuLi428VdffbVS/fXo0YMePXpcNP7qq68ybNgwBg8eDJydkv/ll1/y3nvvMWbMmMqmT1FREUVFRdbn2dnZle5DREREREREpLpVumD/9ddfadWqFQC//fabTcxgMFRJUucUFxeTkpLC2LFjrcecnJzo0qULGzZsuKQ+p06dyqRJk6oqRREREREREZFqUemCffXq1dWRR5lOnjyJyWQiNDTU5nhoaCi///679XmXLl3YunUreXl5REZGsnTpUtq1a1dmn2PHjmXUqFHW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RERERESqngp2ERERERERkVpIBbuIiIiIiIhILaSCXURERERERKQW0rZudcDewtZM/ug99ha2tosdOtSQ0aOXc+hQQ467htINOO0aibeDPrON0XzlN5tsY3S15CwiIiIiIiLlu2IL9uTkZJKTkzGZTDWdymXLsQSzOmtwmbH8fF82beoGQJ7Rk5+BpkYvhwV7iZM3B906VG2iIiIiIiIiUmFX7JT4pKQkduzYwaZNm2o6lcsWZtzDEw0GEWbcYxcLCDjCwIETCQg4QlDJGSYAQSUnHfbpYTpB69xkPEwnqiFjERERERERceSKLdjrklDXvfTuvIBQ1712scDAIwwaNInAwCMEl2YyEQguPeWwT0/zCRLz38LTrIJdRERERESkJqhgFxEREREREamFVLCLiIiIiIiI1EIq2EVERERERERqIRXsdUBmaSg//XwjmaWhdrGcnHqsWNGPnJx6ZBu9WARkG30c9lns5Mset1spdvKthoxFRERERETEkSt2W7e6ZH9JK57+5bsyY0ePxvHii4sAOOYawgNAU9cI7Et7WznGSNb4vVS1iYqIiIiIiEiFaYS9DnAjlwYuP+NGrl3MxaWQiIhUXFwKcTUXEw+4mosc9mm0FOFbuh+jxXFbERERERERqXoq2OuAJh7reXdQG5p4rLeLxcbuYPHiRsTG7iC+6BCpQHxRusM+/UvTuOd0T/xL06o+YRERkf9v787Do6zvvY9/ZklmsgcSSEggJCyGgIjsInWFij484lY9WqiAC542PC60ikvB7SCidTlqilZPpbZY14oVaxXZFETAsAoxIDsJSQgQQvbMzO/5w+O0cYAJkjA3k/frurhg7u8vX75z8btgPtx37hsAAARFYAcAAAAAwIII7AAAAAAAWBCBHQAAAAAACyKwAwAAAABgQTzWLQysrx2li142R61t3TpAF130Xa00qkA2STlR2UEf63Ygorde7ripZQcFAAAAADQbZ9gBAAAAALAgzrCHgR6RX+qB88Zqxudz9W3DOU1qXboUaurUCZo1a46idhfrfyQ9Wr9btUF6Jnh26ILKB7Q0foYOO7NabfYfa/fu3SovLz+pHvX19XK5XCfVIzk5WRkZGSfVAwAAAACOps0G9ry8POXl5cnr9YZ6lJMW4ziszG7bFfPF4YCa212tPn2+lNtdrShfvYZJivLVBg3sTlOrFM96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asWKFSGcDFZ1+PBhSVL79u0lSfn5+WpsbGyyh3r16qWMjAz2UBuXm5ur0aNHN9kbEnsGgf7+979r0KBBuvbaa9WxY0f1799fL7/8sr++Y8cOlZSUNNkzCQkJGjp0KHumjTr33HO1cOFCbdmyRZK0fv16LVu2TJdddpkk9gyOrzn7Y8WKFUpMTNSgQYP8a0aOHCm73a6VK1ee8plhPYcPH5bNZlNiYqKk03vPOEM9AI6tvLxcXq9XKSkpTY6npKTom2++CdFUsCqfz6c777xTw4cP15lnnilJKikpUWRkpP8vq++lpKSopKQkBFPCCt544w2tWbNGq1evDqixZ/BD27dv1+zZszVlyhTdf//9Wr16tW6//XZFRkZq/Pjx/n1xtH+r2DNt07333qvKykr16tVLDodDXq9XM2bM0NixYyWJPYPjas7+KCkpUceOHZvUnU6n2rdvzx6C6urqNHXqVN1www2Kj4+XdHrvGQI7ECZyc3P19ddfa9myZaEeBRa2Z88e3XHHHVqwYIHcbneox8FpwOfzadCgQXrsscckSf3799fXX3+tF198UePHjw/xdLCit956S3PnztXrr7+uPn36aN26dbrzzjuVlpbGngHQqhobG3XdddfJGKPZs2eHepwWwSXxFpacnCyHwxFwd+bS0lKlpqaGaCpY0eTJkzV//nwtXrxYnTt39h9PTU1VQ0ODKioqmqxnD7Vd+fn5Kisr04ABA+R0OuV0OrV06VI999xzcjqdSklJYc+giU6dOql3795NjuXk5Gj37t2S5N8X/FuF791999269957df3116tv3776xS9+obvuukszZ86UxJ7B8TVnf6SmpgbcgNnj8ejgwYPsoTbs+7C+a9cuLViwwH92XTq99wyB3cIiIyM1cOBALVy40H/M5/Np4cKFGjZsWAgng1UYYzR58mS99957WrRokbKysprUBw4cqIiIiCZ7qLCwULt372YPtVEjRozQxo0btW7dOv+PQYMGaezYsf5fs2fw74YPHx7wuMgtW7aoa9eukqSsrCylpqY22TOVlZVauXIle6aNqqmpkd3e9COmw+GQz+eTxJ7B8TVnfwwbNkwVFRXKz8/3r1m0aJF8Pp+GDh16ymdG6H0f1rdu3apPP/1USUlJTeqn9Z4J9V3vcHxvvPGGcblcZs6cOWbz5s1m0qRJJjEx0ZSUlIR6NFjAL3/5S5OQkGCWLFli9u3b5/9RU1PjX/Of//mfJiMjwyxatMh89dVXZtiwYWbYsGEhnBpW8+93iTeGPYOmVq1aZZxOp5kxY4bZunWrmTt3romOjjZ/+ctf/Gsef/xxk5iYaN5//32zYcMGc8UVV5isrCxTW1sbwskRKuPHjzfp6elm/vz5ZseOHeZvf/ubSU5ONvfcc49/DXumbTty5IhZu3atWbt2rZFknn76abN27Vr/Hb2bsz8uvfRS079/f7Ny5UqzbNky07NnT3PDDTeE6i2hlR1vzzQ0NJgxY8aYzp07m3Xr1jX5TFxfX+/vcbruGQL7aeD55583GRkZJjIy0gwZMsR8+eWXoR4JFiHpqD9effVV/5ra2lrzq1/9yrRr185ER0ebq666yuzbty90Q8NyfhjY2TP4oQ8++MCceeaZxuVymV69epk//OEPTeo+n89MmzbNpKSkGJfLZUaMGGEKCwtDNC1CrbKy0txxxx0mIyPDuN1u061bN/PAAw80+eDMnmnbFi9efNTPL+PHjzfGNG9/HDhwwNxwww0mNjbWxMfHm4kTJ5ojR46E4N3gVDjentmxY8cxPxMvXrzY3+N03TM2Y4w5defzAQAAAABAc/A97AAAAAAAWBCBHQAAAAAACyKwAwAAAABgQQR2AAAAAAAsiMAOAAAAAIAFEdgBAAAAALAgAjsAAAAAABZEYAcAAAAAwIII7AAAtBGZmZl69tlnQz0GAABoJgI7AAAWMWHCBNlsNj3++ONNjs+bN082my1EUzVls9n8P2JiYtSzZ09NmDBB+fn5oR4NAICwQ2AHAMBC3G63Zs2apUOHDoV6lGN69dVXtW/fPm3atEl5eXmqqqrS0KFD9dprr7X6793Y2NjqvwcAAFZBYAcAwEJGjhyp1NRUzZw587jr3n33XfXp00cul0uZmZl66qmnmtTLysp0+eWXKyoqSllZWZo7d25Aj4qKCt1yyy3q0KGD4uPjdfHFF2v9+vVBZ0xMTFRqaqoyMzN1ySWX6J133tHYsWM1efLkJv/RsGzZMp133nmKiopSly5ddPvtt6u6utpf37dvn0aPHu2f8fXXXw+4bN9ms2n27NkaM2aMYmJiNGPGDEnS+++/rwEDBsjtdqtbt256+OGH5fF4Tvq9AQBgJQR2AAAsxOFw6LHHHtPzzz+vvXv3HnVNfn6+rrvuOl1//fXauHGjHnroIU2bNk1z5szxr5kwYYL27NmjxYsX65133tHvf/97lZWVNelz7bXXqqysTB999JHy8/M1YMAAjRgxQgcPHjzhue+66y4dOXJECxYskCRt27ZNl156qa655hpt2LBBb775ppYtW6bJkyf7v+bGG29UcXGxlixZonfffVd/+MMfAmaUpIceekhXXXWVNm7cqJtuukmff/65brzxRt1xxx3avHmzXnrpJc2ZM8cf5lv6vQEAEDIGAABYwvjx480VV1xhjDHmnHPOMTfddJMxxpj33nvP/Ps/2T//+c/NT3/60yZfe/fdd5vevXsbY4wpLCw0ksyqVav89YKCAiPJPPPMM8YYYz7//HMTHx9v6urqmvTp3r27eemll445oyTz3nvvBRyvra01ksysWbOMMcbcfPPNZtKkSU3WfP7558Zut5va2lr/PKtXr/bXt27d2mTG73+/O++8s0mfESNGmMcee6zJsT//+c+mU6dOJ/XeAACwGmfo/qsAAAAcy6xZs3TxxRfrN7/5TUCtoKBAV1xxRZNjw4cP17PPPiuv16uCggI5nU4NHDjQX+/Vq5cSExP9r9evX6+qqiolJSU16VNbW6tt27ad8LzGGEny3xxv/fr12rBhQ5NL8Y0x8vl82rFjh7Zs2SKn06kBAwb46z169FC7du0Ceg8aNKjJ6/Xr12v58uVNzqh7vV7V1dWppqamxd8bAAChQmAHAMCCzj//fI0aNUr33XefJkyY0OL9q6qq1KlTJy1ZsiSg9u/BvrkKCgokSVlZWf7+t912m26//faAtRkZGdqyZUuze8fExDR5XVVVpYcfflhXX311wFq3293i7w0AgFAhsAMAYFGPP/64zj77bGVnZzc5npOTo+XLlzc5tnz5cp1xxhlyOBzq1auXPB6P8vPzNXjwYElSYWGhKioq/OsHDBigkpISOZ1OZWZmnvSszz77rOLj4zVy5Eh//82bN6tHjx5HXZ+dnS2Px6O1a9f6rwT49ttvm3V3/AEDBqiwsPCYvVv6vQEAECrcdA4AAIvq27evxo4dq+eee67J8V//+tdauHChHn30UW3ZskV/+tOf9MILL/gvn8/Oztall16q2267TStXrlR+fr5uueUWRUVF+XuMHDlSw4YN05VXXqlPPvlEO3fu1BdffKEHHnhAX3311XHnqqioUElJiXbt2qUFCxboZz/7mV5//XXNnj3bfwZ76tSp+uKLLzR58mStW7dOW7du1fvvv++/6VyvXr00cuRITZo0SatWrdLatWs1adIkRUVFBX3m/PTp0/Xaa6/p4Ycf1qZNm1RQUKA33nhDv/3tb0/6vQEAYCUEdgAALOyRRx6Rz+drcmzAgAF666239MYbb+jMM8/U9OnT9cgjjzS5dP7VV19VWlqaLrjgAl199dWaNGmSOnbs6K/bbDb94x//0Pnnn6+JEyfqjDPO0PXXX69du3YpJSXluDNNnDhRnTp1Uq9evfTLX/5SsbGxWrVqlX7+85/715x11llaunSptmzZovPOO0/9+/fX9OnTlZaW5l/z2muvKSUlReeff76uuuoq3XrrrYqLi5Pb7T7u7z9q1CjNnz9fn3zyiQYPHqxzzjlHzzzzjLp27XrS7w0AACuxme/vEgMAABBCe/fuVZcuXfTpp59qxIgRoR4HAICQI7ADAICQWLRokaqqqtS3b1/t27dP99xzj4qKirRlyxZFRESEejwAAEKOm84BAICQaGxs1P3336/t27crLi5O5557rubOnUtYBwDgf3GGHQAAAAAAC+KmcwAAAAAAWBCBHQAAAAAACyKwAwAAAABgQQR2AAAAAAAsiMAOAAAAAIAFEdgBAAAAALAgAjsAAAAAABZEYAcAAAAAwIL+P2t48E3R4eVIAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "degree_dist_df = db_query(\n", + " \"\"\"\n", + "MATCH (e:__Entity__)\n", + "RETURN count {(e)-[:RELATED]-()} AS node_degree\n", + "\"\"\"\n", + ")\n", + "# Calculate mean and median\n", + "mean_degree = np.mean(degree_dist_df['node_degree'])\n", + "percentiles = np.percentile(degree_dist_df['node_degree'], [25, 50, 75, 90])\n", + "# Create a histogram with a logarithmic scale\n", + "plt.figure(figsize=(12, 6))\n", + "sns.histplot(degree_dist_df['node_degree'], bins=50, kde=False, color='blue')\n", + "# Use a logarithmic scale for the x-axis\n", + "plt.yscale('log')\n", + "# Adding labels and title\n", + "plt.xlabel('Node Degree')\n", + "plt.ylabel('Count (log scale)')\n", + "plt.title('Node Degree Distribution')\n", + "# Add mean, median, and percentile lines\n", + "plt.axvline(mean_degree, color='red', linestyle='dashed', linewidth=1, label=f'Mean: {mean_degree:.2f}')\n", + "plt.axvline(percentiles[0], color='purple', linestyle='dashed', linewidth=1, label=f'25th Percentile: {percentiles[0]:.2f}')\n", + "plt.axvline(percentiles[1], color='orange', linestyle='dashed', linewidth=1, label=f'50th Percentile: {percentiles[1]:.2f}')\n", + "plt.axvline(percentiles[2], color='yellow', linestyle='dashed', linewidth=1, label=f'75th Percentile: {percentiles[2]:.2f}')\n", + "plt.axvline(percentiles[3], color='brown', linestyle='dashed', linewidth=1, label=f'90th Percentile: {percentiles[3]:.2f}')\n", + "# Add legend\n", + "plt.legend()\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "a0c0fe31-88a7-4d1f-bd3d-255e5d379afe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedegree
0SCROOGE120
1MRS. CRATCHIT16
2BOB CRATCHIT14
3PROJECT GUTENBERG13
4EBENEZER SCROOGE12
\n", + "
" + ], + "text/plain": [ + " name degree\n", + "0 SCROOGE 120\n", + "1 MRS. CRATCHIT 16\n", + "2 BOB CRATCHIT 14\n", + "3 PROJECT GUTENBERG 13\n", + "4 EBENEZER SCROOGE 12" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"\"\"\n", + " MATCH (n:__Entity__) \n", + " RETURN n.name AS name, count{(n)-[:RELATED]-()} AS degree\n", + " ORDER BY degree DESC LIMIT 5\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "3795c759-c98f-4fd1-a5ef-690b8a469559", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/87/hnv4nyfj1bl8h65l0mp7xrx40000gp/T/ipykernel_14497/2122670982.py:17: FutureWarning: \n", + "\n", + "Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.\n", + "\n", + " sns.boxplot(x='level', y='members', data=community_data, palette='viridis')\n" + ] + }, + { + "data": { + "image/png": "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UmFhoU6ePKmuXbvKZrM5+tSsWVOpqamKioo67/b++KtPrVq1lJub6/T6DRo0cKrFy8tLhw4d0sGDB5WVlaXg4GBHuzFGRUVFjuf+/v5O2x82bJjS09M1duxYpaamqnfv3nr66actXZ/w3XffqVevXnruued03XXXOZZPmzZNJ06c0P/93/+psLBQ9913n95//32FhIRIkhYsWKD77rtPrVu3lqenp+6//3599tlnjnagLDAOVMw4IEk+Pj4aOnSoWrRooZiYGHXp0qXE6+7bt0+JiYn65z//aek1gZJgHKi4ceBicnNz9fbbb+uNN95wWj5r1ix99NFH+umnn9SwYUNt2rRJAwYM0GeffabY2Ngye/3qjlP7UGIHDx7UiBEjNG/ePB0+fFhZWVm68cYbnU4lK28hISGqVauWkpOTlZWV5XicPn1anTp1KvV2Dxw44Pj78OHDys/PV926dRUVFaU6deo4vVZ2drbTwGu3O3+MPD099dBDD+nbb7/VDz/8oIMHD2rmzJklruW7775TfHy85s6d6zSRhCR5e3tr/vz5OnDggNLS0nTjjTeqoKBAHTp0kCTVrl1bS5Ys0aFDh3TgwAE1adJE4eHhatasWWneFuAcjAMVMw78r8LCQsun6C5evFjt27fnVB6UOcYB14wD5/Pmm28qICBAvXr1clq+fft23XbbbWrcuLHsdruuvfZatW7dWp999lmZvn51R5BCieXm5soYozp16shut+ujjz6q8Kk07Xa7xo4dq/vuu0+pqamSpGPHjumtt966pO2++OKL2r17t06fPq0HH3xQXbt2Vb169XT11VcrKipK06dP14kTJ2SM0YEDB/Txxx9fcFvr169XSkqKzpw5I19fX3l7ezuucfozu3btUnx8vGbPnq2RI0ee056enq4DBw7IGKM9e/Zo1KhRmjx5suMXsn379ikzM1PGGG3fvl333nuvZs6cec7gDpQW40D5jwOrV6/Wjh07dObMGZ06dUpz5szRr7/+qq5du0r6/VfwvLw8x0Xu+fn5ysvLc/oSW1RUpKVLlzLJBMoF40D5jwPS75PF5OXlSZIKCgqUl5fnuDb6rMWLF+vOO++Uh4eH0/K4uDj9+9//dnxn2LJli7788kuORpUxvl2hxJo3b66HH35Y3bt3V0hIiN566y317t27wuuYO3eu4uLi1L17d/n7+6tdu3aXPIDfdddduuOOOxQWFqZDhw5p+fLlkiQPDw+tXr1ahw4d0hVXXKHAwEDddNNN+vnnny+4rczMTN1xxx0KCgpSw4YNFRgYqEcffVSStHnzZvn5+V1w3aefflpHjhzRvffe63R/iIMHD0r6/VfA7t27y9fXV/Hx8br55pv1+OOPO9b/9ttv1a5dO/n6+ur222/X/fffrzFjxlzSewP8EeNA+Y8DR48e1W233aagoCDVr19fa9eu1YcffqjGjRtL+v0Xcx8fH8XExEiSwsPD5ePj4/RL+ieffKKsrKxzLrwHygLjQPmPA9Lvp/b6+PhIkjp06CAfHx+ne8p9//33Sk5OPu8PJg888IB69OihLl26KCAgQCNHjtScOXMUHx9v+T3BhdlMRR6HdVM5OTkKDAxUdna2AgICXF0OAAAAABcpaTbgiBQAAAAAWESQQrlbvny502lq5ztlDUDVxjgAgHEAVQ2n9olT+wAAAAD8jlP7gPPo1auXFi5c6OoyALgQ4wAAibEAl44jUuKIFEonPz9fPXv21Pfff6+8vDxFRkZq8uTJzJIHVCOMAwD+186dO9W2bVvdeOONWrVqlavLQSlUiiNSmzZt0i233KLIyEjZbLZz/rEZYzRjxgxFRETIx8dH8fHx59yQ8Pjx4xoyZIgCAgIUFBSkUaNGnXOXaqA8eHp66tlnn1VaWppycnK0cuVKPfLII9q8ebOrSwNQQRgHAPxRcXGxRo8erc6dO7u6FFQAlwapkydPqnXr1nr++efP2z5v3jw988wzWrRokZKTk+Xr66uePXs6bk4mSUOGDNGuXbu0du1arV69Wps2beKXwGokOjpac+fO1dVXXy1fX1/16tVLx48f17hx4xQUFKSmTZvq888/d/S/9tprtWDBAknShg0bFBQUpJdffllRUVEKCQnRAw88UOLX9vDwUKtWrRw317PZbLLZbBe9pwSAssc4AEBy7Vhw1jPPPKMrrrhC11xzTVntFtyYS4NUr169NHv2bPXt2/ecNmOMFixYoOnTp+vWW2/VlVdeqVdffVVpaWmOI1c//PCD1qxZo5dfflkdOnRQly5d9Oyzz+rNN99UWlpaBe8NXOWtt97SypUrlZaWptTUVHXs2FHx8fE6duyYBg8erLFjx15w3RMnTuj777/Xnj17lJSUpOeff14bNmxwtAcFBSkpKemir3/zzTfL29tbzZs3V1hY2Hn/PQMoX4wDACTXjgUHDhzQP//5Tz311FNluUtwY2472cS+ffuUkZHhdAfmwMBAdejQQVu3bpUkbd26VUFBQbrqqqscfeLj42W325WcnFzhNcM17rnnHkVFRSkwMFA33nijQkJC1K9fP3l4eOj222/Xzp07VVBQcN51jTGaPXu2vL29dcUVV6hTp0765ptvHO1ZWVnq0qXLRV9/9erVOnnypDZs2KD+/fs77kIOoOIwDgCQXDsW/OUvf9GsWbMUEhJS5vsF9+S2QSojI0OSFBYW5rQ8LCzM0ZaRkaE6deo4tXt6eio4ONjR53zy8/OVk5Pj9EDl9cd/I7Vq1TrnuTFGp06dOu+6AQEBqlWrluO5r6+vTpw4YbkGDw8PXXPNNcrMzOSXKMAFGAcASK4bC15//XWdOXNGw4YNK2XlqIw8XV2AK8ydO1czZ850dRmoggoLC8+ZEAVA9cI4AFQ/n332mZKTkxUaGipJOnXqlIqKihQeHn7RH/dRubntEanw8HBJUmZmptPyzMxMR1t4eLgOHz7s1H7mzBkdP37c0ed8pk2bpuzsbMcjNTW1jKtHdZCSkqK1a9fq9OnTOnPmjD788EMtX75cPXv2dHVpACoI4wAASfrHP/6hH374QSkpKUpJSdHYsWPVrVs3p1MDUfW4bZBq2LChwsPDtW7dOseynJwcJScnKy4uTpIUFxenrKwsp3+k69evV3FxsTp06HDBbXt5eSkgIMDpAZyPn5/fBacxPnPmjB566CGFhYUpJCREDz30kObPn6/BgwdXcJUAyhPjAADp4mNB7dq1Va9ePccjICBA3t7eqlu3bgVXiYrk0hvy5ubmOqaIbdOmjebPn69u3bopODhY9evX15NPPqknnnhCy5YtU8OGDfXII49ox44d+v777+Xt7S3p95n/MjMztWjRIhUWFmrkyJG66qqrtGLFihLXwQ15AQAAAEglzwYuvUbq66+/Vrdu3RzPJ0+eLEkaMWKEli5dqgceeEAnT57UmDFjHDOlrFmzxhGiJGn58uWaMGGCevToIbvdrv79++uZZ56p8H0BAAAAUH249IiUu+CIFAAAAACp5NnAba+RAgAAAAB3RZACAAAAAIsIUgAAAABgEUEK+BPp6enq3bu3IiMjZbPZlJKS4tT+8ccfq1WrVqpdu7aCg4N13XXX6bvvvjvvtgYPHnzebQBwf2UxFrz44ouqX7++fH19ddNNNyk9Pb0C9wDApfqzcWDZsmVq3769AgMDFRERoVGjRikrK+u82+I7QeVHkAL+hN1u1w033KBVq1adtz02NlaffvqpfvvtNx0+fFg33XST+vbte06/Dz/88JwbTAOoPC51LFi/fr0efPBBvfPOOzp8+LDCwsI0ZMiQCqoeQFn4s3Hg1KlTmjdvnjIzM7Vr1y6lp6dr3Lhx5/TjO0HVQJCCW4qOjtbcuXN19dVXy9fXV7169dLx48c1btw4BQUFqWnTpvr8888d/V9//XW1bNlS/v7+ql+/vh555BGdnZBy27ZtCgwM1M6dOyVJv/32m+rXr69ly5aVqJawsDCNGzdO7du3P297RESEIiIiJEnGGHl4eGj//v0qLCx09Dlx4oTuvfdeLVq0qFTvB1BdVaWx4JVXXtHQoUPVoUMH+fr6au7cudq4caN++eWXUr8/QHVQmcaBe+65R9dee628vb0VHByssWPHKikpyakP3wmqDoIU3NZbb72llStXKi0tTampqerYsaPi4+N17NgxDR48WGPHjnX0DQkJ0cqVK5WTk6MPPvhAL730kuOmzG3bttWjjz6qQYMG6fTp0xo1apT+7//+TyNGjJAkJSUlKSgo6JJqPXjwoIKCguTt7a1JkyZp2rRpqlGjhqN92rRpGjZsmJo2bXpJrwNUR1VlLNixY4diY2MdfcPCwhQeHn7BU4EB/FdlGgf+aOPGjbryyiudlvGdoAoxMNnZ2UaSyc7OdnUp+P8aNGhgFi1a5Hg+ZcoU07FjR8fzXbt2GZvNZvLz88+7/qRJk8zdd9/teF5cXGxuuOEGc+WVV5pGjRqV+v9rSWb79u0XbM/JyTHPPvusWbVqlWPZli1bTIsWLRy1/tk2APxXVRoLGjVqZN555x2nfs2bNzevvfZaqWoAqovKOg589NFHJiAgwOzYscOxjO8ElUNJswFHpOC2wsLCHH/XqlXrnOfGGJ06dUqS9Mknn6hTp04KDQ1VYGCgFi1apKNHjzr622w2jR07Vjt27NC4cePK7cbL/v7+GjdunEaOHKl9+/apoKBAY8aM0QsvvKCaNWuWy2sCVV1VGAskyc/PT9nZ2U79srOz5e/vXy41AFVJZRsH1q9fr6FDh2rlypVq1aqVJPGdoAoiSKHSKygoUL9+/fSXv/xFhw4dUnZ2tsaOHes4H1r6/RzoiRMnasyYMZozZ44OHjxYbvUYY5SXl6f9+/crLS1NP/zwg/r27avQ0FCFhoZKkrp166b58+eXWw1AdeTOY4EkXXnllU6zcx0+fFjp6emOL1kALp07jAPr16/XgAEDtGLFCvXo0cOxnO8EVY+nqwsALlV+fr7y8vIUEhIiLy8vJScna8WKFerUqZOjz913362uXbvqxRdflL+/v4YMGaINGzbIw8OjRK+Rl5fn+LugoEB5eXmqWbOm7Ha73nzzTV111VVq1KiRcnJyNH36dPn6+qpt27by8/PTgQMHnLYVFRWlt956S3FxcWXzBgCQ5N5jgSSNHDlS/fv317Bhw9SyZUs99NBDuuaaa9SoUaOyfSOAaszV48CGDRvUv39/vf766+rZs6fTelFRUXwnqGI4IoVKz9/fX88//7zGjBmjgIAAPf7447r99tsd7S+++KK2b9+uhQsXSpLmzp2rvLw8zZ49W5K0efNm+fn5XfQ1fHx85OPjI0nq0KGDfHx8tGnTJknS/v37dd1118nf31+XX3659u/fr7Vr1yowMFAeHh6qV6+e00OS6tSpw+k8QBlz57FAkrp37665c+eqX79+uuyyy5SWlqbly5eX+fsAVGeuHgdmzpypnJwc3X777fLz83M8JPGdoAqymT8e66ymcnJyFBgYqOzs7HI7Xx4AAACA+ytpNuCIFAAAAABYRJACAAAAAIsIUgAAAABgEUEKAAAAACwiSKFaW7Bgga699lpXlwHAhRgHgOqJzz4uFUEKKAVjjLp06SKbzaasrKwL9issLNSECRNUu3ZtBQcHa+LEiTpz5kzFFQqgzLVo0cJpWmMvL6+Lzur0t7/9TZ6enk7rvPXWWxVYMYCy8Pbbb6tTp06qVauWYmNjndry8/M1evRoNWzYUP7+/oqJidGSJUsuur1rr71WXl5eTmNDWlpaOe4Byho35AVKYeHChfLy8vrTfrNnz1ZSUpK+//57SVKvXr00Z84czZgxo7xLBFBOdu3a5fT8lltuUURExEXXufnmm7Vq1apyrApAeQsODlZCQoL27Nmjd955x6ntzJkzioiI0GeffaZGjRopOTlZvXr1Ur169XT99ddfcJtPPvmkEhISyrlylBeOSMGtRUdHa+7cubr66qvl6+urXr166fjx4xo3bpyCgoLUtGlTff75547+hYWFmjFjhho3bqyQkBD17t3b6dedXbt2qWPHjvL391e3bt1K9ctPamqq5s+fr3nz5v1p3yVLlmj69OmKiIhQRESEHn74YS1evNjyawLVmTuOA2elpaXp448/1qhRoy5pHwGcy90++/Hx8Ro4cKDq1q17Tpuvr69mzZqlxo0by2azqWPHjurWrZuSkpJK/wbA7RGk4PbeeustrVy5UmlpaUpNTVXHjh0VHx+vY8eOafDgwRo7dqyj78MPP6wtW7YoKSlJ6enpuvzyyzVo0CBJv/9a1Lt3b/Xo0UPHjh3TnDlz9PLLLzu91rhx4zRu3LiL1nPPPffob3/7m0JCQi7a77ffftOvv/7qdPg/NjZWBw8eVHZ2tsV3Aaje3G0cOGvZsmVq3ry5OnTocNF+69evV0hIiC6//HI9/PDDysvLs/gOANWTu372/0xeXp6+/PJLXXnllRftN3v2bAUHB6tNmzZ69dVXy+S1UYEMTHZ2tpFksrOzXV0K/keDBg3MokWLHM+nTJliOnbs6Hi+a9cuY7PZTH5+vikuLja+vr4mJSXF0X769Gljt9vNwYMHzaZNm0xAQIApKChwtI8dO9Zcc801Ja5nxYoVpkePHsYYY/bt22ckmd9+++28fQ8ePGgkmSNHjjiWHT582EgyqampJX5NoLpzt3HgrOLiYtOkSROzYMGCi/bbuXOnSU1NNUVFRea7774zrVu3Nn/9618tvx5Q3bjrZ/+VV14xrVu3vmB7cXGxGTJkiLn22mtNUVHRBft9/vnnJisryxQUFJg1a9aYgIAAs3LlSsv1oOyVNBtwRApuLywszPF3rVq1znlujNGpU6d09OhRnTx5Ul27dlVQUJCCgoIUHh6umjVrKjU1VWlpaYqMjFSNGjUc6zdo0KDEdRw/flxTp07VCy+8UKL+fn5+kuR09Ons3/7+/iV+XQDuMw780caNG5WamqqhQ4detF+LFi1Ur1492e12tWzZUnPmzGGyCaCE3PGzfzHGGI0bN067d+/WqlWrZLdf+Kt2XFycAgMDVaNGDfXs2VN/+ctfGBsqGSabQJUREhKiWrVqKTk5WTExMee0b968WWlpaSosLHQMpAcPHizx9nfs2KG0tDTFxcVJkoqLiyVJjRs31osvvqgBAwY49a9du7bq1aunlJQUNW7cWJKUkpKiqKgoBQYGlmofAVxceY8Df/Tyyy+rT58+f3qa7/+62BcrAKVTkZ/9CzHGaPz48UpOTta6dess/7eesaHy4f8xVBl2u11jx47Vfffdp9TUVEnSsWPHHL/udOzYUcHBwXrsscdUUFCg5ORkS7/8xMXFad++fUpJSVFKSoo++ugjSb8PzjfeeON51xk5cqQef/xxZWRkKCMjQ3PmzNHdd999iXsK4ELKexw4KysrS++++26JJpl47733dOzYMUnS7t279dBDD6l///6WXxPAhVXEZ7+oqEh5eXkqLCyUMUZ5eXnKz893tE+YMEFbtmzR2rVrVbt27YtuKysrSx999JFOnTqloqIirVu3TosWLWJsqGQIUqhS5s6dq7i4OHXv3l3+/v5q166dPv30U0lSjRo19MEHH+iTTz5RcHCwpk6dqrvuustp/bFjxzpduPpHXl5eqlevnuMRHh4uSYqMjFStWrXOu/4jjzyiuLg4XXHFFbriiivUuXNnPfTQQ+Wx6wD+v/IcB85asWKFwsPDFR8ff07bnDlz1KtXL8fzd955R82aNXPMOtazZ089/fTTZbCnAP6ovD/7r732mnx8fDRmzBjt2LFDPj4+atasmSTpwIEDWrhwoXbv3q0GDRo47gv1x+2dvQWK9PsMgzNnzlR4eLhq166te++9V/Pnz9dtt91W1m8LypHNGGNcXYSr5eTkKDAwUNnZ2Re9qSIAAACAqq2k2YAjUgAAAABgEUEKAAAAACwiSAEAAACARQQpAAAAALCIIAUAAAAAFhGkUO3t3LlTPXv2VGhoqGw2m7Kyspzaly5dKg8PD8dUpn5+fpo3b94Ft9erVy+nvt7e3rLb7Tp69Og5fQcPHiybzaaUlJQy3isAVv3ZWPBHVj67xhh16dLlnG0+99xzuuqqq+Tl5aU+ffpccv0ALt2yZcvUvn17BQYGKiIiQqNGjXL63Obm5mrs2LGKiIhQUFCQRo4cqVOnTl10m1u2bFHnzp3l5+enOnXqaMaMGY62P35f8PPzU40aNXTllVeW1+6hjBGkUO3VqFFDAwcO1NKlSy/Yp1WrVsrNzXU8HnjggQv2/fjjj536jh49WvHx8QoNDXXq9+GHHyozM7OsdgPAJSrJWCBZ/+wuXLhQXl5e5yyPjIzU9OnTNXr0aKulAignp06d0rx585SZmaldu3YpPT1d48aNc7Tfd999+uWXX/T9999r//79SktLU0JCwgW3t2PHDvXt21dTpkzR8ePHtW/fPg0YMMDR/sfvC7m5ubriiis0aNCg8txFlCUDk52dbSSZ7OxsV5dSbf397383TZo0MX5+fqZRo0bm2WefdbT17t3bzJw506n/2LFjzZgxY4wxxvz2229mwIABJjAw0DRr1sw888wzpjT/tPft22ckmd9++81p+SuvvGJat25teXvGGHP69GlTu3Zt8+abbzotz8nJMU2bNjU//fSTkWS2b99equ0DVY07jwXGWP/sHjx40DRq1Mh8/fXXF9zmo48+am699VbLdQJVlTuMA2e9//77JioqyvH8sssuM+vWrXM837Bhg/H29janTp067/oDBgww06ZNK9FrJScnGw8PD3Po0KFS14uyUdJswBEpuIUGDRpo/fr1ysnJ0csvv6wpU6Zoy5YtkqRhw4bp9ddfd/QtKCjQ22+/reHDh0uSJk6cqJMnT+rAgQNKTEzUa6+95rTtFStWXPJh8t27d6tOnTpq2LChxo0bd9FTfv7ovffek91uV9++fZ2WT5s2TcOGDVPTpk0vqS6gqnH3scDqZ/eee+7R3/72N4WEhFzS6wLViTuNAxs3bnTqX1xcLGOM0/O8vDzt2bPngusXFBQoNjZWl112mW644Qbt3r37vH0XL16sXr16KTIyssT1wcUqJte5N45IuZ9bb73VzJ492xhjTF5enqldu7bZunWrMcaYlStXmsaNGxtjjDlz5oypUaOG+eqrrxzrvv3222X6K/TevXvNnj17TFFRkfnll19Mjx49TO/evUu0ze7du5uEhASnZVu2bDEtWrQw+fn5xhjDESngItxpLLD62V2xYoXp0aPHRbdpDEekgD/jinHAGGM++ugjExAQYHbs2OFYNnz4cNOjRw9z5MgRc+TIERMfH28kmc2bN593Gx4eHqZu3brmu+++M3l5eeaBBx4wzZo1M4WFhU79cnNzTUBAgFm1alWpakXZ4ogUKpXly5erbdu2Cg4OVlBQkD766CPH5AxeXl4aOHCgXn31VUnSq6++qmHDhkmSjh49qsLCQkVFRTm2Vb9+/TKtrVGjRmrSpInsdrsaNmyoZ555RqtXr/7Ti0v37dunxMREjRo1yrGsoKBAY8aM0QsvvKCaNWuWaZ1AVeCuY4HVz+7x48c1depUvfDCC2VWA1BduMM4sH79eg0dOlQrV65Uq1atHMsXLFig+vXrq3Xr1mrXrp169+4tSRc86uzn56eRI0eqZcuW8vLy0qxZs/Tzzz/rp59+cur3zjvvqFatWrrppptKVS9cgyAFlzt48KBGjBihefPm6fDhw8rKytKNN97odOh82LBheuutt5SRkaGPP/7YMWiGhoaqRo0aSk1NddpeebLbf//Y/LG+81m8eLHat2+vli1bOpalpaXphx9+UN++fRUaGuqYgKJbt26aP39++RUNVALuPBZY/ezu2LFDaWlpiouLU2hoqNq2bStJaty4sf7973+XWV1AVeMO48D69es1YMAArVixQj169HBqq127tpYsWaJDhw7pwIEDatKkicLDw9WsWbPzbqt169ZOz20223n7vfzyyxoxYoQ8PT0t1wsXqoCjY26PU/tca9euXcZut5tvv/3WFBUVmQ8//ND4+PiYSZMmOfVr3Lix6dmzp+ncubPT8iFDhpibbrrJZGVlmfT0dNOhQwdLh/GLi4vN6dOnzY8//mgkmYyMDHP69GlTXFxsjDHmww8/NGlpacYYY1JTU831119vbrzxxotu88yZM6Zu3brmpZdeOmd5amqq00OS+eSTT0xOTk6JawaqInceC6x+dvPy8pz6bt261Ugyu3btMidPnjTGGFNYWGhOnz5tHn74YXPLLbeY06dPO04bBKorV48DiYmJJigoyKxevfq87b/88ovJyMgwxcXFZtu2baZZs2bmxRdfvOD2Xn/9dVOvXj3z448/moKCAvPQQw+ZmJgYp1P7fvzxR2Oz2cxPP/1U4jpRvkqaDQhShiDlDh555BETEhJigoKCzPDhw83tt99+zqD5t7/9zUg6Z8A6fvy46devnwkICDDNmjUzf//7303NmjUd7a+//rpp3rz5BV/77LUL//vYt2+fMcaY+++/34SFhRkfHx9Tr149M3bsWHPs2LGLbv/DDz80vr6+JQpH4hopwMGdx4L/9b+f3ccff9zccMMNF932H6+RevTRR895rWuuueaC9QHVhSvHgWuvvdbY7Xbj6+vr9DjrvffeM3Xr1jU+Pj6madOm5l//+pfT+ucbB5544gkTERFhgoKCzPXXX39OYJoyZYrp2rVrid4bVIySZgObMX9yflI1kJOTo8DAQGVnZysgIMDV5eASvfHGG5oxY8YFZ9ABUD0wFgBgHEBplDQbcI0UKr09e/bo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "community_data = db_query(\"\"\"\n", + " MATCH (n:__Community__)\n", + " RETURN n.level AS level, count{(n)-[:IN_COMMUNITY]-()} AS members\n", + "\"\"\")\n", + "\n", + "stats = community_data.groupby('level').agg(\n", + " min_members=('members', 'min'),\n", + " max_members=('members', 'max'),\n", + " median_members=('members', 'median'),\n", + " avg_members=('members', 'mean'),\n", + " num_communities=('members', 'count'),\n", + " total_members=('members', 'sum')\n", + ").reset_index()\n", + "\n", + "# Create box plot\n", + "plt.figure(figsize=(10, 6))\n", + "sns.boxplot(x='level', y='members', data=community_data, palette='viridis')\n", + "plt.xlabel('Level')\n", + "plt.ylabel('Members')\n", + "\n", + "# Add statistical annotations\n", + "for i in range(stats.shape[0]):\n", + " level = stats['level'][i]\n", + " max_val = stats['max_members'][i]\n", + " text = (f\"num: {stats['num_communities'][i]}\\n\"\n", + " f\"all_members: {stats['total_members'][i]}\\n\"\n", + " f\"min: {stats['min_members'][i]}\\n\"\n", + " f\"max: {stats['max_members'][i]}\\n\"\n", + " f\"med: {stats['median_members'][i]}\\n\"\n", + " f\"avg: {stats['avg_members'][i]:.2f}\")\n", + " plt.text(level, 85, text, horizontalalignment='center', fontsize=9)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8385cc7e-d36f-4b12-b90e-1d2d7f2b6096", + "metadata": {}, + "source": [ + "# Retrievers" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "1b1ec651-aad5-4642-b8b5-fc4712f42630", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: []" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "index_name = 'entity'\n", + "\n", + "db_query(\"\"\"\n", + "CREATE VECTOR INDEX \"\"\" + index_name + \"\"\" IF NOT EXISTS FOR (e:__Entity__) ON e.description_embedding\n", + "OPTIONS {indexConfig: {\n", + " `vector.dimensions`: 1536,\n", + " `vector.similarity_function`: 'cosine'\n", + "}}\n", + "\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "633005e0-3b14-4cbc-8990-606cb2717fc6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: []" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "db_query(\"\"\"\n", + "MATCH (n:`__Community__`)<-[:IN_COMMUNITY]-()<-[:HAS_ENTITY]-(c)\n", + "WITH n, count(distinct c) AS chunkCount\n", + "SET n.weight = chunkCount\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "c3df7c79-660e-4114-8427-7a436295e109", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.vectorstores import Neo4jVector\n", + "\n", + "topChunks = 3\n", + "topCommunities = 3\n", + "topOutsideRels = 10\n", + "topInsideRels = 10\n", + "topEntities = 10\n", + "\n", + "lc_retrieval_query = \"\"\"\n", + "WITH collect(node) as nodes\n", + "// Entity - Text Unit Mapping\n", + "WITH\n", + "collect {\n", + " UNWIND nodes as n\n", + " MATCH (n)<-[:HAS_ENTITY]->(c:__Chunk__)\n", + " WITH c, count(distinct n) as freq\n", + " RETURN c.text AS chunkText\n", + " ORDER BY freq DESC\n", + " LIMIT $topChunks\n", + "} AS text_mapping,\n", + "// Entity - Report Mapping\n", + "collect {\n", + " UNWIND nodes as n\n", + " MATCH (n)-[:IN_COMMUNITY]->(c:__Community__)\n", + " WITH c, c.rank as rank, c.weight AS weight\n", + " RETURN c.summary \n", + " ORDER BY rank, weight DESC\n", + " LIMIT $topCommunities\n", + "} AS report_mapping,\n", + "// Outside Relationships \n", + "collect {\n", + " UNWIND nodes as n\n", + " MATCH (n)-[r:RELATED]-(m) \n", + " WHERE NOT m IN nodes\n", + " RETURN r.description AS descriptionText\n", + " ORDER BY r.rank, r.weight DESC \n", + " LIMIT $topOutsideRels\n", + "} as outsideRels,\n", + "// Inside Relationships \n", + "collect {\n", + " UNWIND nodes as n\n", + " MATCH (n)-[r:RELATED]-(m) \n", + " WHERE m IN nodes\n", + " RETURN r.description AS descriptionText\n", + " ORDER BY r.rank, r.weight DESC \n", + " LIMIT $topInsideRels\n", + "} as insideRels,\n", + "// Entities description\n", + "collect {\n", + " UNWIND nodes as n\n", + " RETURN n.description AS descriptionText\n", + "} as entities\n", + "// We don't have covariates or claims here\n", + "RETURN {Chunks: text_mapping, Reports: report_mapping, \n", + " Relationships: outsideRels + insideRels, \n", + " Entities: entities} AS text, 1.0 AS score, {} AS metadata\n", + "\"\"\"\n", + "\n", + "lc_vector = Neo4jVector.from_existing_index(\n", + " OpenAIEmbeddings(),\n", + " url=NEO4J_URI,\n", + " username=NEO4J_USERNAME,\n", + " password=NEO4J_PASSWORD,\n", + " index_name=index_name,\n", + " retrieval_query=lc_retrieval_query\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "51ee7acf-00b5-4edc-9665-c17e8ccf4ee5", + "metadata": {}, + "outputs": [], + "source": [ + "docs = lc_vector.similarity_search(\"Whats up dog?\", \n", + " k=topEntities, params={\"topChunks\":topChunks, \"topCommunities\":topCommunities, \"topOutsideRels\":topOutsideRels, \"topInsideRels\":topInsideRels})\n", + "#print(docs[0].page_content)" + ] + }, + { + "cell_type": "markdown", + "id": "182af882-d300-49b1-9983-4e11af9bceb7", + "metadata": {}, + "source": [ + "## LlamaIndex" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "eb29ce7e-2630-451d-a42d-1df6b8f3e015", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: []" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/vector_stores/utils.py#L32\n", + "from llama_index.core.schema import TextNode\n", + "from llama_index.core.vector_stores.utils import node_to_metadata_dict\n", + "\n", + "content = node_to_metadata_dict(TextNode(), remove_text=True, flat_metadata=False)\n", + "\n", + "db_query(\"\"\"\n", + "MATCH (e:__Entity__)\n", + "SET e += $content\"\"\", {\"content\": content})" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "id": "4aa8faaf-4d6e-4692-9bff-ebd031b56580", + "metadata": {}, + "outputs": [], + "source": [ + "from llama_index.vector_stores.neo4jvector import Neo4jVectorStore\n", + "from llama_index.core import VectorStoreIndex\n", + "\n", + "embed_dim = 1536\n", + "\n", + "retrieval_query = f\"\"\"\n", + "WITH collect(node) as nodes\n", + "// Entity - Text Unit Mapping\n", + "WITH\n", + "nodes,\n", + "collect {{\n", + " UNWIND nodes as n\n", + " MATCH (n)<-[:HAS_ENTITY]->(c:__Chunk__)\n", + " WITH c, count(distinct n) as freq\n", + " RETURN c.text AS chunkText\n", + " ORDER BY freq DESC\n", + " LIMIT {topChunks}\n", + "}} AS text_mapping,\n", + "// Entity - Report Mapping\n", + "collect {{\n", + " UNWIND nodes as n\n", + " MATCH (n)-[:IN_COMMUNITY]->(c:__Community__)\n", + " WITH c, c.rank as rank, c.weight AS weight\n", + " RETURN c.summary \n", + " ORDER BY rank, weight DESC\n", + " LIMIT {topCommunities}\n", + "}} AS report_mapping,\n", + "// Outside Relationships \n", + "collect {{\n", + " UNWIND nodes as n\n", + " MATCH (n)-[r:RELATED]-(m) \n", + " WHERE NOT m IN nodes\n", + " RETURN r.description AS descriptionText\n", + " ORDER BY r.rank, r.weight DESC \n", + " LIMIT {topOutsideRels}\n", + "}} as outsideRels,\n", + "// Inside Relationships \n", + "collect {{\n", + " UNWIND nodes as n\n", + " MATCH (n)-[r:RELATED]-(m) \n", + " WHERE m IN nodes\n", + " RETURN r.description AS descriptionText\n", + " ORDER BY r.rank, r.weight DESC \n", + " LIMIT {topInsideRels}\n", + "}} as insideRels,\n", + "// Entities description\n", + "collect {{\n", + " UNWIND nodes as n\n", + " RETURN n.description AS descriptionText\n", + "}} as entities\n", + "// We don't have covariates or claims here\n", + "RETURN \"Chunks:\" + apoc.text.join(text_mapping, '|') + \"\\nReports: \" + apoc.text.join(report_mapping,'|') + \n", + " \"\\nRelationships: \" + apoc.text.join(outsideRels + insideRels, '|') + \n", + " \"\\nEntities: \" + apoc.text.join(entities, \"|\") AS text, 1.0 AS score, nodes[0].id AS id, {{_node_type:nodes[0]._node_type, _node_content:nodes[0]._node_content}} AS metadata\n", + "\"\"\"\n", + "\n", + "neo4j_vector = Neo4jVectorStore(NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_URI, embed_dim, index_name=index_name,retrieval_query=retrieval_query)\n", + "loaded_index = VectorStoreIndex.from_vector_store(neo4j_vector).as_query_engine(similarity_top_k=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "id": "c43b3f7e-dfad-4d5c-b889-8e913f86ce31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gutenberg is a project that offers free eBooks or digital copies of books that are in the public domain.\n" + ] + } + ], + "source": [ + "response = loaded_index.query(\"What is Gutenberg?\")\n", + "print(response.response)" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "id": "557441bb-60f1-4f1a-8f50-98fdc7480394", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chunks:.\n", + " Mr. Fezziwig, a kind-hearted, jovial old merchant.\n", + " Fred, Scrooge's nephew.\n", + " Ghost of Christmas Past, a phantom showing things past.\n", + " Ghost of Christmas Present, a spirit of a kind, generous,\n", + " and hearty nature.\n", + " Ghost of Christmas Yet to Come, an apparition showing the shadows\n", + " of things which yet may happen.\n", + " Ghost of Jacob Marley, a spectre of Scrooge's former partner in business.\n", + " Joe, a marine-store dealer and receiver of stolen goods.\n", + " Ebenezer Scrooge, a grasping, covetous old man, the surviving partner\n", + " of the firm of Scrooge and Marley.\n", + " Mr. Topper, a bachelor.\n", + " Dick Wilkins, a fellow apprentice of Scrooge's.\n", + "\n", + " Belle, a comely matron, an old sweetheart of Scrooge's.\n", + " Caroline, wife of one of Scrooge's debtors.\n", + " Mrs. Cratchit, wife of Bob Cratchit.\n", + " Belinda and Martha Cratchit, daughters of the preceding.\n", + "\n", + " Mrs. Dilber, a laundress.\n", + " Fan, the sister of Scrooge.\n", + " Mrs. Fezziwig, the worthy partner of Mr. Fezziwig.\n", + "\n", + "\n", + "\n", + "\n", + " CONTENTS\n", + "\n", + " STAVE ONE--MARLEY'S GHOST 3\n", + " STAVE TWO--THE FIRST OF THE THREE SPI| debtors.\n", + " Mrs. Cratchit, wife of Bob Cratchit.\n", + " Belinda and Martha Cratchit, daughters of the preceding.\n", + "\n", + " Mrs. Dilber, a laundress.\n", + " Fan, the sister of Scrooge.\n", + " Mrs. Fezziwig, the worthy partner of Mr. Fezziwig.\n", + "\n", + "\n", + "\n", + "\n", + " CONTENTS\n", + "\n", + " STAVE ONE--MARLEY'S GHOST 3\n", + " STAVE TWO--THE FIRST OF THE THREE SPIRITS 37\n", + " STAVE THREE--THE SECOND OF THE THREE SPIRITS 69\n", + " STAVE FOUR--THE LAST OF THE SPIRITS 111\n", + " STAVE FIVE--THE END OF IT 137\n", + "\n", + "\n", + " LIST OF ILLUSTRATIONS\n", + "\n", + " _IN COLOUR_\n", + "\n", + "\n", + " \"How now?\" said Scrooge, caustic\n", + " and cold as ever. \"What do you\n", + " want with me?\" _Frontispiece_\n", + "\n", + " Bob Cratchit went down a slide on\n", + " Cornhill, at the end of a lane of\n", + " boys, twenty times, in honour of\n", + " its being Christmas Eve 16\n", + "\n", + " Nobody under the bed; nobody in\n", + " the closet; nobody in his dressing-gown,\n", + " which was hanging up\n", + " in a suspicious attitude against\n", + " the wall 20\n", + "\n", + " The air was filled with phantoms,\n", + " wandering hither| mouth. 'Come into the parlour. You were made free of it\n", + "long ago, you know; and the other two an't strangers. Stop till I shut\n", + "the door of the shop. Ah! how it skreeks! There an't such a rusty bit of\n", + "metal in the place as its own hinges, I believe; and I'm sure there's no\n", + "such old bones here as mine. Ha! ha! We're all suitable to our calling,\n", + "we're well matched. Come into the parlour. Come into the parlour.'\n", + "\n", + "The parlour was the space behind the screen of rags. The old man raked\n", + "the fire together with an old stair-rod, and having trimmed his smoky\n", + "lamp (for it was night) with the stem of his pipe, put it into his mouth\n", + "again.\n", + "\n", + "While he did this, the woman who had already spoken threw her bundle on\n", + "the floor, and sat down in a flaunting manner on a stool, crossing her\n", + "elbows on her knees, and looking with a bold defiance at the other two.\n", + "\n", + "'What odds, then? What odds, Mrs. Dilber?' said the woman. 'Every person\n", + "has a right to take care of themselves. _He_ always did!'\n", + "\n", + "'That's true, indeed!' said the laundress. 'No man more so.'\n", + "\n", + "'Why, then, don't stand staring as if you was afraid, woman! Who's the\n", + "Reports: The Cratchit family, under the matriarchal guidance of Mrs. Cratchit, showcases a profound example of familial unity and resilience amidst financial hardship. Central to their narrative is the preparation and celebration of Christmas, a time that brings out their collective strength, love, and hope. The family's dynamics, particularly their interactions with each other and their collective efforts in preparing for Christmas dinner, underscore their deep bonds and the significant role of Mrs. Cratchit in maintaining the family's spirit.|The Cratchit family, under the matriarchal guidance of Mrs. Cratchit, showcases a profound example of familial unity and resilience amidst financial hardship. Central to their narrative is the preparation and celebration of Christmas, a time that brings out their collective strength, love, and hope. The family's dynamics, particularly their interactions with each other and their collective efforts in preparing for Christmas dinner, underscore their deep bonds and the significant role of Mrs. Cratchit in maintaining the family's spirit.|This report delves into the complex character of Joe and his interactions within his community, particularly focusing on his dealings with Mrs. Dilber and the first woman. Joe, a marine-store dealer known for his involvement in the trade of goods with dubious provenance, plays a pivotal role in the economic and social fabric of his environment. His transactions and the nature of his business dealings offer insights into the moral and ethical nuances of his character and those he interacts with.\n", + "Relationships: \"The protagonist speculates that the source of the blaze of ruddy light might be in the adjoining room, indicating a potential place of origin.\"|\"Mrs. Dilber and The Man agree on not picking holes in each other's coats, indicating a mutual understanding or agreement.\"|\"Mrs. Dilber laughs at the notion of The Dead Man wanting to keep his possessions after death, showing her perspective on his character and actions.\"|\"Mrs. Dilber and The Woman discuss the justification of their actions and the character of The Dead Man.\"|\"Joe appraises and negotiates the value of items brought by Mrs. Dilber, indicating a business transaction between them.\"|\"Mrs. Dilber interacts with Old Joe, discussing the value of items and the judgment on the deceased.\"|Bob experiences an act of kindness and receives an offer of help from Mr. Scrooge's Nephew, suggesting a supportive and positive encounter between the two. This interaction indicates a meaningful and benevolent relationship, where Mr. Scrooge's Nephew extends his generosity and assistance to Bob, highlighting the warmth and goodwill present in their connection.|\"Cratchit's wife expresses concern for Tiny Tim's health, indicating a familial relationship.\"|\"Bob is the father of the two young Cratchits, as indicated by their anticipation of his arrival.\"|\"Bob interacts lovingly with his family, showing a deep familial bond.\"|\"Bob and Cratchit may refer to the same person, indicating a relationship between the name used by Scrooge and his formal name.\"|\"Bob and Cratchit may refer to the same person, indicating a relationship between the name used by Scrooge and his formal name.\"|Bob and Mrs. Cratchit are married, sharing both the emotional and practical burdens of their family's experiences with a deep sense of unity and support for each other. Their relationship is characterized by mutual respect and affection, as evidenced by their familial or close interactions, particularly when discussing topics of significant emotional weight such as Scrooge, Christmas Day, and the future of their family. They engage in hopeful dialogues, not only about the immediate concerns of their family but also about the broader implications of kindness they have received from strangers, which suggests an optimistic outlook on life despite their challenges.\n", + "\n", + "Bob is notably appreciative of Mrs. Cratchit's industry and speed, highlighting a positive and supportive dynamic within their marriage. This admiration is a testament to their strong partnership, where both individuals recognize and value the contributions of the other to the well-being of their family. Mrs. Cratchit and Bob are deeply involved in the preparation and enjoyment of family dinners, further emphasizing their roles as caring and engaged family members.\n", + "\n", + "Their conversations also touch upon the future of their family and the remembrance of Tiny Tim, reinforcing their marital relationship and shared commitment to their children's memories and hopes. Through these interactions, it is clear that Bob and Mrs. Cratchit are not only united by love but also by a shared resilience and determination to provide for their family, navigate their hardships together, and maintain a hopeful perspective for the future.|Bob and Mrs. Cratchit are married, sharing both the emotional and practical burdens of their family's experiences with a deep sense of unity and support for each other. Their relationship is characterized by mutual respect and affection, as evidenced by their familial or close interactions, particularly when discussing topics of significant emotional weight such as Scrooge, Christmas Day, and the future of their family. They engage in hopeful dialogues, not only about the immediate concerns of their family but also about the broader implications of kindness they have received from strangers, which suggests an optimistic outlook on life despite their challenges.\n", + "\n", + "Bob is notably appreciative of Mrs. Cratchit's industry and speed, highlighting a positive and supportive dynamic within their marriage. This admiration is a testament to their strong partnership, where both individuals recognize and value the contributions of the other to the well-being of their family. Mrs. Cratchit and Bob are deeply involved in the preparation and enjoyment of family dinners, further emphasizing their roles as caring and engaged family members.\n", + "\n", + "Their conversations also touch upon the future of their family and the remembrance of Tiny Tim, reinforcing their marital relationship and shared commitment to their children's memories and hopes. Through these interactions, it is clear that Bob and Mrs. Cratchit are not only united by love but also by a shared resilience and determination to provide for their family, navigate their hardships together, and maintain a hopeful perspective for the future.\n", + "Entities: \"Cratchit's wife is concerned about showing weak eyes to her husband and is involved in a conversation about Tiny Tim's health.\"|Mrs. Dilber is depicted as a working-class character, specifically a laundress, within the story. Her profession is highlighted by her involvement in bringing items such as sheets, towels, and silver teaspoons to Joe for appraisal, indicating her role in the lower economic strata of society. Mrs. Dilber is not just a background character; she actively participates in the narrative by reflecting on the consequences of a man's actions in life and his solitary death. This reflection suggests a depth to her character, showing her awareness of moral and ethical considerations. Furthermore, Mrs. Dilber engages in conversations about the rights of individuals to take care of themselves, highlighting themes of self-preservation and the consequences of one's actions. Her interactions with others in a parlour setting reveal a bold and defiant side to her character, suggesting she is unafraid to speak her mind and stand up for her beliefs. Through these descriptions, Mrs. Dilber emerges as a complex character who embodies the struggles of the working class while also engaging with significant moral questions of her time.|Mrs. Cratchit, the wife of Bob Cratchit and mother to Belinda and Martha Cratchit, is a character deeply embedded in the fabric of her family's life, showcasing a blend of strength, affection, and dedication amidst their challenging financial circumstances. She harbors a strong disdain for Mr. Scrooge, reflecting her desire to confront him about his behavior towards her family, which suffers under Scrooge's miserliness. Despite these hardships, Mrs. Cratchit strives to maintain a sense of pride and celebration, particularly during Christmas, a time when her industrious and hopeful nature shines brightest.\n", + "\n", + "She is deeply concerned about the well-being of her family members, especially the health and behavior of Tiny Tim, and is always mindful of their whereabouts and emotional states. Mrs. Cratchit's role within the household is pivotal; she is involved in culinary preparations, notably making the gravy and a Christmas pudding, which she does with great care and nervousness about the outcome, hoping to bring joy and satisfaction to her family's Christmas celebration. Her efforts are praised by Bob, highlighting her speed, industry, and the love she pours into every task, from welcoming others warmly to engaging in conversations about the family's prospects and Peter's future.\n", + "\n", + "Mrs. Cratchit's character is a testament to her resilience and the love she has for her family, showing affection through acts like kissing Bob and warmly welcoming Martha. Her dedication to preparing and presenting the dinner, especially the pudding, underscores her role in fostering a sense of normalcy and celebration despite their poor financial situation. Through her actions and interactions, Mrs. Cratchit emerges as a supportive, proud, and hopeful figure, embodying the spirit of family unity and the importance of kindness and affection in overcoming adversity.|\"Cratchit is mentioned as coming late, which was a significant event for Scrooge, indicating his importance in the narrative.\"|\"The Rats are described as gnawing beneath the hearthstone in the room of Scrooge's death, contributing to the desolate and neglected setting.\"|The Portly Gentlemen are introduced as pleasant individuals who enter Scrooge's office with books and papers, possibly representing charitable or community interests. Their presence and the materials they bring suggest they are there to discuss charity, potentially challenging Scrooge's worldview.|\"The location from which the source of the ghostly light is speculated to emanate, leading the protagonist to consider investigating.\"|Bob Cratchit is depicted as a resilient, cheerful, and deeply caring individual, particularly within the context of his family life. He is the loving father of Tiny Tim, with whom he shares a profound bond, underscored by his fear for his son's well-being and his deep involvement in Tiny Tim's health and happiness. Bob's character is one of optimism and gratitude, even in the face of hardship, often expressing his hopefulness and appreciation for the small joys in life, such as the quality of a Christmas goose, which he admires with disbelief at its excellence.\n", + "\n", + "Bob's relationship with his employer, Scrooge, is complex. He refers to Scrooge as \"the Founder of the Feast,\" indicating a direct, albeit complicated, relationship. Despite his grievances against Scrooge, Bob maintains the spirit of Christmas and tries to instill this sentiment in his family. His interactions with Scrooge include a moment of reconciliation and happiness, as well as a surprising change in treatment from Scrooge, which Bob pleads for understanding and later shares with his family during a story of an encounter with Mr. Scrooge's nephew.\n", + "\n", + "Bob is a devoted family man, deeply affected by the loss of his child, which leads to a moment of emotional breakdown. This loss does not diminish his love and care for his family; rather, it reinforces his role as a central family figure who discusses the future and remembers Tiny Tim with unity and love. His anticipation by his family as \"little Bob\" and the father highlights his importance and centrality in their lives.\n", + "\n", + "Despite being late to a meeting with Scrooge, for which he apologizes, mentioning his merriment the day before, Bob's character is consistently portrayed as mild and dedicated to maintaining the spirit of Christmas. His involvement in preparing a Christmas celebration, despite concerns about Tiny Tim's health, showcases his commitment to his family's well-being and happiness.\n", + "\n", + "In summary, Bob Cratchit is a character of resilience, cheerfulness, and deep familial love. He navigates his relationship with his employer, Scrooge, with a hopeful outlook, and despite facing personal hardships, including the profound loss of a child, he remains a devoted and optimistic family man, deeply cherished by his family and committed to the spirit of Christmas.|\"The Laundress is a character who agrees with Mrs. Dilber's statement about self-care, indicating a shared perspective among the characters.\"|\"A bachelor, possibly a friend or acquaintance within the story.\"\n" + ] + } + ], + "source": [ + "print(response.source_nodes[0].text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf77c8d4-ae4d-4a02-b0f5-dcd068e0ced2", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}