diff --git "a/TAA_load_data_hackathon .ipynb" "b/TAA_load_data_hackathon .ipynb" new file mode 100644--- /dev/null +++ "b/TAA_load_data_hackathon .ipynb" @@ -0,0 +1,11578 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "6E0pAs2_VDlS" + }, + "source": [ + "##Traversaal-AI-Hackathon\n", + "####Participant_Name: **TOOBA AHMED ALVI**\n", + "####Participant email: alvi.tooba@gmail.com\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "x4r59R7OUyb0" + }, + "source": [ + "INSTALLING LIBRATRIES" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "d-bN1otLQnkM", + "outputId": "12bedde3-0069-4006-87aa-473a10c3886f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting huggingface\n", + " Downloading huggingface-0.0.1-py3-none-any.whl (2.5 kB)\n", + "Collecting datasets\n", + " Downloading datasets-2.18.0-py3-none-any.whl (510 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m510.5/510.5 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from datasets) (3.13.1)\n", + "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.25.2)\n", + "Requirement already satisfied: pyarrow>=12.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (14.0.2)\n", + "Requirement already satisfied: pyarrow-hotfix in /usr/local/lib/python3.10/dist-packages (from datasets) (0.6)\n", + "Collecting dill<0.3.9,>=0.3.0 (from datasets)\n", + " Downloading dill-0.3.8-py3-none-any.whl (116 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (1.5.3)\n", + "Requirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.66.2)\n", + "Collecting xxhash (from datasets)\n", + " Downloading xxhash-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting multiprocess (from datasets)\n", + " Downloading multiprocess-0.70.16-py310-none-any.whl (134 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m12.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: fsspec[http]<=2024.2.0,>=2023.1.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (2023.6.0)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.9.3)\n", + "Requirement already satisfied: huggingface-hub>=0.19.4 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.20.3)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (24.0)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.1)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (23.2.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.4.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.0.5)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.9.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (4.0.3)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->datasets) (4.10.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->datasets) (2024.2.2)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2023.4)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->datasets) (1.16.0)\n", + "Installing collected packages: huggingface, xxhash, dill, multiprocess, datasets\n", + "Successfully installed datasets-2.18.0 dill-0.3.8 huggingface-0.0.1 multiprocess-0.70.16 xxhash-3.4.1\n", + "Collecting sentence-transformers\n", + " Downloading sentence_transformers-2.5.1-py3-none-any.whl (156 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m156.5/156.5 kB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting rank_bm25\n", + " Downloading rank_bm25-0.2.2-py3-none-any.whl (8.6 kB)\n", + "Requirement already satisfied: transformers<5.0.0,>=4.32.0 in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (4.38.2)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (4.66.2)\n", + "Requirement already satisfied: torch>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (2.2.1+cu121)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (1.25.2)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (1.2.2)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (1.11.4)\n", + "Requirement already satisfied: huggingface-hub>=0.15.1 in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (0.20.3)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from sentence-transformers) (9.4.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (3.13.1)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (2023.6.0)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (2.31.0)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (6.0.1)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (4.10.0)\n", + "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.15.1->sentence-transformers) (24.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.11.0->sentence-transformers) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.11.0->sentence-transformers) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.11.0->sentence-transformers) (3.1.3)\n", + "Collecting nvidia-cuda-nvrtc-cu12==12.1.105 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (23.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m23.7/23.7 MB\u001b[0m \u001b[31m55.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cuda-runtime-cu12==12.1.105 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (823 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m823.6/823.6 kB\u001b[0m \u001b[31m70.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cuda-cupti-cu12==12.1.105 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (14.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.1/14.1 MB\u001b[0m \u001b[31m88.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cudnn-cu12==8.9.2.26 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl (731.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m731.7/731.7 MB\u001b[0m \u001b[31m2.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cublas-cu12==12.1.3.1 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl (410.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m410.6/410.6 MB\u001b[0m \u001b[31m2.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cufft-cu12==11.0.2.54 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl (121.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.6/121.6 MB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-curand-cu12==10.3.2.106 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl (56.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.5/56.5 MB\u001b[0m \u001b[31m10.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cusolver-cu12==11.4.5.107 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl (124.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m124.2/124.2 MB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-cusparse-cu12==12.1.0.106 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl (196.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m196.0/196.0 MB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-nccl-cu12==2.19.3 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl (166.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m166.0/166.0 MB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting nvidia-nvtx-cu12==12.1.105 (from torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl (99 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m99.1/99.1 kB\u001b[0m \u001b[31m15.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: triton==2.2.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.11.0->sentence-transformers) (2.2.0)\n", + "Collecting nvidia-nvjitlink-cu12 (from nvidia-cusolver-cu12==11.4.5.107->torch>=1.11.0->sentence-transformers)\n", + " Downloading nvidia_nvjitlink_cu12-12.4.99-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m62.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers<5.0.0,>=4.32.0->sentence-transformers) (2023.12.25)\n", + "Requirement already satisfied: tokenizers<0.19,>=0.14 in /usr/local/lib/python3.10/dist-packages (from transformers<5.0.0,>=4.32.0->sentence-transformers) (0.15.2)\n", + "Requirement already satisfied: safetensors>=0.4.1 in /usr/local/lib/python3.10/dist-packages (from transformers<5.0.0,>=4.32.0->sentence-transformers) (0.4.2)\n", + "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->sentence-transformers) (1.3.2)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->sentence-transformers) (3.3.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.11.0->sentence-transformers) (2.1.5)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.15.1->sentence-transformers) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.15.1->sentence-transformers) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.15.1->sentence-transformers) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.15.1->sentence-transformers) (2024.2.2)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.11.0->sentence-transformers) (1.3.0)\n", + "Installing collected packages: rank_bm25, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, sentence-transformers\n", + "Successfully installed nvidia-cublas-cu12-12.1.3.1 nvidia-cuda-cupti-cu12-12.1.105 nvidia-cuda-nvrtc-cu12-12.1.105 nvidia-cuda-runtime-cu12-12.1.105 nvidia-cudnn-cu12-8.9.2.26 nvidia-cufft-cu12-11.0.2.54 nvidia-curand-cu12-10.3.2.106 nvidia-cusolver-cu12-11.4.5.107 nvidia-cusparse-cu12-12.1.0.106 nvidia-nccl-cu12-2.19.3 nvidia-nvjitlink-cu12-12.4.99 nvidia-nvtx-cu12-12.1.105 rank_bm25-0.2.2 sentence-transformers-2.5.1\n", + "Collecting openai==0.27.7\n", + " Downloading openai-0.27.7-py3-none-any.whl (71 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m72.0/72.0 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: requests>=2.20 in /usr/local/lib/python3.10/dist-packages (from openai==0.27.7) (2.31.0)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from openai==0.27.7) (4.66.2)\n", + "Requirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from openai==0.27.7) (3.9.3)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai==0.27.7) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai==0.27.7) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai==0.27.7) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.20->openai==0.27.7) (2024.2.2)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (1.3.1)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (23.2.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (1.4.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (6.0.5)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (1.9.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->openai==0.27.7) (4.0.3)\n", + "Installing collected packages: openai\n", + "Successfully installed openai-0.27.7\n", + "Collecting qdrant_client\n", + " Downloading qdrant_client-1.8.0-py3-none-any.whl (214 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m214.4/214.4 kB\u001b[0m \u001b[31m5.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: grpcio>=1.41.0 in /usr/local/lib/python3.10/dist-packages (from qdrant_client) (1.62.1)\n", + "Collecting grpcio-tools>=1.41.0 (from qdrant_client)\n", + " Downloading grpcio_tools-1.62.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m20.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting httpx[http2]>=0.14.0 (from qdrant_client)\n", + " Downloading httpx-0.27.0-py3-none-any.whl (75 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: numpy>=1.21 in /usr/local/lib/python3.10/dist-packages (from qdrant_client) (1.25.2)\n", + "Collecting portalocker<3.0.0,>=2.7.0 (from qdrant_client)\n", + " Downloading portalocker-2.8.2-py3-none-any.whl (17 kB)\n", + "Requirement already satisfied: pydantic>=1.10.8 in /usr/local/lib/python3.10/dist-packages (from qdrant_client) (2.6.4)\n", + "Requirement already satisfied: urllib3<3,>=1.26.14 in /usr/local/lib/python3.10/dist-packages (from qdrant_client) (2.0.7)\n", + "Collecting protobuf<5.0dev,>=4.21.6 (from grpcio-tools>=1.41.0->qdrant_client)\n", + " Downloading protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl (294 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m294.6/294.6 kB\u001b[0m \u001b[31m18.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from grpcio-tools>=1.41.0->qdrant_client) (67.7.2)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx[http2]>=0.14.0->qdrant_client) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx[http2]>=0.14.0->qdrant_client) (2024.2.2)\n", + "Collecting httpcore==1.* (from httpx[http2]>=0.14.0->qdrant_client)\n", + " Downloading httpcore-1.0.4-py3-none-any.whl (77 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.8/77.8 kB\u001b[0m \u001b[31m10.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx[http2]>=0.14.0->qdrant_client) (3.6)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx[http2]>=0.14.0->qdrant_client) (1.3.1)\n", + "Collecting h2<5,>=3 (from httpx[http2]>=0.14.0->qdrant_client)\n", + " Downloading h2-4.1.0-py3-none-any.whl (57 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m57.5/57.5 kB\u001b[0m \u001b[31m8.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting h11<0.15,>=0.13 (from httpcore==1.*->httpx[http2]>=0.14.0->qdrant_client)\n", + " Downloading h11-0.14.0-py3-none-any.whl (58 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m8.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=1.10.8->qdrant_client) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic>=1.10.8->qdrant_client) (2.16.3)\n", + "Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic>=1.10.8->qdrant_client) (4.10.0)\n", + "Collecting hyperframe<7,>=6.0 (from h2<5,>=3->httpx[http2]>=0.14.0->qdrant_client)\n", + " Downloading hyperframe-6.0.1-py3-none-any.whl (12 kB)\n", + "Collecting hpack<5,>=4.0 (from h2<5,>=3->httpx[http2]>=0.14.0->qdrant_client)\n", + " Downloading hpack-4.0.0-py3-none-any.whl (32 kB)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx[http2]>=0.14.0->qdrant_client) (1.2.0)\n", + "Installing collected packages: protobuf, portalocker, hyperframe, hpack, h11, httpcore, h2, grpcio-tools, httpx, qdrant_client\n", + " Attempting uninstall: protobuf\n", + " Found existing installation: protobuf 3.20.3\n", + " Uninstalling protobuf-3.20.3:\n", + " Successfully uninstalled protobuf-3.20.3\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "tensorflow-metadata 1.14.0 requires protobuf<4.21,>=3.20.3, but you have protobuf 4.25.3 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed grpcio-tools-1.62.1 h11-0.14.0 h2-4.1.0 hpack-4.0.0 httpcore-1.0.4 httpx-0.27.0 hyperframe-6.0.1 portalocker-2.8.2 protobuf-4.25.3 qdrant_client-1.8.0\n", + "Collecting gradio\n", + " Downloading gradio-4.21.0-py3-none-any.whl (17.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m17.0/17.0 MB\u001b[0m \u001b[31m52.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting aiofiles<24.0,>=22.0 (from gradio)\n", + " Downloading aiofiles-23.2.1-py3-none-any.whl (15 kB)\n", + "Requirement already satisfied: altair<6.0,>=4.2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.2.2)\n", + "Collecting fastapi (from gradio)\n", + " Downloading fastapi-0.110.0-py3-none-any.whl (92 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m92.1/92.1 kB\u001b[0m \u001b[31m14.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ffmpy (from gradio)\n", + " Downloading ffmpy-0.3.2.tar.gz (5.5 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting gradio-client==0.12.0 (from gradio)\n", + " Downloading gradio_client-0.12.0-py3-none-any.whl (310 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m310.7/310.7 kB\u001b[0m \u001b[31m34.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: httpx>=0.24.1 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.27.0)\n", + "Requirement already satisfied: huggingface-hub>=0.19.3 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.20.3)\n", + "Requirement already satisfied: importlib-resources<7.0,>=1.3 in /usr/local/lib/python3.10/dist-packages (from gradio) (6.3.0)\n", + "Requirement already satisfied: jinja2<4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.1.3)\n", + "Requirement already satisfied: markupsafe~=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.1.5)\n", + "Requirement already satisfied: matplotlib~=3.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.7.1)\n", + "Requirement already satisfied: numpy~=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.25.2)\n", + "Collecting orjson~=3.0 (from gradio)\n", + " Downloading orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m138.5/138.5 kB\u001b[0m \u001b[31m19.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from gradio) (24.0)\n", + "Requirement already satisfied: pandas<3.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.5.3)\n", + "Requirement already satisfied: pillow<11.0,>=8.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (9.4.0)\n", + "Requirement already satisfied: pydantic>=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.6.4)\n", + "Collecting pydub (from gradio)\n", + " Downloading pydub-0.25.1-py2.py3-none-any.whl (32 kB)\n", + "Collecting python-multipart>=0.0.9 (from gradio)\n", + " Downloading python_multipart-0.0.9-py3-none-any.whl (22 kB)\n", + "Requirement already satisfied: pyyaml<7.0,>=5.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (6.0.1)\n", + "Collecting ruff>=0.2.2 (from gradio)\n", + " Downloading ruff-0.3.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.6/8.6 MB\u001b[0m \u001b[31m94.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting semantic-version~=2.0 (from gradio)\n", + " Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)\n", + "Collecting tomlkit==0.12.0 (from gradio)\n", + " Downloading tomlkit-0.12.0-py3-none-any.whl (37 kB)\n", + "Requirement already satisfied: typer[all]<1.0,>=0.9 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.9.0)\n", + "Requirement already satisfied: typing-extensions~=4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.10.0)\n", + "Collecting uvicorn>=0.14.0 (from gradio)\n", + " Downloading uvicorn-0.28.0-py3-none-any.whl (60 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m60.6/60.6 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from gradio-client==0.12.0->gradio) (2023.6.0)\n", + "Collecting websockets<12.0,>=10.0 (from gradio-client==0.12.0->gradio)\n", + " Downloading websockets-11.0.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (129 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.9/129.9 kB\u001b[0m \u001b[31m21.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: entrypoints in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.4)\n", + "Requirement already satisfied: jsonschema>=3.0 in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (4.19.2)\n", + "Requirement already satisfied: toolz in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.12.1)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (2024.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (1.0.4)\n", + "Requirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (3.6)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (1.3.1)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.10/dist-packages (from httpcore==1.*->httpx>=0.24.1->gradio) (0.14.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (3.13.1)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (4.66.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (4.49.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.4.5)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0,>=1.0->gradio) (2023.4)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->gradio) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->gradio) (2.16.3)\n", + "Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (8.1.7)\n", + "Collecting colorama<0.5.0,>=0.4.3 (from typer[all]<1.0,>=0.9->gradio)\n", + " Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n", + "Collecting shellingham<2.0.0,>=1.3.0 (from typer[all]<1.0,>=0.9->gradio)\n", + " Downloading shellingham-1.5.4-py2.py3-none-any.whl (9.8 kB)\n", + "Requirement already satisfied: rich<14.0.0,>=10.11.0 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (13.7.1)\n", + "Collecting starlette<0.37.0,>=0.36.3 (from fastapi->gradio)\n", + " Downloading starlette-0.36.3-py3-none-any.whl (71 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.5/71.5 kB\u001b[0m \u001b[31m11.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (23.2.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (2023.12.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (0.33.0)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (0.18.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib~=3.0->gradio) (1.16.0)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (3.0.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (2.16.1)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx>=0.24.1->gradio) (1.2.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio) (3.3.2)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio) (2.0.7)\n", + "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (0.1.2)\n", + "Building wheels for collected packages: ffmpy\n", + " Building wheel for ffmpy (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for ffmpy: filename=ffmpy-0.3.2-py3-none-any.whl size=5584 sha256=f855c3316e7d76b5a4361a9575cb72e06b6bfd01db33a0fed66b1db472058732\n", + " Stored in directory: /root/.cache/pip/wheels/bd/65/9a/671fc6dcde07d4418df0c592f8df512b26d7a0029c2a23dd81\n", + "Successfully built ffmpy\n", + "Installing collected packages: pydub, ffmpy, websockets, uvicorn, tomlkit, shellingham, semantic-version, ruff, python-multipart, orjson, colorama, aiofiles, starlette, gradio-client, fastapi, gradio\n", + "Successfully installed aiofiles-23.2.1 colorama-0.4.6 fastapi-0.110.0 ffmpy-0.3.2 gradio-4.21.0 gradio-client-0.12.0 orjson-3.9.15 pydub-0.25.1 python-multipart-0.0.9 ruff-0.3.3 semantic-version-2.10.0 shellingham-1.5.4 starlette-0.36.3 tomlkit-0.12.0 uvicorn-0.28.0 websockets-11.0.3\n", + "Collecting langchain-openai\n", + " Downloading langchain_openai-0.0.8-py3-none-any.whl (32 kB)\n", + "Collecting langchain-core<0.2.0,>=0.1.27 (from langchain-openai)\n", + " Downloading langchain_core-0.1.32-py3-none-any.whl (260 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m260.9/260.9 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting openai<2.0.0,>=1.10.0 (from langchain-openai)\n", + " Downloading openai-1.14.1-py3-none-any.whl (257 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m257.5/257.5 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting tiktoken<1,>=0.5.2 (from langchain-openai)\n", + " Downloading tiktoken-0.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m15.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: PyYAML>=5.3 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2.0,>=0.1.27->langchain-openai) (6.0.1)\n", + "Requirement already satisfied: anyio<5,>=3 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2.0,>=0.1.27->langchain-openai) (3.7.1)\n", + "Collecting jsonpatch<2.0,>=1.33 (from langchain-core<0.2.0,>=0.1.27->langchain-openai)\n", + " Downloading jsonpatch-1.33-py2.py3-none-any.whl (12 kB)\n", + "Collecting langsmith<0.2.0,>=0.1.0 (from langchain-core<0.2.0,>=0.1.27->langchain-openai)\n", + " Downloading langsmith-0.1.27-py3-none-any.whl (68 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.0/68.0 kB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting packaging<24.0,>=23.2 (from langchain-core<0.2.0,>=0.1.27->langchain-openai)\n", + " Downloading packaging-23.2-py3-none-any.whl (53 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.0/53.0 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: pydantic<3,>=1 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2.0,>=0.1.27->langchain-openai) (2.6.4)\n", + "Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2.0,>=0.1.27->langchain-openai) (2.31.0)\n", + "Requirement already satisfied: tenacity<9.0.0,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from langchain-core<0.2.0,>=0.1.27->langchain-openai) (8.2.3)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /usr/lib/python3/dist-packages (from openai<2.0.0,>=1.10.0->langchain-openai) (1.7.0)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from openai<2.0.0,>=1.10.0->langchain-openai) (0.27.0)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from openai<2.0.0,>=1.10.0->langchain-openai) (1.3.1)\n", + "Requirement already satisfied: tqdm>4 in /usr/local/lib/python3.10/dist-packages (from openai<2.0.0,>=1.10.0->langchain-openai) (4.66.2)\n", + "Requirement already satisfied: typing-extensions<5,>=4.7 in /usr/local/lib/python3.10/dist-packages (from openai<2.0.0,>=1.10.0->langchain-openai) (4.10.0)\n", + "Requirement already satisfied: regex>=2022.1.18 in /usr/local/lib/python3.10/dist-packages (from tiktoken<1,>=0.5.2->langchain-openai) (2023.12.25)\n", + "Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3->langchain-core<0.2.0,>=0.1.27->langchain-openai) (3.6)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<5,>=3->langchain-core<0.2.0,>=0.1.27->langchain-openai) (1.2.0)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->openai<2.0.0,>=1.10.0->langchain-openai) (2024.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx<1,>=0.23.0->openai<2.0.0,>=1.10.0->langchain-openai) (1.0.4)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.10/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai<2.0.0,>=1.10.0->langchain-openai) (0.14.0)\n", + "Collecting jsonpointer>=1.9 (from jsonpatch<2.0,>=1.33->langchain-core<0.2.0,>=0.1.27->langchain-openai)\n", + " Downloading jsonpointer-2.4-py2.py3-none-any.whl (7.8 kB)\n", + "Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /usr/local/lib/python3.10/dist-packages (from langsmith<0.2.0,>=0.1.0->langchain-core<0.2.0,>=0.1.27->langchain-openai) (3.9.15)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic<3,>=1->langchain-core<0.2.0,>=0.1.27->langchain-openai) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic<3,>=1->langchain-core<0.2.0,>=0.1.27->langchain-openai) (2.16.3)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain-core<0.2.0,>=0.1.27->langchain-openai) (3.3.2)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2->langchain-core<0.2.0,>=0.1.27->langchain-openai) (2.0.7)\n", + "Installing collected packages: packaging, jsonpointer, tiktoken, jsonpatch, openai, langsmith, langchain-core, langchain-openai\n", + " Attempting uninstall: packaging\n", + " Found existing installation: packaging 24.0\n", + " Uninstalling packaging-24.0:\n", + " Successfully uninstalled packaging-24.0\n", + " Attempting uninstall: openai\n", + " Found existing installation: openai 0.27.7\n", + " Uninstalling openai-0.27.7:\n", + " Successfully uninstalled openai-0.27.7\n", + "Successfully installed jsonpatch-1.33 jsonpointer-2.4 langchain-core-0.1.32 langchain-openai-0.0.8 langsmith-0.1.27 openai-1.14.1 packaging-23.2 tiktoken-0.6.0\n", + "Requirement already satisfied: tiktoken in /usr/local/lib/python3.10/dist-packages (0.6.0)\n", + "Requirement already satisfied: regex>=2022.1.18 in /usr/local/lib/python3.10/dist-packages (from tiktoken) (2023.12.25)\n", + "Requirement already satisfied: requests>=2.26.0 in /usr/local/lib/python3.10/dist-packages (from tiktoken) (2.31.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.26.0->tiktoken) (2024.2.2)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (3.7.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.2.0)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (4.49.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.4.5)\n", + "Requirement already satisfied: numpy>=1.20 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.25.2)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (23.2)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (9.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.2/2.2 MB\u001b[0m \u001b[31m14.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m809.1/809.1 kB\u001b[0m \u001b[31m23.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m30.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m525.5/525.5 kB\u001b[0m \u001b[31m35.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m85.5/85.5 MB\u001b[0m \u001b[31m9.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m195.4/195.4 kB\u001b[0m \u001b[31m25.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m263.5/263.5 kB\u001b[0m \u001b[31m25.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m85.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m421.5/421.5 kB\u001b[0m \u001b[31m44.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m981.5/981.5 kB\u001b[0m \u001b[31m69.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.0/8.0 MB\u001b[0m \u001b[31m103.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.4/49.4 kB\u001b[0m \u001b[31m6.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.2/18.2 MB\u001b[0m \u001b[31m71.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m274.7/274.7 kB\u001b[0m \u001b[31m31.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m64.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.8/143.8 kB\u001b[0m \u001b[31m14.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m80.3/80.3 kB\u001b[0m \u001b[31m9.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.4/2.4 MB\u001b[0m \u001b[31m91.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.3/41.3 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.4/5.4 MB\u001b[0m \u001b[31m93.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.8/6.8 MB\u001b[0m \u001b[31m110.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.4/58.4 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m105.7/105.7 kB\u001b[0m \u001b[31m15.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.3/67.3 kB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m698.9/698.9 kB\u001b[0m \u001b[31m47.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m84.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.6/67.6 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.7/62.7 kB\u001b[0m \u001b[31m9.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m46.0/46.0 kB\u001b[0m \u001b[31m5.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.8/50.8 kB\u001b[0m \u001b[31m6.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m341.4/341.4 kB\u001b[0m \u001b[31m41.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m102.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m66.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m86.8/86.8 kB\u001b[0m \u001b[31m13.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Building wheel for langdetect (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Building wheel for pypika (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "tensorflow 2.15.0 requires wrapt<1.15,>=1.11.0, but you have wrapt 1.16.0 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ], + "source": [ + "!pip install huggingface datasets\n", + "!pip install -U sentence-transformers rank_bm25\n", + "!pip install openai==0.27.7\n", + "!pip install qdrant_client\n", + "!pip install gradio\n", + "!pip install -U langchain-openai\n", + "!pip install tiktoken\n", + "!pip install matplotlib\n", + "%pip install -Uqqq rich wandb langchain unstructured tabulate pdf2image chromadb gradio faiss-gpu\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SIlO34PHbm4T", + "outputId": "47956398-618a-4f35-b778-5456dec7e589" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: linkify-it-py in /usr/local/lib/python3.10/dist-packages (2.0.3)\n", + "Requirement already satisfied: uc-micro-py in /usr/local/lib/python3.10/dist-packages (from linkify-it-py) (1.0.3)\n", + "Requirement already satisfied: nltk in /usr/local/lib/python3.10/dist-packages (3.8.1)\n", + "Requirement already satisfied: spacy in /usr/local/lib/python3.10/dist-packages (3.7.4)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.10/dist-packages (from nltk) (8.1.7)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.10/dist-packages (from nltk) (1.3.2)\n", + "Requirement already satisfied: regex>=2021.8.3 in /usr/local/lib/python3.10/dist-packages (from nltk) (2023.12.25)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from nltk) (4.66.2)\n", + "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.11 in /usr/local/lib/python3.10/dist-packages (from spacy) (3.0.12)\n", + "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (1.0.5)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (1.0.10)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy) (2.0.8)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy) (3.0.9)\n", + "Requirement already satisfied: thinc<8.3.0,>=8.2.2 in /usr/local/lib/python3.10/dist-packages (from spacy) (8.2.3)\n", + "Requirement already satisfied: wasabi<1.2.0,>=0.9.1 in /usr/local/lib/python3.10/dist-packages (from spacy) (1.1.2)\n", + "Requirement already satisfied: srsly<3.0.0,>=2.4.3 in /usr/local/lib/python3.10/dist-packages (from spacy) (2.4.8)\n", + "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /usr/local/lib/python3.10/dist-packages (from spacy) (2.0.10)\n", + "Requirement already satisfied: weasel<0.4.0,>=0.1.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (0.3.4)\n", + "Requirement already satisfied: typer<0.10.0,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (0.9.0)\n", + "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /usr/local/lib/python3.10/dist-packages (from spacy) (6.4.0)\n", + "Requirement already satisfied: requests<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (2.31.0)\n", + "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from spacy) (2.6.4)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from spacy) (3.1.3)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from spacy) (67.7.2)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (23.2)\n", + "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (3.3.0)\n", + "Requirement already satisfied: numpy>=1.19.0 in /usr/local/lib/python3.10/dist-packages (from spacy) (1.26.4)\n", + "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4->spacy) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4->spacy) (2.16.3)\n", + "Requirement already satisfied: typing-extensions>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4->spacy) (4.9.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (3.6)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (1.26.18)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (2024.2.2)\n", + "Requirement already satisfied: blis<0.8.0,>=0.7.8 in /usr/local/lib/python3.10/dist-packages (from thinc<8.3.0,>=8.2.2->spacy) (0.7.11)\n", + "Requirement already satisfied: confection<1.0.0,>=0.0.1 in /usr/local/lib/python3.10/dist-packages (from thinc<8.3.0,>=8.2.2->spacy) (0.1.4)\n", + "Requirement already satisfied: cloudpathlib<0.17.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from weasel<0.4.0,>=0.1.0->spacy) (0.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->spacy) (2.1.5)\n" + ] + } + ], + "source": [ + "!pip install linkify-it-py\n", + "!pip install nltk spacy" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 365, + "referenced_widgets": [ + "e2823db8b700414b87cf2d7320c76000", + "5bbed4e6f6e34bb0927d36cbcba03e3a", + "0dc9a4714e514026b61e7e0bf1db68ba", + "19422a1269f54478b1f63a6beb640be1", + "1aa1b58531f44152ac203cfd1421b128", + "370caccc8b274985839dcf7116378175", + "c73cb53a92c743a793aa395e6051bb99", + "0a2515f1e92448919497f3635e0fffdb", + "794ca60095f9446e8aa369b81646ea4c", + "18a0b7f81d624e7ebc7026e2a91398f2", + "9d170fa4822448cb9259f598187fa217", + "f499afb92e484dc8873b1000ea9766dd", + "e6ab5eb6655a45b09451b6b98e94b562", + "6870ad4f601840a1b76e45ae9249924e", + "3d12b1688e794e42a17d85f34370161c", + "f8b14a9061424318a8a7d6aeb8735df8", + "09d6abf493e046f98b85280ae80ff989", + "e6ec219a00f249449dedd1f8b702e6c6", + "e677cc0cda1c445bb603083f19950f57", + "9e99c96910cd43bf92ef9a981a9a3e7a", + "2c1b366ff93d4faebac9b22988511afe", + "831d8289f55a4d168c5f6e756696619c", + "ba0f8e85cfe34f00b810f33a4b23d6e7", + "003d672cc31246b5acf818e94eb2272d", + "bd6e6d468f21447fad2e452ba09de368", + "a2dc226fbd3d49189b96b95277433896", + "eda5b348eb37448386bda587c7d7c744", + "7e236b574ca745f6bec18b98b9eb3ba8", + "c55cb170dbb14a23acb7bb46e3f1a024", + "8dffb253c18f4b95830c7f4f8a38d2cb", + "e5a5488269b6413bab3c7bb7c78e1cc5", + "3712ae42e22b49788b12db0aa60e3de5", + "78a8a265b2304a3691a470f6455af12b", + "58b83f329f5b497c876349054f74848b", + "c039ad4dbb084706921672ee6c429912", + "fa65848d4b164d2a9ccae64082072674", + "f6cd5952821044848c52fbe5636d9148", + "25acf9d0ba1947f2822b06f4fc02a434", + "7c1d7071dc0746f8b03159b3752657c2", + "2916282f229943809fbfaccdc88c7301", + "8850b33466b24ad699cf86edf0684229", + "3c319bde5c9047d6bdb06ea244ced4c5", + "15351778b3dc47e19076c8041eaf319d", + "c5c929247979458598820b76600b8fb3", + "1a5383169ea44f90acaccab31a4e0e21", + "d8264884b8e24b039acec27c95aca5b8", + "41a8830d89644ab9b9f0651b9ffb5f85", + "f8346dba023e46a2aecac9d8cbc0a74b", + "00ec1a9a0f1a47ab820670786f1772b6", + "96c2acf3e7884920a3c38b90bc310626", + "d80c895a5e9f4d5b9495c6708dae6e0d", + "1d7fa4303740461192b128d7d5f5b745", + "746d995175d14ad5a466dd270c59e518", + "a56072f75865425d92c2d5f32f9c069e", + "3652dfd091da454dab14368069dbef74", + "17ea0e0562e34c18a4ee38c9c6123bf2", + "aaf24d47c8704fe494b44af771eb1f22", + "19e9b83c7b204537b8d08f12cb78bb76", + "79f0c2c7c0304a04a4411973cb1a3572", + "3fd8b2b90f854b348d0435cebc05ca75", + "e693d218ee2740dc9f9132e4078bd65c", + "145a8a4f52804fcba9ac6a6554c493f0", + "505673b7f85a4b8b994e6082b2859946", + "423ad22440e140f9bfb7a43a7ba7d6c6", + "326b16f203c7453bb62affc37d09602e", + "e9c1c57a67fb4be1b2d3ba56252abf2a", + "93e672527458461d9af91896cd045efb", + "b627eff47a67431d81bb89d663d0ef6f", + "37fbc6ed37dc42df93dd977455016aec", + "14c41de0e6d54b2a904f2961f45f52ee", + "e0de82574042484f9c2d6b9abd5e07ca", + "a6181fc8b9184a6d988943545eb90704", + "a4f8bed577c24d94aac46740f0de3296", + "f9d51fcacc704fc4845b404922df86de", + "d1abce6c0e2346428f175fe70d2589b6", + "79c2719fe9674bdaa57af4236025a6ca", + "c4dc1b7a9d77452aaaae235946a617a9" + ] + }, + "id": "Uo6aDydNQrXS", + "outputId": "8fdb18c7-86e2-4206-cdbf-cf05536b3b88" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_token.py:88: UserWarning: \n", + "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", + "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", + "You will be able to reuse this secret in all of your notebooks.\n", + "Please note that authentication is recommended but still optional to access public models or datasets.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e2823db8b700414b87cf2d7320c76000", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading readme: 0%| | 0.00/28.0 [00:00\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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + "
0123456789...5987598859895990599159925993599459955996
hotel_nameRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul HotelRomance Istanbul Hotel...Hotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy VillageHotel Campanile Paris Bercy Village
hotel_descriptionRomance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room...Romance Istanbul Hotel has 39 rooms.Every room......In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...In the east of Paris, the hotel Campanile Berc...
review_titleAn exceptional boutique hotel, great value for...You can’t get better than this.Exceeds all expectationsGreat Location, Fantastic AccommodationsPerfection. It is all in the details.Exquisite lovely hotel in every aspectVacation in istanbulThe perfect reviews are 100% warranted - belie...Visit During EidGreat Hotel and Staff!...Very conveniently located hotelA gem in Paris (for the price)!!Average hotel in a great area of ParisGood hotel, not greatClean and comfyNice hotel but had trouble booking in.Great LocationGreat locationFor one night onlyNice hotel in Paris Bercy
review_textNoneNoneNoneNoneNoneNoneNoneNoneNoneNone...We had selected Kyriad Hotel via the Eurostar ...This hotel is located in the Bercy area, the n...Kyriad hotel is a good hotel placed in a fabul...We stayed at Kyriad paris bercy village for th...Nothing I can fault really. Location is great,...We had just had a very long and delayed train ...We stayed at the Kyriad Hotel Paris Bercy Vill...Stayed here for a few days and it is a great l...We stayed here for one night on our way to Ita...The Hotel is close to the metro station Cour S...
rateNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...4.05.03.03.05.03.04.05.03.04.0
tripdateFebruary 2020March 2021March 2021August 2021June 2021February 2020January 2020January 2020April 2022September 2022...November 2019November 2019November 2019September 2019November 2019September 2019September 2019October 2019September 2019September 2019
hotel_urlhttps://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939...https://www.tripadvisor.com/Hotel_Review-g2939......https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...https://www.tripadvisor.com/Hotel_Review-g1871...
hotel_imagehttps://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-......https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...https://media-cdn.tripadvisor.com/media/photo-...
price_range$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa......$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...$ (Based on Average Nightly Rates for a Standa...
rating_value5.05.05.05.05.05.05.05.05.05.0...4.04.04.04.04.04.04.04.04.04.0
review_count4023402340234023402340234023402340234023...1625162516251625162516251625162516251625
street_addressHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 SirkeciHudavendigar Cd. No:5 Sirkeci...17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy17 rue Baron le Roy
localityIstanbulIstanbulIstanbulIstanbulIstanbulIstanbulIstanbulIstanbulIstanbulIstanbul...ParisParisParisParisParisParisParisParisParisParis
countryTurkiyeTurkiyeTurkiyeTurkiyeTurkiyeTurkiyeTurkiyeTurkiyeTurkiyeTurkiye...FranceFranceFranceFranceFranceFranceFranceFranceFranceFrance
\n", + "

14 rows × 5997 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ], + "text/plain": [ + " 0 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title An exceptional boutique hotel, great value for... \n", + "review_text None \n", + "rate NaN \n", + "tripdate February 2020 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 1 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title You can’t get better than this. \n", + "review_text None \n", + "rate NaN \n", + "tripdate March 2021 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 2 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Exceeds all expectations \n", + "review_text None \n", + "rate NaN \n", + "tripdate March 2021 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 3 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Great Location, Fantastic Accommodations \n", + "review_text None \n", + "rate NaN \n", + "tripdate August 2021 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 4 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Perfection. It is all in the details. \n", + "review_text None \n", + "rate NaN \n", + "tripdate June 2021 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 5 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Exquisite lovely hotel in every aspect \n", + "review_text None \n", + "rate NaN \n", + "tripdate February 2020 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 6 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Vacation in istanbul \n", + "review_text None \n", + "rate NaN \n", + "tripdate January 2020 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 7 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title The perfect reviews are 100% warranted - belie... \n", + "review_text None \n", + "rate NaN \n", + "tripdate January 2020 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 8 \\\n", + "hotel_name Romance Istanbul Hotel \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... \n", + "review_title Visit During Eid \n", + "review_text None \n", + "rate NaN \n", + "tripdate April 2022 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 5.0 \n", + "review_count 4023 \n", + "street_address Hudavendigar Cd. No:5 Sirkeci \n", + "locality Istanbul \n", + "country Turkiye \n", + "\n", + " 9 ... \\\n", + "hotel_name Romance Istanbul Hotel ... \n", + "hotel_description Romance Istanbul Hotel has 39 rooms.Every room... ... \n", + "review_title Great Hotel and Staff! ... \n", + "review_text None ... \n", + "rate NaN ... \n", + "tripdate September 2022 ... \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g2939... ... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... ... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... ... \n", + "rating_value 5.0 ... \n", + "review_count 4023 ... \n", + "street_address Hudavendigar Cd. No:5 Sirkeci ... \n", + "locality Istanbul ... \n", + "country Turkiye ... \n", + "\n", + " 5987 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Very conveniently located hotel \n", + "review_text We had selected Kyriad Hotel via the Eurostar ... \n", + "rate 4.0 \n", + "tripdate November 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5988 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title A gem in Paris (for the price)!! \n", + "review_text This hotel is located in the Bercy area, the n... \n", + "rate 5.0 \n", + "tripdate November 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5989 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Average hotel in a great area of Paris \n", + "review_text Kyriad hotel is a good hotel placed in a fabul... \n", + "rate 3.0 \n", + "tripdate November 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5990 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Good hotel, not great \n", + "review_text We stayed at Kyriad paris bercy village for th... \n", + "rate 3.0 \n", + "tripdate September 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5991 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Clean and comfy \n", + "review_text Nothing I can fault really. Location is great,... \n", + "rate 5.0 \n", + "tripdate November 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5992 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Nice hotel but had trouble booking in. \n", + "review_text We had just had a very long and delayed train ... \n", + "rate 3.0 \n", + "tripdate September 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5993 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Great Location \n", + "review_text We stayed at the Kyriad Hotel Paris Bercy Vill... \n", + "rate 4.0 \n", + "tripdate September 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5994 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Great location \n", + "review_text Stayed here for a few days and it is a great l... \n", + "rate 5.0 \n", + "tripdate October 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5995 \\\n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title For one night only \n", + "review_text We stayed here for one night on our way to Ita... \n", + "rate 3.0 \n", + "tripdate September 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + " 5996 \n", + "hotel_name Hotel Campanile Paris Bercy Village \n", + "hotel_description In the east of Paris, the hotel Campanile Berc... \n", + "review_title Nice hotel in Paris Bercy \n", + "review_text The Hotel is close to the metro station Cour S... \n", + "rate 4.0 \n", + "tripdate September 2019 \n", + "hotel_url https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "hotel_image https://media-cdn.tripadvisor.com/media/photo-... \n", + "price_range $ (Based on Average Nightly Rates for a Standa... \n", + "rating_value 4.0 \n", + "review_count 1625 \n", + "street_address 17 rue Baron le Roy \n", + "locality Paris \n", + "country France \n", + "\n", + "[14 rows x 5997 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.transpose()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 573 + }, + "id": "mi8vvEWUSegA", + "outputId": "454154d4-a5de-48ce-a6cf-126ddcdc59dc" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \"df\",\n \"rows\": 5997,\n \"fields\": [\n {\n \"column\": \"hotel_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Travelodge London Central Kings Cross\",\n \"Wyndham Istanbul Oldcity\",\n \"The Empire Hotel\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_description\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 130,\n \"samples\": [\n \"See why so many travelers make Park Grand Paddington Court their hotel of choice when visiting London. Providing an ideal mix of value, comfort and convenience, it offers a charming setting with an array of amenities designed for travelers like you. You\\u2019ll enjoy relaxing rooms that offer a flat screen TV, air conditioning, and a refrigerator, and you can stay connected during your stay as Park Grand Paddington Court offers guests free WiFi. The hotel features a 24 hour front desk, a concierge, and room service. Plus, Park Grand Paddington Court offers a fitness center and breakfast, providing a pleasant respite from your busy day. Given the close proximity of popular landmarks, such as Buckingham Palace (1.8 mi) and Primrose Hill (1.9 mi), guests of Park Grand Paddington Court can easily experience some of London's most well known attractions. During your visit, be sure to check out one of London's popular tapas restaurants such as Dishoom Covent Garden, The Shed, and StreetXO, all a short distance from Park Grand Paddington Court. If you\\u2019re looking for something to do, Natural History Museum (1.2 mi), Harrods (1.2 mi), and V&A - Victoria and Albert Museum (1.2 mi) are a nice way to spend some time, and they are all within walking distance of Park Grand Paddington Court Hotel. We\\u2019re sure you\\u2019ll enjoy your stay at Park Grand Paddington Court as you experience all of the things London has to offer.\",\n \"Timeless yet modern, The Westin St. Francis San Francisco on Union Square offers guests a warm welcome with its turn-of-the-20th-century European style. Our hotel in downtown San Francisco, CA, is close to the Financial District and Moscone Convention Center, and with cable cars just outside our front doors, we are at the intersection of the glorious past and vibrant present of this incredible city. After an exciting day, retire to elegant guest rooms, many featuring chandeliers and marble bathrooms. Discover unique and historic-inspired food and beverage offerings at the on-site restaurant and bars, exercise well in the fitness center and experience a new chapter of LA at this storied destination.\",\n \"Stylish seaside hotel with an outdoor pool and meeting facilities, next to Istanbul Aquarium and Aqua Florya Mall. Ideal for business and leisure travellers, Crowne Plaza\\u00ae Istanbul - Florya hotel is a 15-minute drive from CNR Expo and IDTM exhibition centres. We provide free parking in our secure lot. Transport links by bus, train and road are excellent. We have six fully equipped meeting rooms with a maximum capacity of 800, while our outdoor banquet area has room for 1,250 guests. Our Crowne Plaza Meetings Director is on hand to take care of all the details. The hotel has free Wi-Fi throughout and is completely connected, providing access to power when and where you need it. The Aqua Florya shopping centre and Istanbul Aquarium are both next door to the hotel. Tutankhamun, Treasures of the Child King is at Istanbul Aquarium Event Center until the end of the year. The exhibition, appealing to visitors from all age groups,will be magnificent.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5314,\n \"samples\": [\n \"Nice location. Good breakfast.\",\n \"Would not recommend a stay at this hotel\",\n \"Wonderful stay\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4867,\n \"samples\": [\n \"Absolutely brilliant staff, aura, doina, daniellla, slave Was Absolutely brilliant and accomaditing. Great location and amazing customer service. I recommend this hotel and definitely will stay here again. \",\n \"Unfortunately not the best of stays at Citadines and quite upset. We arrived at the hotel around 11am to check our bags in and pay the full amount, we then returned at 4pm to check into our room. We were told to take a seat and waited nearly half an hour without being told anything except 'someone is checking it', but it was very obvious the room was not cleaned as the women can down with a cloth and spray to tell them its okay! We received free breakfast the next morning as an apology what helped but I preferred if they were more honest about the room not being ready. When we got to our room we impressed by the view, but unfortunately that quickly changed when we realized we were right next to a metro station. This was quite loud every night and extremely disappointing for the\",\n \"The hotel is excellent and in a great location. Our flight arrived early morning and we went to drop bags with the hotel around 10am and they allowed us an early check in with no additional fees and gave us a room with a fantastic city view of downtown and One World Trade. The front desk was super helpful and got us squared away quickly. The man\\u2019s name was \\u201cZ\\u201d who helped us, and he is the epitome of what top rate customer service is supposed to be. Also enjoyed the bar where they make incredible cocktails and have a nice happy hour (4-7p)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rate\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.1724493011383668,\n \"min\": 1.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.0,\n 2.0,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"tripdate\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 76,\n \"samples\": [\n \" January 2020\",\n \" January 2021\",\n \" November 2021\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_url\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 600,\n \"samples\": [\n \"https://www.tripadvisor.com/Hotel_Review-g293974-d294607-Reviews-or20-InterContinental_Istanbul-Istanbul.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g60763-d7255276-Reviews-or30-The_Knickerbocker-New_York_City_New_York.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g187147-d197985-Reviews-or10-Pullman_Paris_Eiffel_Tower_Hotel-Paris_Ile_de_France.html\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_image\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"https://media-cdn.tripadvisor.com/media/photo-s/26/37/24/88/gb-exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/2b/43/07/07/exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/29/38/be/d3/empire-hotel-new-york.jpg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price_range\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rating_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4327574208245527,\n \"min\": 3.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.5,\n 3.5,\n 4.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3771,\n \"min\": 39,\n \"max\": 24877,\n \"num_unique_values\": 147,\n \"samples\": [\n 3755,\n 1878,\n 471\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"street_address\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Willing House 356-364 Gray's Inn Road Willings House\",\n \"Kemalpasa Mah. Sehzadebasi Cad. Celal Aga Konagi No 1\",\n \"44 West 63rd Street\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"locality\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"San Francisco\",\n \"Paris\",\n \"London\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"country\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"T\\u00fcrkiye\",\n \"France\",\n \"United States\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe", + "variable_name": "df" + }, + "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", + " \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", + " \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", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountry
0Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...An exceptional boutique hotel, great value for...NoneNaNFebruary 2020https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiye
1Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...You can’t get better than this.NoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiye
2Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Exceeds all expectationsNoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiye
3Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Great Location, Fantastic AccommodationsNoneNaNAugust 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiye
4Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Perfection. It is all in the details.NoneNaNJune 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiye
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "text/plain": [ + " hotel_name hotel_description \\\n", + "0 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "1 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "2 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "3 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "4 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "\n", + " review_title review_text rate \\\n", + "0 An exceptional boutique hotel, great value for... None NaN \n", + "1 You can’t get better than this. None NaN \n", + "2 Exceeds all expectations None NaN \n", + "3 Great Location, Fantastic Accommodations None NaN \n", + "4 Perfection. It is all in the details. None NaN \n", + "\n", + " tripdate hotel_url \\\n", + "0 February 2020 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "1 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "2 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "3 August 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "4 June 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "\n", + " hotel_image \\\n", + "0 https://media-cdn.tripadvisor.com/media/photo-... \n", + "1 https://media-cdn.tripadvisor.com/media/photo-... \n", + "2 https://media-cdn.tripadvisor.com/media/photo-... \n", + "3 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "0 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "1 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "2 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "3 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "4 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "\n", + " review_count street_address locality country \n", + "0 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "1 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "2 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "3 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "4 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ecN-GZX4Sfo-", + "outputId": "d4c8de0a-8867-432e-91ad-96875ce1b216" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['hotel_name', 'hotel_description', 'review_title', 'review_text',\n", + " 'rate', 'tripdate', 'hotel_url', 'hotel_image', 'price_range',\n", + " 'rating_value', 'review_count', 'street_address', 'locality',\n", + " 'country'],\n", + " dtype='object')" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 220 + }, + "id": "s4Cd31TLr6IL", + "outputId": "6f850375-9dba-4dda-af6b-e17a5a1b96e1" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
pandas.core.frame.DataFrame.info
def info(verbose: bool | None=None, buf: WriteBuffer[str] | None=None, max_cols: int | None=None, memory_usage: bool | str | None=None, show_counts: bool | None=None, null_counts: bool | None=None) -> None
/usr/local/lib/python3.10/dist-packages/pandas/core/frame.pyPrint a concise summary of a DataFrame.\n",
+              "\n",
+              "This method prints information about a DataFrame including\n",
+              "the index dtype and columns, non-null values and memory usage.\n",
+              "\n",
+              "Parameters\n",
+              "----------\n",
+              "verbose : bool, optional\n",
+              "    Whether to print the full summary. By default, the setting in\n",
+              "    ``pandas.options.display.max_info_columns`` is followed.\n",
+              "buf : writable buffer, defaults to sys.stdout\n",
+              "    Where to send the output. By default, the output is printed to\n",
+              "    sys.stdout. Pass a writable buffer if you need to further process\n",
+              "    the output.    max_cols : int, optional\n",
+              "    When to switch from the verbose to the truncated output. If the\n",
+              "    DataFrame has more than `max_cols` columns, the truncated output\n",
+              "    is used. By default, the setting in\n",
+              "    ``pandas.options.display.max_info_columns`` is used.\n",
+              "memory_usage : bool, str, optional\n",
+              "    Specifies whether total memory usage of the DataFrame\n",
+              "    elements (including the index) should be displayed. By default,\n",
+              "    this follows the ``pandas.options.display.memory_usage`` setting.\n",
+              "\n",
+              "    True always show memory usage. False never shows memory usage.\n",
+              "    A value of 'deep' is equivalent to "True with deep introspection".\n",
+              "    Memory usage is shown in human-readable units (base-2\n",
+              "    representation). Without deep introspection a memory estimation is\n",
+              "    made based in column dtype and number of rows assuming values\n",
+              "    consume the same memory amount for corresponding dtypes. With deep\n",
+              "    memory introspection, a real memory usage calculation is performed\n",
+              "    at the cost of computational resources. See the\n",
+              "    :ref:`Frequently Asked Questions <df-memory-usage>` for more\n",
+              "    details.\n",
+              "show_counts : bool, optional\n",
+              "    Whether to show the non-null counts. By default, this is shown\n",
+              "    only if the DataFrame is smaller than\n",
+              "    ``pandas.options.display.max_info_rows`` and\n",
+              "    ``pandas.options.display.max_info_columns``. A value of True always\n",
+              "    shows the counts, and False never shows the counts.\n",
+              "null_counts : bool, optional\n",
+              "    .. deprecated:: 1.2.0\n",
+              "        Use show_counts instead.\n",
+              "\n",
+              "Returns\n",
+              "-------\n",
+              "None\n",
+              "    This method prints a summary of a DataFrame and returns None.\n",
+              "\n",
+              "See Also\n",
+              "--------\n",
+              "DataFrame.describe: Generate descriptive statistics of DataFrame\n",
+              "    columns.\n",
+              "DataFrame.memory_usage: Memory usage of DataFrame columns.\n",
+              "\n",
+              "Examples\n",
+              "--------\n",
+              ">>> int_values = [1, 2, 3, 4, 5]\n",
+              ">>> text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']\n",
+              ">>> float_values = [0.0, 0.25, 0.5, 0.75, 1.0]\n",
+              ">>> df = pd.DataFrame({"int_col": int_values, "text_col": text_values,\n",
+              "...                   "float_col": float_values})\n",
+              ">>> df\n",
+              "    int_col text_col  float_col\n",
+              "0        1    alpha       0.00\n",
+              "1        2     beta       0.25\n",
+              "2        3    gamma       0.50\n",
+              "3        4    delta       0.75\n",
+              "4        5  epsilon       1.00\n",
+              "\n",
+              "Prints information of all columns:\n",
+              "\n",
+              ">>> df.info(verbose=True)\n",
+              "<class 'pandas.core.frame.DataFrame'>\n",
+              "RangeIndex: 5 entries, 0 to 4\n",
+              "Data columns (total 3 columns):\n",
+              " #   Column     Non-Null Count  Dtype\n",
+              "---  ------     --------------  -----\n",
+              " 0   int_col    5 non-null      int64\n",
+              " 1   text_col   5 non-null      object\n",
+              " 2   float_col  5 non-null      float64\n",
+              "dtypes: float64(1), int64(1), object(1)\n",
+              "memory usage: 248.0+ bytes\n",
+              "\n",
+              "Prints a summary of columns count and its dtypes but not per column\n",
+              "information:\n",
+              "\n",
+              ">>> df.info(verbose=False)\n",
+              "<class 'pandas.core.frame.DataFrame'>\n",
+              "RangeIndex: 5 entries, 0 to 4\n",
+              "Columns: 3 entries, int_col to float_col\n",
+              "dtypes: float64(1), int64(1), object(1)\n",
+              "memory usage: 248.0+ bytes\n",
+              "\n",
+              "Pipe output of DataFrame.info to buffer instead of sys.stdout, get\n",
+              "buffer content and writes to a text file:\n",
+              "\n",
+              ">>> import io\n",
+              ">>> buffer = io.StringIO()\n",
+              ">>> df.info(buf=buffer)\n",
+              ">>> s = buffer.getvalue()\n",
+              ">>> with open("df_info.txt", "w",\n",
+              "...           encoding="utf-8") as f:  # doctest: +SKIP\n",
+              "...     f.write(s)\n",
+              "260\n",
+              "\n",
+              "The `memory_usage` parameter allows deep introspection mode, specially\n",
+              "useful for big DataFrames and fine-tune memory optimization:\n",
+              "\n",
+              ">>> random_strings_array = np.random.choice(['a', 'b', 'c'], 10 ** 6)\n",
+              ">>> df = pd.DataFrame({\n",
+              "...     'column_1': np.random.choice(['a', 'b', 'c'], 10 ** 6),\n",
+              "...     'column_2': np.random.choice(['a', 'b', 'c'], 10 ** 6),\n",
+              "...     'column_3': np.random.choice(['a', 'b', 'c'], 10 ** 6)\n",
+              "... })\n",
+              ">>> df.info()\n",
+              "<class 'pandas.core.frame.DataFrame'>\n",
+              "RangeIndex: 1000000 entries, 0 to 999999\n",
+              "Data columns (total 3 columns):\n",
+              " #   Column    Non-Null Count    Dtype\n",
+              "---  ------    --------------    -----\n",
+              " 0   column_1  1000000 non-null  object\n",
+              " 1   column_2  1000000 non-null  object\n",
+              " 2   column_3  1000000 non-null  object\n",
+              "dtypes: object(3)\n",
+              "memory usage: 22.9+ MB\n",
+              "\n",
+              ">>> df.info(memory_usage='deep')\n",
+              "<class 'pandas.core.frame.DataFrame'>\n",
+              "RangeIndex: 1000000 entries, 0 to 999999\n",
+              "Data columns (total 3 columns):\n",
+              " #   Column    Non-Null Count    Dtype\n",
+              "---  ------    --------------    -----\n",
+              " 0   column_1  1000000 non-null  object\n",
+              " 1   column_2  1000000 non-null  object\n",
+              " 2   column_3  1000000 non-null  object\n",
+              "dtypes: object(3)\n",
+              "memory usage: 165.9 MB
\n", + " \n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.info" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 203 + }, + "id": "o8xpzbUFu9__", + "outputId": "5b5653d2-2e33-4004-c918-6cdec92671ac" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
pandas.core.generic.NDFrame.describe
def describe(percentiles=None, include=None, exclude=None, datetime_is_numeric: bool_t=False) -> NDFrameT
/usr/local/lib/python3.10/dist-packages/pandas/core/generic.pyGenerate descriptive statistics.\n",
+              "\n",
+              "Descriptive statistics include those that summarize the central\n",
+              "tendency, dispersion and shape of a\n",
+              "dataset's distribution, excluding ``NaN`` values.\n",
+              "\n",
+              "Analyzes both numeric and object series, as well\n",
+              "as ``DataFrame`` column sets of mixed data types. The output\n",
+              "will vary depending on what is provided. Refer to the notes\n",
+              "below for more detail.\n",
+              "\n",
+              "Parameters\n",
+              "----------\n",
+              "percentiles : list-like of numbers, optional\n",
+              "    The percentiles to include in the output. All should\n",
+              "    fall between 0 and 1. The default is\n",
+              "    ``[.25, .5, .75]``, which returns the 25th, 50th, and\n",
+              "    75th percentiles.\n",
+              "include : 'all', list-like of dtypes or None (default), optional\n",
+              "    A white list of data types to include in the result. Ignored\n",
+              "    for ``Series``. Here are the options:\n",
+              "\n",
+              "    - 'all' : All columns of the input will be included in the output.\n",
+              "    - A list-like of dtypes : Limits the results to the\n",
+              "      provided data types.\n",
+              "      To limit the result to numeric types submit\n",
+              "      ``numpy.number``. To limit it instead to object columns submit\n",
+              "      the ``numpy.object`` data type. Strings\n",
+              "      can also be used in the style of\n",
+              "      ``select_dtypes`` (e.g. ``df.describe(include=['O'])``). To\n",
+              "      select pandas categorical columns, use ``'category'``\n",
+              "    - None (default) : The result will include all numeric columns.\n",
+              "exclude : list-like of dtypes or None (default), optional,\n",
+              "    A black list of data types to omit from the result. Ignored\n",
+              "    for ``Series``. Here are the options:\n",
+              "\n",
+              "    - A list-like of dtypes : Excludes the provided data types\n",
+              "      from the result. To exclude numeric types submit\n",
+              "      ``numpy.number``. To exclude object columns submit the data\n",
+              "      type ``numpy.object``. Strings can also be used in the style of\n",
+              "      ``select_dtypes`` (e.g. ``df.describe(exclude=['O'])``). To\n",
+              "      exclude pandas categorical columns, use ``'category'``\n",
+              "    - None (default) : The result will exclude nothing.\n",
+              "datetime_is_numeric : bool, default False\n",
+              "    Whether to treat datetime dtypes as numeric. This affects statistics\n",
+              "    calculated for the column. For DataFrame input, this also\n",
+              "    controls whether datetime columns are included by default.\n",
+              "\n",
+              "    .. versionadded:: 1.1.0\n",
+              "\n",
+              "Returns\n",
+              "-------\n",
+              "Series or DataFrame\n",
+              "    Summary statistics of the Series or Dataframe provided.\n",
+              "\n",
+              "See Also\n",
+              "--------\n",
+              "DataFrame.count: Count number of non-NA/null observations.\n",
+              "DataFrame.max: Maximum of the values in the object.\n",
+              "DataFrame.min: Minimum of the values in the object.\n",
+              "DataFrame.mean: Mean of the values.\n",
+              "DataFrame.std: Standard deviation of the observations.\n",
+              "DataFrame.select_dtypes: Subset of a DataFrame including/excluding\n",
+              "    columns based on their dtype.\n",
+              "\n",
+              "Notes\n",
+              "-----\n",
+              "For numeric data, the result's index will include ``count``,\n",
+              "``mean``, ``std``, ``min``, ``max`` as well as lower, ``50`` and\n",
+              "upper percentiles. By default the lower percentile is ``25`` and the\n",
+              "upper percentile is ``75``. The ``50`` percentile is the\n",
+              "same as the median.\n",
+              "\n",
+              "For object data (e.g. strings or timestamps), the result's index\n",
+              "will include ``count``, ``unique``, ``top``, and ``freq``. The ``top``\n",
+              "is the most common value. The ``freq`` is the most common value's\n",
+              "frequency. Timestamps also include the ``first`` and ``last`` items.\n",
+              "\n",
+              "If multiple object values have the highest count, then the\n",
+              "``count`` and ``top`` results will be arbitrarily chosen from\n",
+              "among those with the highest count.\n",
+              "\n",
+              "For mixed data types provided via a ``DataFrame``, the default is to\n",
+              "return only an analysis of numeric columns. If the dataframe consists\n",
+              "only of object and categorical data without any numeric columns, the\n",
+              "default is to return an analysis of both the object and categorical\n",
+              "columns. If ``include='all'`` is provided as an option, the result\n",
+              "will include a union of attributes of each type.\n",
+              "\n",
+              "The `include` and `exclude` parameters can be used to limit\n",
+              "which columns in a ``DataFrame`` are analyzed for the output.\n",
+              "The parameters are ignored when analyzing a ``Series``.\n",
+              "\n",
+              "Examples\n",
+              "--------\n",
+              "Describing a numeric ``Series``.\n",
+              "\n",
+              ">>> s = pd.Series([1, 2, 3])\n",
+              ">>> s.describe()\n",
+              "count    3.0\n",
+              "mean     2.0\n",
+              "std      1.0\n",
+              "min      1.0\n",
+              "25%      1.5\n",
+              "50%      2.0\n",
+              "75%      2.5\n",
+              "max      3.0\n",
+              "dtype: float64\n",
+              "\n",
+              "Describing a categorical ``Series``.\n",
+              "\n",
+              ">>> s = pd.Series(['a', 'a', 'b', 'c'])\n",
+              ">>> s.describe()\n",
+              "count     4\n",
+              "unique    3\n",
+              "top       a\n",
+              "freq      2\n",
+              "dtype: object\n",
+              "\n",
+              "Describing a timestamp ``Series``.\n",
+              "\n",
+              ">>> s = pd.Series([\n",
+              "...   np.datetime64("2000-01-01"),\n",
+              "...   np.datetime64("2010-01-01"),\n",
+              "...   np.datetime64("2010-01-01")\n",
+              "... ])\n",
+              ">>> s.describe(datetime_is_numeric=True)\n",
+              "count                      3\n",
+              "mean     2006-09-01 08:00:00\n",
+              "min      2000-01-01 00:00:00\n",
+              "25%      2004-12-31 12:00:00\n",
+              "50%      2010-01-01 00:00:00\n",
+              "75%      2010-01-01 00:00:00\n",
+              "max      2010-01-01 00:00:00\n",
+              "dtype: object\n",
+              "\n",
+              "Describing a ``DataFrame``. By default only numeric fields\n",
+              "are returned.\n",
+              "\n",
+              ">>> df = pd.DataFrame({'categorical': pd.Categorical(['d','e','f']),\n",
+              "...                    'numeric': [1, 2, 3],\n",
+              "...                    'object': ['a', 'b', 'c']\n",
+              "...                   })\n",
+              ">>> df.describe()\n",
+              "       numeric\n",
+              "count      3.0\n",
+              "mean       2.0\n",
+              "std        1.0\n",
+              "min        1.0\n",
+              "25%        1.5\n",
+              "50%        2.0\n",
+              "75%        2.5\n",
+              "max        3.0\n",
+              "\n",
+              "Describing all columns of a ``DataFrame`` regardless of data type.\n",
+              "\n",
+              ">>> df.describe(include='all')  # doctest: +SKIP\n",
+              "       categorical  numeric object\n",
+              "count            3      3.0      3\n",
+              "unique           3      NaN      3\n",
+              "top              f      NaN      a\n",
+              "freq             1      NaN      1\n",
+              "mean           NaN      2.0    NaN\n",
+              "std            NaN      1.0    NaN\n",
+              "min            NaN      1.0    NaN\n",
+              "25%            NaN      1.5    NaN\n",
+              "50%            NaN      2.0    NaN\n",
+              "75%            NaN      2.5    NaN\n",
+              "max            NaN      3.0    NaN\n",
+              "\n",
+              "Describing a column from a ``DataFrame`` by accessing it as\n",
+              "an attribute.\n",
+              "\n",
+              ">>> df.numeric.describe()\n",
+              "count    3.0\n",
+              "mean     2.0\n",
+              "std      1.0\n",
+              "min      1.0\n",
+              "25%      1.5\n",
+              "50%      2.0\n",
+              "75%      2.5\n",
+              "max      3.0\n",
+              "Name: numeric, dtype: float64\n",
+              "\n",
+              "Including only numeric columns in a ``DataFrame`` description.\n",
+              "\n",
+              ">>> df.describe(include=[np.number])\n",
+              "       numeric\n",
+              "count      3.0\n",
+              "mean       2.0\n",
+              "std        1.0\n",
+              "min        1.0\n",
+              "25%        1.5\n",
+              "50%        2.0\n",
+              "75%        2.5\n",
+              "max        3.0\n",
+              "\n",
+              "Including only string columns in a ``DataFrame`` description.\n",
+              "\n",
+              ">>> df.describe(include=[object])  # doctest: +SKIP\n",
+              "       object\n",
+              "count       3\n",
+              "unique      3\n",
+              "top         a\n",
+              "freq        1\n",
+              "\n",
+              "Including only categorical columns from a ``DataFrame`` description.\n",
+              "\n",
+              ">>> df.describe(include=['category'])\n",
+              "       categorical\n",
+              "count            3\n",
+              "unique           3\n",
+              "top              d\n",
+              "freq             1\n",
+              "\n",
+              "Excluding numeric columns from a ``DataFrame`` description.\n",
+              "\n",
+              ">>> df.describe(exclude=[np.number])  # doctest: +SKIP\n",
+              "       categorical object\n",
+              "count            3      3\n",
+              "unique           3      3\n",
+              "top              f      a\n",
+              "freq             1      1\n",
+              "\n",
+              "Excluding object columns from a ``DataFrame`` description.\n",
+              "\n",
+              ">>> df.describe(exclude=[object])  # doctest: +SKIP\n",
+              "       categorical  numeric\n",
+              "count            3      3.0\n",
+              "unique           3      NaN\n",
+              "top              f      NaN\n",
+              "freq             1      NaN\n",
+              "mean           NaN      2.0\n",
+              "std            NaN      1.0\n",
+              "min            NaN      1.0\n",
+              "25%            NaN      1.5\n",
+              "50%            NaN      2.0\n",
+              "75%            NaN      2.5\n",
+              "max            NaN      3.0
\n", + " \n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rItK7GrPq5Dn", + "outputId": "1517c00c-709c-4964-9cb0-30df70012fa8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Hotel Campanile Paris Bercy Village 40\n", + "Romance Istanbul Hotel 40\n", + "Hotel Sultania 40\n", + "Conrad Istanbul Bosphorus 40\n", + "Hilton Istanbul Bomonti Hotel & Conference Center 40\n", + " ..\n", + "The Story Hotel Pera 40\n", + "Hotel Amira Istanbul 40\n", + "Mula Hotel 40\n", + "Sirkeci Mansion 40\n", + "The FIDI Hotel 37\n", + "Name: hotel_name, Length: 150, dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.hotel_name.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rw2d6YCcrHK7", + "outputId": "6e7d9f05-7a55-43a6-af79-8ec7c4a6f587" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5997, 14)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6yv1mQyfrInD", + "outputId": "d700cc7e-f276-4448-e067-ab09dad3e57b" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.duplicated().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "pjc0sqCWrxOD", + "outputId": "380128ff-1197-4b8f-ebb6-3b456081b243" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "hotel_name 0\n", + "hotel_description 800\n", + "review_title 0\n", + "review_text 1130\n", + "rate 1130\n", + "tripdate 0\n", + "hotel_url 0\n", + "hotel_image 0\n", + "price_range 0\n", + "rating_value 0\n", + "review_count 0\n", + "street_address 0\n", + "locality 0\n", + "country 0\n", + "dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LA5HXn5OvUe9", + "outputId": "d179c7c0-1b00-4577-b566-8b73e791983e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5997" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(df.index)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "OFYNeJEwrOaJ" + }, + "outputs": [], + "source": [ + "import re\n", + "\n", + "# combine title and review_text columns into one col\n", + "df[\"review_info\"] = (\n", + " df.review_title\n", + ".str.strip() + ' ' + df.review_text.str.strip()\n", + ")\n", + "# combine hotel and review columns into one col\n", + "df[\"hotel_info\"] = (\n", + " df.hotel_name\n", + ".str.strip() + ' ' + df.hotel_description.str.strip()\n", + ")\n", + "\n", + "df_combined = df.copy()\n", + "\n", + "# remove all non-alphanumeric characters\n", + "df_combined['review_info'] = df_combined['review_info'].apply(lambda x: re.sub('[^a-zA-z0-9\\s]','',str(x)))\n", + "df_combined['hotel_info'] = df_combined['hotel_info'].apply(lambda x: re.sub('[^a-zA-z0-9\\s]','-',str(x)))\n", + "\n", + "# convert all txt to lower case\n", + "def lower_case(input_str):\n", + " input_str = input_str.lower()\n", + " return input_str\n", + "\n", + "df_combined['review_info']= df_combined['review_info'].apply(lambda x: lower_case(x))\n", + "#df_combined['hotel_info']= df_combined['hotel_info'].apply(lambda x: lower_case(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "3M_9a0ZzoNRL", + "outputId": "545a1963-5b40-48cf-8954-eec1fedd4ce3" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \"df_combined\",\n \"rows\": 5997,\n \"fields\": [\n {\n \"column\": \"hotel_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Travelodge London Central Kings Cross\",\n \"Wyndham Istanbul Oldcity\",\n \"The Empire Hotel\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_description\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 130,\n \"samples\": [\n \"See why so many travelers make Park Grand Paddington Court their hotel of choice when visiting London. Providing an ideal mix of value, comfort and convenience, it offers a charming setting with an array of amenities designed for travelers like you. You\\u2019ll enjoy relaxing rooms that offer a flat screen TV, air conditioning, and a refrigerator, and you can stay connected during your stay as Park Grand Paddington Court offers guests free WiFi. The hotel features a 24 hour front desk, a concierge, and room service. Plus, Park Grand Paddington Court offers a fitness center and breakfast, providing a pleasant respite from your busy day. Given the close proximity of popular landmarks, such as Buckingham Palace (1.8 mi) and Primrose Hill (1.9 mi), guests of Park Grand Paddington Court can easily experience some of London's most well known attractions. During your visit, be sure to check out one of London's popular tapas restaurants such as Dishoom Covent Garden, The Shed, and StreetXO, all a short distance from Park Grand Paddington Court. If you\\u2019re looking for something to do, Natural History Museum (1.2 mi), Harrods (1.2 mi), and V&A - Victoria and Albert Museum (1.2 mi) are a nice way to spend some time, and they are all within walking distance of Park Grand Paddington Court Hotel. We\\u2019re sure you\\u2019ll enjoy your stay at Park Grand Paddington Court as you experience all of the things London has to offer.\",\n \"Timeless yet modern, The Westin St. Francis San Francisco on Union Square offers guests a warm welcome with its turn-of-the-20th-century European style. Our hotel in downtown San Francisco, CA, is close to the Financial District and Moscone Convention Center, and with cable cars just outside our front doors, we are at the intersection of the glorious past and vibrant present of this incredible city. After an exciting day, retire to elegant guest rooms, many featuring chandeliers and marble bathrooms. Discover unique and historic-inspired food and beverage offerings at the on-site restaurant and bars, exercise well in the fitness center and experience a new chapter of LA at this storied destination.\",\n \"Stylish seaside hotel with an outdoor pool and meeting facilities, next to Istanbul Aquarium and Aqua Florya Mall. Ideal for business and leisure travellers, Crowne Plaza\\u00ae Istanbul - Florya hotel is a 15-minute drive from CNR Expo and IDTM exhibition centres. We provide free parking in our secure lot. Transport links by bus, train and road are excellent. We have six fully equipped meeting rooms with a maximum capacity of 800, while our outdoor banquet area has room for 1,250 guests. Our Crowne Plaza Meetings Director is on hand to take care of all the details. The hotel has free Wi-Fi throughout and is completely connected, providing access to power when and where you need it. The Aqua Florya shopping centre and Istanbul Aquarium are both next door to the hotel. Tutankhamun, Treasures of the Child King is at Istanbul Aquarium Event Center until the end of the year. The exhibition, appealing to visitors from all age groups,will be magnificent.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5314,\n \"samples\": [\n \"Nice location. Good breakfast.\",\n \"Would not recommend a stay at this hotel\",\n \"Wonderful stay\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4867,\n \"samples\": [\n \"Absolutely brilliant staff, aura, doina, daniellla, slave Was Absolutely brilliant and accomaditing. Great location and amazing customer service. I recommend this hotel and definitely will stay here again. \",\n \"Unfortunately not the best of stays at Citadines and quite upset. We arrived at the hotel around 11am to check our bags in and pay the full amount, we then returned at 4pm to check into our room. We were told to take a seat and waited nearly half an hour without being told anything except 'someone is checking it', but it was very obvious the room was not cleaned as the women can down with a cloth and spray to tell them its okay! We received free breakfast the next morning as an apology what helped but I preferred if they were more honest about the room not being ready. When we got to our room we impressed by the view, but unfortunately that quickly changed when we realized we were right next to a metro station. This was quite loud every night and extremely disappointing for the\",\n \"The hotel is excellent and in a great location. Our flight arrived early morning and we went to drop bags with the hotel around 10am and they allowed us an early check in with no additional fees and gave us a room with a fantastic city view of downtown and One World Trade. The front desk was super helpful and got us squared away quickly. The man\\u2019s name was \\u201cZ\\u201d who helped us, and he is the epitome of what top rate customer service is supposed to be. Also enjoyed the bar where they make incredible cocktails and have a nice happy hour (4-7p)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rate\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.1724493011383668,\n \"min\": 1.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.0,\n 2.0,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"tripdate\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 76,\n \"samples\": [\n \" January 2020\",\n \" January 2021\",\n \" November 2021\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_url\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 600,\n \"samples\": [\n \"https://www.tripadvisor.com/Hotel_Review-g293974-d294607-Reviews-or20-InterContinental_Istanbul-Istanbul.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g60763-d7255276-Reviews-or30-The_Knickerbocker-New_York_City_New_York.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g187147-d197985-Reviews-or10-Pullman_Paris_Eiffel_Tower_Hotel-Paris_Ile_de_France.html\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_image\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"https://media-cdn.tripadvisor.com/media/photo-s/26/37/24/88/gb-exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/2b/43/07/07/exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/29/38/be/d3/empire-hotel-new-york.jpg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price_range\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rating_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4327574208245527,\n \"min\": 3.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.5,\n 3.5,\n 4.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3771,\n \"min\": 39,\n \"max\": 24877,\n \"num_unique_values\": 147,\n \"samples\": [\n 3755,\n 1878,\n 471\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"street_address\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Willing House 356-364 Gray's Inn Road Willings House\",\n \"Kemalpasa Mah. Sehzadebasi Cad. Celal Aga Konagi No 1\",\n \"44 West 63rd Street\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"locality\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"San Francisco\",\n \"Paris\",\n \"London\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"country\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"T\\u00fcrkiye\",\n \"France\",\n \"United States\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_info\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4868,\n \"samples\": [\n \"fabulous this place is fabulous and the location is excellent in busy istanbul this is a quiet street great to sleep and rest this street has great shop to find everything you need at good prices gulhane spice on the same block down the street from the hotel is particularly good\",\n \"great 3 nights at best western la demeure great hotel super chic and easy access to le gobelins metro absolutely spotless huge shout out to the cleaning staff positives huge towels which was fabulous lots of sockets and even 2 usb charging points amazing air con desk with mirror wonderful shower free water each day in the room bed super comfy and king size lots of lights and lamps and reading lights beautifully remade room every day lots of quirky storage and shelving beautiful decor and styling of room possible negatives but not for us only one english channel which was bbc world news i watched live tennis so didnt bother me but you may want to some downloading before you arrive only half a dozen hangers on an open rail so we lived out of our suitcases which we are fine with as only here for\",\n \"excellent service i went to the restaurant at the hotel received great food and experienced great service through our waiter jahidul he provided us with excellent service and always had a smile thanks jahidul \"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_info\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 131,\n \"samples\": [\n \"Stanyan Park Hotel Elegantly restored in 1983- The Stanyan Park Hotel- listed on the National Register of Historic Places- is an affordable- turn of the century award-winning hotel with comfort- design and hospitality that will transport you back to a bygone era of style and grace- Located across from San Francisco-s famous Golden Gate Park- which is filled with gardens- museums- art- flowers- trees- lakes- wildlife and birds beckoning you for a nice romantic evening stroll or an early morning jog- Our award-winning boutique hotel is centrally located within easy access to trendy coffee houses- restaurants for your dining pleasure- Whole Foods Market- a steps away from the historic Haight - Ashbury street and only about half-mile away from world renowned universities- USF and UCSF- Paid self parking lot is available- Free Wi-Fi- Complimentary Manager-s wine and cheese hour on weekdays- and a light Tea service every evening- A daily healthy and delicious expanded continental breakfast is included-\",\n \"Hotel Zoe Fisherman-s Wharf Located near the waterfront and piers in the iconic Fisherman-s Wharf neighborhood- Hotel Zoe has a whimsical spirit paired with a refined and elegant palate- Staying at Hotel Zoe allows guests easy access to all the best things to do in San Francisco- from the cable cars to North Beach and everything in between- Welcome to the newest haven for all adventurers at heart in the heart of lively Fisherman-s Wharf-\",\n \"Cheers Lighthouse Introducing Cheers Lighthouse- the outcast of the Bohemian Cheers Hostel family- Lighthouse is for the more luxurious backpacker- Complete with ocean views and situated above a restaurant- Lighthouse has all the comforts for a relaxing stay but with the Cheers infamous friendly relaxed atmosphere-Our hostel offers a comfortable- clean and budget stay in a warm and friendly atmosphere-\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe", + "variable_name": "df_combined" + }, + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountryreview_infohotel_info
0Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...An exceptional boutique hotel, great value for...NoneNaNFebruary 2020https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...
1Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...You can’t get better than this.NoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...
2Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Exceeds all expectationsNoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...
3Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Great Location, Fantastic AccommodationsNoneNaNAugust 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...
4Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Perfection. It is all in the details.NoneNaNJune 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...
...................................................
5992Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel but had trouble booking in.We had just had a very long and delayed train ...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel but had trouble booking in we had j...Hotel Campanile Paris Bercy Village In the eas...
5993Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great LocationWe stayed at the Kyriad Hotel Paris Bercy Vill...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location we stayed at the kyriad hotel p...Hotel Campanile Paris Bercy Village In the eas...
5994Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great locationStayed here for a few days and it is a great l...5.0October 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location stayed here for a few days and ...Hotel Campanile Paris Bercy Village In the eas...
5995Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...For one night onlyWe stayed here for one night on our way to Ita...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancefor one night only we stayed here for one nigh...Hotel Campanile Paris Bercy Village In the eas...
5996Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel in Paris BercyThe Hotel is close to the metro station Cour S...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel in paris bercy the hotel is close t...Hotel Campanile Paris Bercy Village In the eas...
\n", + "

5997 rows × 16 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "text/plain": [ + " hotel_name \\\n", + "0 Romance Istanbul Hotel \n", + "1 Romance Istanbul Hotel \n", + "2 Romance Istanbul Hotel \n", + "3 Romance Istanbul Hotel \n", + "4 Romance Istanbul Hotel \n", + "... ... \n", + "5992 Hotel Campanile Paris Bercy Village \n", + "5993 Hotel Campanile Paris Bercy Village \n", + "5994 Hotel Campanile Paris Bercy Village \n", + "5995 Hotel Campanile Paris Bercy Village \n", + "5996 Hotel Campanile Paris Bercy Village \n", + "\n", + " hotel_description \\\n", + "0 Romance Istanbul Hotel has 39 rooms.Every room... \n", + "1 Romance Istanbul Hotel has 39 rooms.Every room... \n", + "2 Romance Istanbul Hotel has 39 rooms.Every room... \n", + "3 Romance Istanbul Hotel has 39 rooms.Every room... \n", + "4 Romance Istanbul Hotel has 39 rooms.Every room... \n", + "... ... \n", + "5992 In the east of Paris, the hotel Campanile Berc... \n", + "5993 In the east of Paris, the hotel Campanile Berc... \n", + "5994 In the east of Paris, the hotel Campanile Berc... \n", + "5995 In the east of Paris, the hotel Campanile Berc... \n", + "5996 In the east of Paris, the hotel Campanile Berc... \n", + "\n", + " review_title \\\n", + "0 An exceptional boutique hotel, great value for... \n", + "1 You can’t get better than this. \n", + "2 Exceeds all expectations \n", + "3 Great Location, Fantastic Accommodations \n", + "4 Perfection. It is all in the details. \n", + "... ... \n", + "5992 Nice hotel but had trouble booking in. \n", + "5993 Great Location \n", + "5994 Great location \n", + "5995 For one night only \n", + "5996 Nice hotel in Paris Bercy \n", + "\n", + " review_text rate \\\n", + "0 None NaN \n", + "1 None NaN \n", + "2 None NaN \n", + "3 None NaN \n", + "4 None NaN \n", + "... ... ... \n", + "5992 We had just had a very long and delayed train ... 3.0 \n", + "5993 We stayed at the Kyriad Hotel Paris Bercy Vill... 4.0 \n", + "5994 Stayed here for a few days and it is a great l... 5.0 \n", + "5995 We stayed here for one night on our way to Ita... 3.0 \n", + "5996 The Hotel is close to the metro station Cour S... 4.0 \n", + "\n", + " tripdate hotel_url \\\n", + "0 February 2020 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "1 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "2 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "3 August 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "4 June 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "... ... ... \n", + "5992 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5993 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5994 October 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5995 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5996 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "\n", + " hotel_image \\\n", + "0 https://media-cdn.tripadvisor.com/media/photo-... \n", + "1 https://media-cdn.tripadvisor.com/media/photo-... \n", + "2 https://media-cdn.tripadvisor.com/media/photo-... \n", + "3 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4 https://media-cdn.tripadvisor.com/media/photo-... \n", + "... ... \n", + "5992 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5993 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5994 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5995 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5996 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "0 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "1 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "2 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "3 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "4 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "... ... ... \n", + "5992 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5993 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5994 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5995 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5996 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "\n", + " review_count street_address locality country \\\n", + "0 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "1 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "2 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "3 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "4 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye \n", + "... ... ... ... ... \n", + "5992 1625 17 rue Baron le Roy Paris France \n", + "5993 1625 17 rue Baron le Roy Paris France \n", + "5994 1625 17 rue Baron le Roy Paris France \n", + "5995 1625 17 rue Baron le Roy Paris France \n", + "5996 1625 17 rue Baron le Roy Paris France \n", + "\n", + " review_info \\\n", + "0 nan \n", + "1 nan \n", + "2 nan \n", + "3 nan \n", + "4 nan \n", + "... ... \n", + "5992 nice hotel but had trouble booking in we had j... \n", + "5993 great location we stayed at the kyriad hotel p... \n", + "5994 great location stayed here for a few days and ... \n", + "5995 for one night only we stayed here for one nigh... \n", + "5996 nice hotel in paris bercy the hotel is close t... \n", + "\n", + " hotel_info \n", + "0 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "1 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "2 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "3 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "4 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "... ... \n", + "5992 Hotel Campanile Paris Bercy Village In the eas... \n", + "5993 Hotel Campanile Paris Bercy Village In the eas... \n", + "5994 Hotel Campanile Paris Bercy Village In the eas... \n", + "5995 Hotel Campanile Paris Bercy Village In the eas... \n", + "5996 Hotel Campanile Paris Bercy Village In the eas... \n", + "\n", + "[5997 rows x 16 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_combined" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "EqSgdu4FrVnh", + "outputId": "766bba4c-1ca3-4a17-d157-fcc92e79abf1" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "repr_error": "0", + "type": "dataframe", + "variable_name": "test_dt" + }, + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountryreview_infohotel_info
5977Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Kyriad Bercy Hotel ParisMyself and my teenage daughter stayed here for...3.0July 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancekyriad bercy hotel paris myself and my teenage...Hotel Campanile Paris Bercy Village In the eas...
5978Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Excellent customer serviceI have a reservation with them in Booking.com ...5.0March 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceexcellent customer service i have a reservatio...Hotel Campanile Paris Bercy Village In the eas...
5979Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Fantastic stay!This hotel was lovely and in a very good locat...5.0February 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancefantastic stay this hotel was lovely and in a ...Hotel Campanile Paris Bercy Village In the eas...
5980Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Excellent reception team, nice breakfastWe booked this as mystery hotel and were not d...4.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceexcellent reception team nice breakfast we boo...Hotel Campanile Paris Bercy Village In the eas...
5981Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...On the positive sideThis hotel was very good for the money spent. ...4.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceon the positive side this hotel was very good ...Hotel Campanile Paris Bercy Village In the eas...
5982Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Recommend!Amazing experience, everything was perfect, wo...5.0February 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancerecommend amazing experience everything was pe...Hotel Campanile Paris Bercy Village In the eas...
5983Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...perfect location, clean and welcomingOnly 5min away from Bercy Village with dozens ...5.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceperfect location clean and welcoming only 5min...Hotel Campanile Paris Bercy Village In the eas...
5984Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...A great stayI don't usually write reviews. However, I am ...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancea great stay i dont usually write reviews how...Hotel Campanile Paris Bercy Village In the eas...
5985Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great city HotelWe came via Eurostar and this Hotel was part o...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat city hotel we came via eurostar and this...Hotel Campanile Paris Bercy Village In the eas...
5986Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Good place to stayThis hotel located in a very good area. We sta...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegood place to stay this hotel located in a ver...Hotel Campanile Paris Bercy Village In the eas...
5987Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Very conveniently located hotelWe had selected Kyriad Hotel via the Eurostar ...4.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancevery conveniently located hotel we had selecte...Hotel Campanile Paris Bercy Village In the eas...
5988Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...A gem in Paris (for the price)!!This hotel is located in the Bercy area, the n...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancea gem in paris for the price this hotel is loc...Hotel Campanile Paris Bercy Village In the eas...
5989Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Average hotel in a great area of ParisKyriad hotel is a good hotel placed in a fabul...3.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceaverage hotel in a great area of paris kyriad ...Hotel Campanile Paris Bercy Village In the eas...
5990Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Good hotel, not greatWe stayed at Kyriad paris bercy village for th...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegood hotel not great we stayed at kyriad paris...Hotel Campanile Paris Bercy Village In the eas...
5991Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Clean and comfyNothing I can fault really. Location is great,...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceclean and comfy nothing i can fault really loc...Hotel Campanile Paris Bercy Village In the eas...
5992Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel but had trouble booking in.We had just had a very long and delayed train ...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel but had trouble booking in we had j...Hotel Campanile Paris Bercy Village In the eas...
5993Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great LocationWe stayed at the Kyriad Hotel Paris Bercy Vill...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location we stayed at the kyriad hotel p...Hotel Campanile Paris Bercy Village In the eas...
5994Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great locationStayed here for a few days and it is a great l...5.0October 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location stayed here for a few days and ...Hotel Campanile Paris Bercy Village In the eas...
5995Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...For one night onlyWe stayed here for one night on our way to Ita...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancefor one night only we stayed here for one nigh...Hotel Campanile Paris Bercy Village In the eas...
5996Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel in Paris BercyThe Hotel is close to the metro station Cour S...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel in paris bercy the hotel is close t...Hotel Campanile Paris Bercy Village In the eas...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "text/plain": [ + " hotel_name \\\n", + "5977 Hotel Campanile Paris Bercy Village \n", + "5978 Hotel Campanile Paris Bercy Village \n", + "5979 Hotel Campanile Paris Bercy Village \n", + "5980 Hotel Campanile Paris Bercy Village \n", + "5981 Hotel Campanile Paris Bercy Village \n", + "5982 Hotel Campanile Paris Bercy Village \n", + "5983 Hotel Campanile Paris Bercy Village \n", + "5984 Hotel Campanile Paris Bercy Village \n", + "5985 Hotel Campanile Paris Bercy Village \n", + "5986 Hotel Campanile Paris Bercy Village \n", + "5987 Hotel Campanile Paris Bercy Village \n", + "5988 Hotel Campanile Paris Bercy Village \n", + "5989 Hotel Campanile Paris Bercy Village \n", + "5990 Hotel Campanile Paris Bercy Village \n", + "5991 Hotel Campanile Paris Bercy Village \n", + "5992 Hotel Campanile Paris Bercy Village \n", + "5993 Hotel Campanile Paris Bercy Village \n", + "5994 Hotel Campanile Paris Bercy Village \n", + "5995 Hotel Campanile Paris Bercy Village \n", + "5996 Hotel Campanile Paris Bercy Village \n", + "\n", + " hotel_description \\\n", + "5977 In the east of Paris, the hotel Campanile Berc... \n", + "5978 In the east of Paris, the hotel Campanile Berc... \n", + "5979 In the east of Paris, the hotel Campanile Berc... \n", + "5980 In the east of Paris, the hotel Campanile Berc... \n", + "5981 In the east of Paris, the hotel Campanile Berc... \n", + "5982 In the east of Paris, the hotel Campanile Berc... \n", + "5983 In the east of Paris, the hotel Campanile Berc... \n", + "5984 In the east of Paris, the hotel Campanile Berc... \n", + "5985 In the east of Paris, the hotel Campanile Berc... \n", + "5986 In the east of Paris, the hotel Campanile Berc... \n", + "5987 In the east of Paris, the hotel Campanile Berc... \n", + "5988 In the east of Paris, the hotel Campanile Berc... \n", + "5989 In the east of Paris, the hotel Campanile Berc... \n", + "5990 In the east of Paris, the hotel Campanile Berc... \n", + "5991 In the east of Paris, the hotel Campanile Berc... \n", + "5992 In the east of Paris, the hotel Campanile Berc... \n", + "5993 In the east of Paris, the hotel Campanile Berc... \n", + "5994 In the east of Paris, the hotel Campanile Berc... \n", + "5995 In the east of Paris, the hotel Campanile Berc... \n", + "5996 In the east of Paris, the hotel Campanile Berc... \n", + "\n", + " review_title \\\n", + "5977 Kyriad Bercy Hotel Paris \n", + "5978 Excellent customer service \n", + "5979 Fantastic stay! \n", + "5980 Excellent reception team, nice breakfast \n", + "5981 On the positive side \n", + "5982 Recommend! \n", + "5983 perfect location, clean and welcoming \n", + "5984 A great stay \n", + "5985 Great city Hotel \n", + "5986 Good place to stay \n", + "5987 Very conveniently located hotel \n", + "5988 A gem in Paris (for the price)!! \n", + "5989 Average hotel in a great area of Paris \n", + "5990 Good hotel, not great \n", + "5991 Clean and comfy \n", + "5992 Nice hotel but had trouble booking in. \n", + "5993 Great Location \n", + "5994 Great location \n", + "5995 For one night only \n", + "5996 Nice hotel in Paris Bercy \n", + "\n", + " review_text rate \\\n", + "5977 Myself and my teenage daughter stayed here for... 3.0 \n", + "5978 I have a reservation with them in Booking.com ... 5.0 \n", + "5979 This hotel was lovely and in a very good locat... 5.0 \n", + "5980 We booked this as mystery hotel and were not d... 4.0 \n", + "5981 This hotel was very good for the money spent. ... 4.0 \n", + "5982 Amazing experience, everything was perfect, wo... 5.0 \n", + "5983 Only 5min away from Bercy Village with dozens ... 5.0 \n", + "5984 I don't usually write reviews. However, I am ... 5.0 \n", + "5985 We came via Eurostar and this Hotel was part o... 5.0 \n", + "5986 This hotel located in a very good area. We sta... 5.0 \n", + "5987 We had selected Kyriad Hotel via the Eurostar ... 4.0 \n", + "5988 This hotel is located in the Bercy area, the n... 5.0 \n", + "5989 Kyriad hotel is a good hotel placed in a fabul... 3.0 \n", + "5990 We stayed at Kyriad paris bercy village for th... 3.0 \n", + "5991 Nothing I can fault really. Location is great,... 5.0 \n", + "5992 We had just had a very long and delayed train ... 3.0 \n", + "5993 We stayed at the Kyriad Hotel Paris Bercy Vill... 4.0 \n", + "5994 Stayed here for a few days and it is a great l... 5.0 \n", + "5995 We stayed here for one night on our way to Ita... 3.0 \n", + "5996 The Hotel is close to the metro station Cour S... 4.0 \n", + "\n", + " tripdate hotel_url \\\n", + "5977 July 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5978 March 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5979 February 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5980 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5981 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5982 February 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5983 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5984 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5985 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5986 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5987 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5988 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5989 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5990 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5991 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5992 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5993 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5994 October 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5995 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5996 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "\n", + " hotel_image \\\n", + "5977 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5978 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5979 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5980 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5981 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5982 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5983 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5984 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5985 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5986 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5987 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5988 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5989 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5990 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5991 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5992 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5993 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5994 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5995 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5996 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "5977 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5978 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5979 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5980 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5981 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5982 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5983 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5984 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5985 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5986 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5987 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5988 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5989 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5990 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5991 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5992 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5993 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5994 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5995 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5996 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "\n", + " review_count street_address locality country \\\n", + "5977 1625 17 rue Baron le Roy Paris France \n", + "5978 1625 17 rue Baron le Roy Paris France \n", + "5979 1625 17 rue Baron le Roy Paris France \n", + "5980 1625 17 rue Baron le Roy Paris France \n", + "5981 1625 17 rue Baron le Roy Paris France \n", + "5982 1625 17 rue Baron le Roy Paris France \n", + "5983 1625 17 rue Baron le Roy Paris France \n", + "5984 1625 17 rue Baron le Roy Paris France \n", + "5985 1625 17 rue Baron le Roy Paris France \n", + "5986 1625 17 rue Baron le Roy Paris France \n", + "5987 1625 17 rue Baron le Roy Paris France \n", + "5988 1625 17 rue Baron le Roy Paris France \n", + "5989 1625 17 rue Baron le Roy Paris France \n", + "5990 1625 17 rue Baron le Roy Paris France \n", + "5991 1625 17 rue Baron le Roy Paris France \n", + "5992 1625 17 rue Baron le Roy Paris France \n", + "5993 1625 17 rue Baron le Roy Paris France \n", + "5994 1625 17 rue Baron le Roy Paris France \n", + "5995 1625 17 rue Baron le Roy Paris France \n", + "5996 1625 17 rue Baron le Roy Paris France \n", + "\n", + " review_info \\\n", + "5977 kyriad bercy hotel paris myself and my teenage... \n", + "5978 excellent customer service i have a reservatio... \n", + "5979 fantastic stay this hotel was lovely and in a ... \n", + "5980 excellent reception team nice breakfast we boo... \n", + "5981 on the positive side this hotel was very good ... \n", + "5982 recommend amazing experience everything was pe... \n", + "5983 perfect location clean and welcoming only 5min... \n", + "5984 a great stay i dont usually write reviews how... \n", + "5985 great city hotel we came via eurostar and this... \n", + "5986 good place to stay this hotel located in a ver... \n", + "5987 very conveniently located hotel we had selecte... \n", + "5988 a gem in paris for the price this hotel is loc... \n", + "5989 average hotel in a great area of paris kyriad ... \n", + "5990 good hotel not great we stayed at kyriad paris... \n", + "5991 clean and comfy nothing i can fault really loc... \n", + "5992 nice hotel but had trouble booking in we had j... \n", + "5993 great location we stayed at the kyriad hotel p... \n", + "5994 great location stayed here for a few days and ... \n", + "5995 for one night only we stayed here for one nigh... \n", + "5996 nice hotel in paris bercy the hotel is close t... \n", + "\n", + " hotel_info \n", + "5977 Hotel Campanile Paris Bercy Village In the eas... \n", + "5978 Hotel Campanile Paris Bercy Village In the eas... \n", + "5979 Hotel Campanile Paris Bercy Village In the eas... \n", + "5980 Hotel Campanile Paris Bercy Village In the eas... \n", + "5981 Hotel Campanile Paris Bercy Village In the eas... \n", + "5982 Hotel Campanile Paris Bercy Village In the eas... \n", + "5983 Hotel Campanile Paris Bercy Village In the eas... \n", + "5984 Hotel Campanile Paris Bercy Village In the eas... \n", + "5985 Hotel Campanile Paris Bercy Village In the eas... \n", + "5986 Hotel Campanile Paris Bercy Village In the eas... \n", + "5987 Hotel Campanile Paris Bercy Village In the eas... \n", + "5988 Hotel Campanile Paris Bercy Village In the eas... \n", + "5989 Hotel Campanile Paris Bercy Village In the eas... \n", + "5990 Hotel Campanile Paris Bercy Village In the eas... \n", + "5991 Hotel Campanile Paris Bercy Village In the eas... \n", + "5992 Hotel Campanile Paris Bercy Village In the eas... \n", + "5993 Hotel Campanile Paris Bercy Village In the eas... \n", + "5994 Hotel Campanile Paris Bercy Village In the eas... \n", + "5995 Hotel Campanile Paris Bercy Village In the eas... \n", + "5996 Hotel Campanile Paris Bercy Village In the eas... " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_dt = df_combined[-20:]\n", + "test_dt" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 356 + }, + "id": "kdhNsoWyWRkw", + "outputId": "5ea4f904-4cca-4a6b-b666-be4620f053ff" + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'numpy.linalg._umath_linalg' has no attribute '_ilp64'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0msentence_transformers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceTransformer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCrossEncoder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mutil\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0membedder\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mSentenceTransformer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'all-mpnet-base-v2'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0m__version__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"2.5.1\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0m__MODEL_HUB_ORGANIZATION__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"sentence-transformers\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mdatasets\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentencesDataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mParallelSentencesDataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mLoggingHandler\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLoggingHandler\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mSentenceTransformer\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceTransformer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/datasets/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mDenoisingAutoEncoderDataset\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDenoisingAutoEncoderDataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mNoDuplicatesDataLoader\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mNoDuplicatesDataLoader\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mParallelSentencesDataset\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mParallelSentencesDataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mSentencesDataset\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentencesDataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mSentenceLabelDataset\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceLabelDataset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/datasets/ParallelSentencesDataset.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mgzip\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceTransformer\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreaders\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mInputExample\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtyping\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m__MODEL_HUB_ORGANIZATION__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mevaluation\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceEvaluator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m from .util import (\n\u001b[1;32m 26\u001b[0m \u001b[0mimport_from_string\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/evaluation/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mSentenceEvaluator\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSentenceEvaluator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mSimilarityFunction\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSimilarityFunction\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mBinaryClassificationEvaluator\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBinaryClassificationEvaluator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mEmbeddingSimilarityEvaluator\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mEmbeddingSimilarityEvaluator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mInformationRetrievalEvaluator\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mInformationRetrievalEvaluator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/evaluation/BinaryClassificationEvaluator.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcsv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpairwise\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpaired_cosine_distances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpaired_euclidean_distances\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpaired_manhattan_distances\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0maverage_precision_score\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sklearn/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_distributor_init\u001b[0m \u001b[0;31m# noqa: F401\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m__check_build\u001b[0m \u001b[0;31m# noqa: F401\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 82\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mclone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 83\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_show_versions\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mshow_versions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sklearn/base.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m__version__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_config\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_config\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_IS_32BIT\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_set_output\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_SetOutputMixin\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m from .utils._tags import (\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sklearn/utils/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mdeprecation\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdeprecated\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mdiscovery\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mall_estimators\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mfixes\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mparse_version\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mthreadpool_info\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_estimator_html_repr\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mestimator_html_repr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m from .validation import (\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sklearn/utils/fixes.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mthreadpoolctl\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/scipy/stats/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 606\u001b[0m from ._warnings_errors import (ConstantInputWarning, NearConstantInputWarning,\n\u001b[1;32m 607\u001b[0m DegenerateDataWarning, FitError)\n\u001b[0;32m--> 608\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_stats_py\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 609\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_variation\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mvariation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 610\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mdistributions\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/scipy/stats/_stats_py.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0marray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0masarray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlib\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mNumpyVersion\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtesting\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msuppress_warnings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mspatial\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdistance\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcdist\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/numpy/testing/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_private\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_private\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_private\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0m_assert_valid_refcount\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_gen_alignment_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_private\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mextbuild\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/numpy/testing/_private/utils.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0mIS_PYSTON\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"pyston_version_info\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mHAS_REFCOUNT\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'getrefcount'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mIS_PYSTON\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 57\u001b[0;31m \u001b[0mHAS_LAPACK64\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_umath_linalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_ilp64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 58\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0m_OLD_PROMOTION\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_promotion_state\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'legacy'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: module 'numpy.linalg._umath_linalg' has no attribute '_ilp64'" + ] + } + ], + "source": [ + "embedder = SentenceTransformer('all-mpnet-base-v2')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oPBAf_PH5avi", + "outputId": "4111e3ad-b7c2-42af-b537-98a6dd02c4cf" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ":1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " test_dt[\"embed_1\"] = test_dt.review_info.apply(lambda x: embedder.encode(x))\n", + ":2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " test_dt[\"embed_2\"] = test_dt.hotel_info.apply(lambda x: embedder.encode(x))\n" + ] + } + ], + "source": [ + "test_dt[\"embed_1\"] = test_dt.review_info.apply(lambda x: embedder.encode(x))\n", + "test_dt[\"embed_2\"] = test_dt.hotel_info.apply(lambda x: embedder.encode(x))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "M7uQA8_K5abw", + "outputId": "f0ef4447-f098-413e-8970-ab9c1aa8e916" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "repr_error": "0", + "type": "dataframe", + "variable_name": "test_dt" + }, + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountryreview_infohotel_infoembed_1embed_2
5977Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Kyriad Bercy Hotel ParisMyself and my teenage daughter stayed here for...3.0July 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancekyriad bercy hotel paris myself and my teenage...Hotel Campanile Paris Bercy Village In the eas...[0.0053078486, -0.014447695, 0.0038470232, 0.0...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5978Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Excellent customer serviceI have a reservation with them in Booking.com ...5.0March 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceexcellent customer service i have a reservatio...Hotel Campanile Paris Bercy Village In the eas...[0.0049453448, -0.0023506915, -0.004336413, 0....[0.0055098273, -0.044080723, 0.011860878, 0.08...
5979Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Fantastic stay!This hotel was lovely and in a very good locat...5.0February 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancefantastic stay this hotel was lovely and in a ...Hotel Campanile Paris Bercy Village In the eas...[-0.022850059, -0.0487052, -0.0015445792, 0.03...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5980Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Excellent reception team, nice breakfastWe booked this as mystery hotel and were not d...4.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceexcellent reception team nice breakfast we boo...Hotel Campanile Paris Bercy Village In the eas...[0.024521174, -0.03356217, 0.016213352, 0.0803...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5981Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...On the positive sideThis hotel was very good for the money spent. ...4.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceon the positive side this hotel was very good ...Hotel Campanile Paris Bercy Village In the eas...[-0.038305234, 0.017031254, 0.008352881, 0.051...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5982Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Recommend!Amazing experience, everything was perfect, wo...5.0February 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancerecommend amazing experience everything was pe...Hotel Campanile Paris Bercy Village In the eas...[-0.003848171, -0.023780435, 0.017891532, 0.02...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5983Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...perfect location, clean and welcomingOnly 5min away from Bercy Village with dozens ...5.0January 2020https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceperfect location clean and welcoming only 5min...Hotel Campanile Paris Bercy Village In the eas...[-0.03350181, -0.04346627, 0.016963577, 0.0795...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5984Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...A great stayI don't usually write reviews. However, I am ...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancea great stay i dont usually write reviews how...Hotel Campanile Paris Bercy Village In the eas...[-0.012432012, -0.035502333, 0.011709777, 0.08...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5985Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great city HotelWe came via Eurostar and this Hotel was part o...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat city hotel we came via eurostar and this...Hotel Campanile Paris Bercy Village In the eas...[-0.019161653, -0.027909609, 0.013313228, 0.08...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5986Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Good place to stayThis hotel located in a very good area. We sta...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegood place to stay this hotel located in a ver...Hotel Campanile Paris Bercy Village In the eas...[0.018544666, -0.07385674, 0.00022794593, 0.02...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5987Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Very conveniently located hotelWe had selected Kyriad Hotel via the Eurostar ...4.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancevery conveniently located hotel we had selecte...Hotel Campanile Paris Bercy Village In the eas...[-0.0010898937, -0.0186181, 0.0058286926, 0.02...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5988Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...A gem in Paris (for the price)!!This hotel is located in the Bercy area, the n...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancea gem in paris for the price this hotel is loc...Hotel Campanile Paris Bercy Village In the eas...[-0.00019215255, -0.042734552, 0.01846412, 0.0...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5989Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Average hotel in a great area of ParisKyriad hotel is a good hotel placed in a fabul...3.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceaverage hotel in a great area of paris kyriad ...Hotel Campanile Paris Bercy Village In the eas...[-0.009388709, -0.039457876, 0.020500658, 0.04...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5990Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Good hotel, not greatWe stayed at Kyriad paris bercy village for th...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegood hotel not great we stayed at kyriad paris...Hotel Campanile Paris Bercy Village In the eas...[0.015159702, -0.028592592, 0.016128678, 0.063...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5991Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Clean and comfyNothing I can fault really. Location is great,...5.0November 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFranceclean and comfy nothing i can fault really loc...Hotel Campanile Paris Bercy Village In the eas...[-0.039042037, -0.018973708, -0.011135213, 0.0...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5992Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel but had trouble booking in.We had just had a very long and delayed train ...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel but had trouble booking in we had j...Hotel Campanile Paris Bercy Village In the eas...[0.019159589, -0.03804933, -0.0139713045, 0.06...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5993Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great LocationWe stayed at the Kyriad Hotel Paris Bercy Vill...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location we stayed at the kyriad hotel p...Hotel Campanile Paris Bercy Village In the eas...[-0.018198008, -0.012747932, 0.018207619, 0.06...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5994Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Great locationStayed here for a few days and it is a great l...5.0October 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancegreat location stayed here for a few days and ...Hotel Campanile Paris Bercy Village In the eas...[-0.054591767, -0.02885944, 0.013679957, 0.070...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5995Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...For one night onlyWe stayed here for one night on our way to Ita...3.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancefor one night only we stayed here for one nigh...Hotel Campanile Paris Bercy Village In the eas...[-0.024700547, -0.02557564, 0.00232916, 0.0568...[0.0055098273, -0.044080723, 0.011860878, 0.08...
5996Hotel Campanile Paris Bercy VillageIn the east of Paris, the hotel Campanile Berc...Nice hotel in Paris BercyThe Hotel is close to the metro station Cour S...4.0September 2019https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...4.0162517 rue Baron le RoyParisFrancenice hotel in paris bercy the hotel is close t...Hotel Campanile Paris Bercy Village In the eas...[-0.012824107, -0.027617063, 0.014790822, 0.07...[0.0055098273, -0.044080723, 0.011860878, 0.08...
\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" + ], + "text/plain": [ + " hotel_name \\\n", + "5977 Hotel Campanile Paris Bercy Village \n", + "5978 Hotel Campanile Paris Bercy Village \n", + "5979 Hotel Campanile Paris Bercy Village \n", + "5980 Hotel Campanile Paris Bercy Village \n", + "5981 Hotel Campanile Paris Bercy Village \n", + "5982 Hotel Campanile Paris Bercy Village \n", + "5983 Hotel Campanile Paris Bercy Village \n", + "5984 Hotel Campanile Paris Bercy Village \n", + "5985 Hotel Campanile Paris Bercy Village \n", + "5986 Hotel Campanile Paris Bercy Village \n", + "5987 Hotel Campanile Paris Bercy Village \n", + "5988 Hotel Campanile Paris Bercy Village \n", + "5989 Hotel Campanile Paris Bercy Village \n", + "5990 Hotel Campanile Paris Bercy Village \n", + "5991 Hotel Campanile Paris Bercy Village \n", + "5992 Hotel Campanile Paris Bercy Village \n", + "5993 Hotel Campanile Paris Bercy Village \n", + "5994 Hotel Campanile Paris Bercy Village \n", + "5995 Hotel Campanile Paris Bercy Village \n", + "5996 Hotel Campanile Paris Bercy Village \n", + "\n", + " hotel_description \\\n", + "5977 In the east of Paris, the hotel Campanile Berc... \n", + "5978 In the east of Paris, the hotel Campanile Berc... \n", + "5979 In the east of Paris, the hotel Campanile Berc... \n", + "5980 In the east of Paris, the hotel Campanile Berc... \n", + "5981 In the east of Paris, the hotel Campanile Berc... \n", + "5982 In the east of Paris, the hotel Campanile Berc... \n", + "5983 In the east of Paris, the hotel Campanile Berc... \n", + "5984 In the east of Paris, the hotel Campanile Berc... \n", + "5985 In the east of Paris, the hotel Campanile Berc... \n", + "5986 In the east of Paris, the hotel Campanile Berc... \n", + "5987 In the east of Paris, the hotel Campanile Berc... \n", + "5988 In the east of Paris, the hotel Campanile Berc... \n", + "5989 In the east of Paris, the hotel Campanile Berc... \n", + "5990 In the east of Paris, the hotel Campanile Berc... \n", + "5991 In the east of Paris, the hotel Campanile Berc... \n", + "5992 In the east of Paris, the hotel Campanile Berc... \n", + "5993 In the east of Paris, the hotel Campanile Berc... \n", + "5994 In the east of Paris, the hotel Campanile Berc... \n", + "5995 In the east of Paris, the hotel Campanile Berc... \n", + "5996 In the east of Paris, the hotel Campanile Berc... \n", + "\n", + " review_title \\\n", + "5977 Kyriad Bercy Hotel Paris \n", + "5978 Excellent customer service \n", + "5979 Fantastic stay! \n", + "5980 Excellent reception team, nice breakfast \n", + "5981 On the positive side \n", + "5982 Recommend! \n", + "5983 perfect location, clean and welcoming \n", + "5984 A great stay \n", + "5985 Great city Hotel \n", + "5986 Good place to stay \n", + "5987 Very conveniently located hotel \n", + "5988 A gem in Paris (for the price)!! \n", + "5989 Average hotel in a great area of Paris \n", + "5990 Good hotel, not great \n", + "5991 Clean and comfy \n", + "5992 Nice hotel but had trouble booking in. \n", + "5993 Great Location \n", + "5994 Great location \n", + "5995 For one night only \n", + "5996 Nice hotel in Paris Bercy \n", + "\n", + " review_text rate \\\n", + "5977 Myself and my teenage daughter stayed here for... 3.0 \n", + "5978 I have a reservation with them in Booking.com ... 5.0 \n", + "5979 This hotel was lovely and in a very good locat... 5.0 \n", + "5980 We booked this as mystery hotel and were not d... 4.0 \n", + "5981 This hotel was very good for the money spent. ... 4.0 \n", + "5982 Amazing experience, everything was perfect, wo... 5.0 \n", + "5983 Only 5min away from Bercy Village with dozens ... 5.0 \n", + "5984 I don't usually write reviews. However, I am ... 5.0 \n", + "5985 We came via Eurostar and this Hotel was part o... 5.0 \n", + "5986 This hotel located in a very good area. We sta... 5.0 \n", + "5987 We had selected Kyriad Hotel via the Eurostar ... 4.0 \n", + "5988 This hotel is located in the Bercy area, the n... 5.0 \n", + "5989 Kyriad hotel is a good hotel placed in a fabul... 3.0 \n", + "5990 We stayed at Kyriad paris bercy village for th... 3.0 \n", + "5991 Nothing I can fault really. Location is great,... 5.0 \n", + "5992 We had just had a very long and delayed train ... 3.0 \n", + "5993 We stayed at the Kyriad Hotel Paris Bercy Vill... 4.0 \n", + "5994 Stayed here for a few days and it is a great l... 5.0 \n", + "5995 We stayed here for one night on our way to Ita... 3.0 \n", + "5996 The Hotel is close to the metro station Cour S... 4.0 \n", + "\n", + " tripdate hotel_url \\\n", + "5977 July 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5978 March 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5979 February 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5980 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5981 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5982 February 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5983 January 2020 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5984 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5985 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5986 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5987 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5988 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5989 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5990 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5991 November 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5992 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5993 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5994 October 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5995 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5996 September 2019 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "\n", + " hotel_image \\\n", + "5977 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5978 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5979 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5980 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5981 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5982 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5983 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5984 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5985 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5986 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5987 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5988 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5989 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5990 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5991 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5992 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5993 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5994 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5995 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5996 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "5977 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5978 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5979 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5980 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5981 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5982 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5983 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5984 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5985 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5986 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5987 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5988 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5989 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5990 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5991 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5992 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5993 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5994 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5995 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "5996 $ (Based on Average Nightly Rates for a Standa... 4.0 \n", + "\n", + " review_count street_address locality country \\\n", + "5977 1625 17 rue Baron le Roy Paris France \n", + "5978 1625 17 rue Baron le Roy Paris France \n", + "5979 1625 17 rue Baron le Roy Paris France \n", + "5980 1625 17 rue Baron le Roy Paris France \n", + "5981 1625 17 rue Baron le Roy Paris France \n", + "5982 1625 17 rue Baron le Roy Paris France \n", + "5983 1625 17 rue Baron le Roy Paris France \n", + "5984 1625 17 rue Baron le Roy Paris France \n", + "5985 1625 17 rue Baron le Roy Paris France \n", + "5986 1625 17 rue Baron le Roy Paris France \n", + "5987 1625 17 rue Baron le Roy Paris France \n", + "5988 1625 17 rue Baron le Roy Paris France \n", + "5989 1625 17 rue Baron le Roy Paris France \n", + "5990 1625 17 rue Baron le Roy Paris France \n", + "5991 1625 17 rue Baron le Roy Paris France \n", + "5992 1625 17 rue Baron le Roy Paris France \n", + "5993 1625 17 rue Baron le Roy Paris France \n", + "5994 1625 17 rue Baron le Roy Paris France \n", + "5995 1625 17 rue Baron le Roy Paris France \n", + "5996 1625 17 rue Baron le Roy Paris France \n", + "\n", + " review_info \\\n", + "5977 kyriad bercy hotel paris myself and my teenage... \n", + "5978 excellent customer service i have a reservatio... \n", + "5979 fantastic stay this hotel was lovely and in a ... \n", + "5980 excellent reception team nice breakfast we boo... \n", + "5981 on the positive side this hotel was very good ... \n", + "5982 recommend amazing experience everything was pe... \n", + "5983 perfect location clean and welcoming only 5min... \n", + "5984 a great stay i dont usually write reviews how... \n", + "5985 great city hotel we came via eurostar and this... \n", + "5986 good place to stay this hotel located in a ver... \n", + "5987 very conveniently located hotel we had selecte... \n", + "5988 a gem in paris for the price this hotel is loc... \n", + "5989 average hotel in a great area of paris kyriad ... \n", + "5990 good hotel not great we stayed at kyriad paris... \n", + "5991 clean and comfy nothing i can fault really loc... \n", + "5992 nice hotel but had trouble booking in we had j... \n", + "5993 great location we stayed at the kyriad hotel p... \n", + "5994 great location stayed here for a few days and ... \n", + "5995 for one night only we stayed here for one nigh... \n", + "5996 nice hotel in paris bercy the hotel is close t... \n", + "\n", + " hotel_info \\\n", + "5977 Hotel Campanile Paris Bercy Village In the eas... \n", + "5978 Hotel Campanile Paris Bercy Village In the eas... \n", + "5979 Hotel Campanile Paris Bercy Village In the eas... \n", + "5980 Hotel Campanile Paris Bercy Village In the eas... \n", + "5981 Hotel Campanile Paris Bercy Village In the eas... \n", + "5982 Hotel Campanile Paris Bercy Village In the eas... \n", + "5983 Hotel Campanile Paris Bercy Village In the eas... \n", + "5984 Hotel Campanile Paris Bercy Village In the eas... \n", + "5985 Hotel Campanile Paris Bercy Village In the eas... \n", + "5986 Hotel Campanile Paris Bercy Village In the eas... \n", + "5987 Hotel Campanile Paris Bercy Village In the eas... \n", + "5988 Hotel Campanile Paris Bercy Village In the eas... \n", + "5989 Hotel Campanile Paris Bercy Village In the eas... \n", + "5990 Hotel Campanile Paris Bercy Village In the eas... \n", + "5991 Hotel Campanile Paris Bercy Village In the eas... \n", + "5992 Hotel Campanile Paris Bercy Village In the eas... \n", + "5993 Hotel Campanile Paris Bercy Village In the eas... \n", + "5994 Hotel Campanile Paris Bercy Village In the eas... \n", + "5995 Hotel Campanile Paris Bercy Village In the eas... \n", + "5996 Hotel Campanile Paris Bercy Village In the eas... \n", + "\n", + " embed_1 \\\n", + "5977 [0.0053078486, -0.014447695, 0.0038470232, 0.0... \n", + "5978 [0.0049453448, -0.0023506915, -0.004336413, 0.... \n", + "5979 [-0.022850059, -0.0487052, -0.0015445792, 0.03... \n", + "5980 [0.024521174, -0.03356217, 0.016213352, 0.0803... \n", + "5981 [-0.038305234, 0.017031254, 0.008352881, 0.051... \n", + "5982 [-0.003848171, -0.023780435, 0.017891532, 0.02... \n", + "5983 [-0.03350181, -0.04346627, 0.016963577, 0.0795... \n", + "5984 [-0.012432012, -0.035502333, 0.011709777, 0.08... \n", + "5985 [-0.019161653, -0.027909609, 0.013313228, 0.08... \n", + "5986 [0.018544666, -0.07385674, 0.00022794593, 0.02... \n", + "5987 [-0.0010898937, -0.0186181, 0.0058286926, 0.02... \n", + "5988 [-0.00019215255, -0.042734552, 0.01846412, 0.0... \n", + "5989 [-0.009388709, -0.039457876, 0.020500658, 0.04... \n", + "5990 [0.015159702, -0.028592592, 0.016128678, 0.063... \n", + "5991 [-0.039042037, -0.018973708, -0.011135213, 0.0... \n", + "5992 [0.019159589, -0.03804933, -0.0139713045, 0.06... \n", + "5993 [-0.018198008, -0.012747932, 0.018207619, 0.06... \n", + "5994 [-0.054591767, -0.02885944, 0.013679957, 0.070... \n", + "5995 [-0.024700547, -0.02557564, 0.00232916, 0.0568... \n", + "5996 [-0.012824107, -0.027617063, 0.014790822, 0.07... \n", + "\n", + " embed_2 \n", + "5977 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5978 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5979 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5980 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5981 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5982 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5983 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5984 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5985 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5986 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5987 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5988 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5989 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5990 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5991 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5992 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5993 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5994 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5995 [0.0055098273, -0.044080723, 0.011860878, 0.08... \n", + "5996 [0.0055098273, -0.044080723, 0.011860878, 0.08... " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_dt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 304 + }, + "id": "ICocSZVXtrDe", + "outputId": "43f40625-3fb2-4034-83dd-0f2d1eb946c2" + }, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf_combined\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"embed_1\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreview_info\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0membedder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"embed_2\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhotel_info\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0membedder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/series.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self, func, convert_dtype, args, **kwargs)\u001b[0m\n\u001b[1;32m 4769\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfloat64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4770\u001b[0m \"\"\"\n\u001b[0;32m-> 4771\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mSeriesApply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconvert_dtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4772\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4773\u001b[0m def _reduce(\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/apply.py\u001b[0m in \u001b[0;36mapply\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1121\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1122\u001b[0m \u001b[0;31m# self.f is Callable\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1123\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply_standard\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1124\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1125\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0magg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/apply.py\u001b[0m in \u001b[0;36mapply_standard\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1172\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1173\u001b[0m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_values\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1174\u001b[0;31m mapped = lib.map_infer(\n\u001b[0m\u001b[1;32m 1175\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1176\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/_libs/lib.pyx\u001b[0m in \u001b[0;36mpandas._libs.lib.map_infer\u001b[0;34m()\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m(x)\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf_combined\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"embed_1\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreview_info\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0membedder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"embed_2\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf_combined\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhotel_info\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0membedder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py\u001b[0m in \u001b[0;36mencode\u001b[0;34m(self, sentences, prompt_name, prompt, batch_size, show_progress_bar, output_value, convert_to_numpy, convert_to_tensor, device, normalize_embeddings)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mno_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 350\u001b[0;31m \u001b[0mout_features\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfeatures\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 351\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0moutput_value\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"token_embeddings\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/container.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mmodule\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 217\u001b[0;31m \u001b[0minput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodule\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 218\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 219\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/sentence_transformers/models/Transformer.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, features)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0mtrans_features\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"token_type_ids\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfeatures\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"token_type_ids\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0moutput_states\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mtrans_features\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0moutput_tokens\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moutput_states\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/mpnet/modeling_mpnet.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input_ids, attention_mask, position_ids, head_mask, inputs_embeds, output_attentions, output_hidden_states, return_dict, **kwargs)\u001b[0m\n\u001b[1;32m 549\u001b[0m \u001b[0mhead_mask\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_head_mask\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhead_mask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_hidden_layers\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 550\u001b[0m \u001b[0membedding_output\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0membeddings\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minput_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mposition_ids\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mposition_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs_embeds\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs_embeds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 551\u001b[0;31m encoder_outputs = self.encoder(\n\u001b[0m\u001b[1;32m 552\u001b[0m \u001b[0membedding_output\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 553\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mextended_attention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/mpnet/modeling_mpnet.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, attention_mask, head_mask, output_attentions, output_hidden_states, return_dict, **kwargs)\u001b[0m\n\u001b[1;32m 339\u001b[0m \u001b[0mall_hidden_states\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mall_hidden_states\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 341\u001b[0;31m layer_outputs = layer_module(\n\u001b[0m\u001b[1;32m 342\u001b[0m \u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 343\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/mpnet/modeling_mpnet.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, attention_mask, head_mask, position_bias, output_attentions, **kwargs)\u001b[0m\n\u001b[1;32m 298\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 299\u001b[0m ):\n\u001b[0;32m--> 300\u001b[0;31m self_attention_outputs = self.attention(\n\u001b[0m\u001b[1;32m 301\u001b[0m \u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/mpnet/modeling_mpnet.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, attention_mask, head_mask, position_bias, output_attentions, **kwargs)\u001b[0m\n\u001b[1;32m 239\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 240\u001b[0m ):\n\u001b[0;32m--> 241\u001b[0;31m self_outputs = self.attn(\n\u001b[0m\u001b[1;32m 242\u001b[0m \u001b[0mhidden_states\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0mattention_mask\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/transformers/models/mpnet/modeling_mpnet.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, hidden_states, attention_mask, head_mask, position_bias, output_attentions, **kwargs)\u001b[0m\n\u001b[1;32m 166\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 167\u001b[0m ):\n\u001b[0;32m--> 168\u001b[0;31m \u001b[0mq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mq\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 169\u001b[0m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 170\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhidden_states\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1509\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1511\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1512\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1513\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1518\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1519\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1520\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1521\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1522\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/linear.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 114\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 116\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinear\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbias\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 117\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mextra_repr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "df_combined[\"embed_1\"] = df_combined.review_info.apply(lambda x: embedder.encode(x))\n", + "df_combined[\"embed_2\"] = df_combined.hotel_info.apply(lambda x: embedder.encode(x))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iWsa-DT3unN3" + }, + "outputs": [], + "source": [ + "df_combined.to_pickle('data.pkl')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 660 + }, + "id": "eDFi_aDwu5OI", + "outputId": "fbd0bc81-be29-47a8-c701-fa89ce2fce25" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \"df\",\n \"rows\": 5997,\n \"fields\": [\n {\n \"column\": \"hotel_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Travelodge London Central Kings Cross\",\n \"Wyndham Istanbul Oldcity\",\n \"The Empire Hotel\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_description\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 130,\n \"samples\": [\n \"See why so many travelers make Park Grand Paddington Court their hotel of choice when visiting London. Providing an ideal mix of value, comfort and convenience, it offers a charming setting with an array of amenities designed for travelers like you. You\\u2019ll enjoy relaxing rooms that offer a flat screen TV, air conditioning, and a refrigerator, and you can stay connected during your stay as Park Grand Paddington Court offers guests free WiFi. The hotel features a 24 hour front desk, a concierge, and room service. Plus, Park Grand Paddington Court offers a fitness center and breakfast, providing a pleasant respite from your busy day. Given the close proximity of popular landmarks, such as Buckingham Palace (1.8 mi) and Primrose Hill (1.9 mi), guests of Park Grand Paddington Court can easily experience some of London's most well known attractions. During your visit, be sure to check out one of London's popular tapas restaurants such as Dishoom Covent Garden, The Shed, and StreetXO, all a short distance from Park Grand Paddington Court. If you\\u2019re looking for something to do, Natural History Museum (1.2 mi), Harrods (1.2 mi), and V&A - Victoria and Albert Museum (1.2 mi) are a nice way to spend some time, and they are all within walking distance of Park Grand Paddington Court Hotel. We\\u2019re sure you\\u2019ll enjoy your stay at Park Grand Paddington Court as you experience all of the things London has to offer.\",\n \"Timeless yet modern, The Westin St. Francis San Francisco on Union Square offers guests a warm welcome with its turn-of-the-20th-century European style. Our hotel in downtown San Francisco, CA, is close to the Financial District and Moscone Convention Center, and with cable cars just outside our front doors, we are at the intersection of the glorious past and vibrant present of this incredible city. After an exciting day, retire to elegant guest rooms, many featuring chandeliers and marble bathrooms. Discover unique and historic-inspired food and beverage offerings at the on-site restaurant and bars, exercise well in the fitness center and experience a new chapter of LA at this storied destination.\",\n \"Stylish seaside hotel with an outdoor pool and meeting facilities, next to Istanbul Aquarium and Aqua Florya Mall. Ideal for business and leisure travellers, Crowne Plaza\\u00ae Istanbul - Florya hotel is a 15-minute drive from CNR Expo and IDTM exhibition centres. We provide free parking in our secure lot. Transport links by bus, train and road are excellent. We have six fully equipped meeting rooms with a maximum capacity of 800, while our outdoor banquet area has room for 1,250 guests. Our Crowne Plaza Meetings Director is on hand to take care of all the details. The hotel has free Wi-Fi throughout and is completely connected, providing access to power when and where you need it. The Aqua Florya shopping centre and Istanbul Aquarium are both next door to the hotel. Tutankhamun, Treasures of the Child King is at Istanbul Aquarium Event Center until the end of the year. The exhibition, appealing to visitors from all age groups,will be magnificent.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5314,\n \"samples\": [\n \"Nice location. Good breakfast.\",\n \"Would not recommend a stay at this hotel\",\n \"Wonderful stay\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4867,\n \"samples\": [\n \"Absolutely brilliant staff, aura, doina, daniellla, slave Was Absolutely brilliant and accomaditing. Great location and amazing customer service. I recommend this hotel and definitely will stay here again. \",\n \"Unfortunately not the best of stays at Citadines and quite upset. We arrived at the hotel around 11am to check our bags in and pay the full amount, we then returned at 4pm to check into our room. We were told to take a seat and waited nearly half an hour without being told anything except 'someone is checking it', but it was very obvious the room was not cleaned as the women can down with a cloth and spray to tell them its okay! We received free breakfast the next morning as an apology what helped but I preferred if they were more honest about the room not being ready. When we got to our room we impressed by the view, but unfortunately that quickly changed when we realized we were right next to a metro station. This was quite loud every night and extremely disappointing for the\",\n \"The hotel is excellent and in a great location. Our flight arrived early morning and we went to drop bags with the hotel around 10am and they allowed us an early check in with no additional fees and gave us a room with a fantastic city view of downtown and One World Trade. The front desk was super helpful and got us squared away quickly. The man\\u2019s name was \\u201cZ\\u201d who helped us, and he is the epitome of what top rate customer service is supposed to be. Also enjoyed the bar where they make incredible cocktails and have a nice happy hour (4-7p)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rate\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.1724493011383668,\n \"min\": 1.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.0,\n 2.0,\n 3.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"tripdate\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 76,\n \"samples\": [\n \" January 2020\",\n \" January 2021\",\n \" November 2021\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_url\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 600,\n \"samples\": [\n \"https://www.tripadvisor.com/Hotel_Review-g293974-d294607-Reviews-or20-InterContinental_Istanbul-Istanbul.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g60763-d7255276-Reviews-or30-The_Knickerbocker-New_York_City_New_York.html\",\n \"https://www.tripadvisor.com/Hotel_Review-g187147-d197985-Reviews-or10-Pullman_Paris_Eiffel_Tower_Hotel-Paris_Ile_de_France.html\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_image\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"https://media-cdn.tripadvisor.com/media/photo-s/26/37/24/88/gb-exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/2b/43/07/07/exterior.jpg\",\n \"https://media-cdn.tripadvisor.com/media/photo-s/29/38/be/d3/empire-hotel-new-york.jpg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price_range\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\",\n \"$$$ (Based on Average Nightly Rates for a Standard Room from our Partners)\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rating_value\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4327574208245527,\n \"min\": 3.0,\n \"max\": 5.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.5,\n 3.5,\n 4.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3771,\n \"min\": 39,\n \"max\": 24877,\n \"num_unique_values\": 147,\n \"samples\": [\n 3755,\n 1878,\n 471\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"street_address\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"Willing House 356-364 Gray's Inn Road Willings House\",\n \"Kemalpasa Mah. Sehzadebasi Cad. Celal Aga Konagi No 1\",\n \"44 West 63rd Street\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"locality\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"San Francisco\",\n \"Paris\",\n \"London\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"country\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"T\\u00fcrkiye\",\n \"France\",\n \"United States\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"review_info\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 4868,\n \"samples\": [\n \"fabulous this place is fabulous and the location is excellent in busy istanbul this is a quiet street great to sleep and rest this street has great shop to find everything you need at good prices gulhane spice on the same block down the street from the hotel is particularly good\",\n \"great 3 nights at best western la demeure great hotel super chic and easy access to le gobelins metro absolutely spotless huge shout out to the cleaning staff positives huge towels which was fabulous lots of sockets and even 2 usb charging points amazing air con desk with mirror wonderful shower free water each day in the room bed super comfy and king size lots of lights and lamps and reading lights beautifully remade room every day lots of quirky storage and shelving beautiful decor and styling of room possible negatives but not for us only one english channel which was bbc world news i watched live tennis so didnt bother me but you may want to some downloading before you arrive only half a dozen hangers on an open rail so we lived out of our suitcases which we are fine with as only here for\",\n \"excellent service i went to the restaurant at the hotel received great food and experienced great service through our waiter jahidul he provided us with excellent service and always had a smile thanks jahidul \"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"hotel_info\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 131,\n \"samples\": [\n \"Stanyan Park Hotel Elegantly restored in 1983- The Stanyan Park Hotel- listed on the National Register of Historic Places- is an affordable- turn of the century award-winning hotel with comfort- design and hospitality that will transport you back to a bygone era of style and grace- Located across from San Francisco-s famous Golden Gate Park- which is filled with gardens- museums- art- flowers- trees- lakes- wildlife and birds beckoning you for a nice romantic evening stroll or an early morning jog- Our award-winning boutique hotel is centrally located within easy access to trendy coffee houses- restaurants for your dining pleasure- Whole Foods Market- a steps away from the historic Haight - Ashbury street and only about half-mile away from world renowned universities- USF and UCSF- Paid self parking lot is available- Free Wi-Fi- Complimentary Manager-s wine and cheese hour on weekdays- and a light Tea service every evening- A daily healthy and delicious expanded continental breakfast is included-\",\n \"Hotel Zoe Fisherman-s Wharf Located near the waterfront and piers in the iconic Fisherman-s Wharf neighborhood- Hotel Zoe has a whimsical spirit paired with a refined and elegant palate- Staying at Hotel Zoe allows guests easy access to all the best things to do in San Francisco- from the cable cars to North Beach and everything in between- Welcome to the newest haven for all adventurers at heart in the heart of lively Fisherman-s Wharf-\",\n \"Cheers Lighthouse Introducing Cheers Lighthouse- the outcast of the Bohemian Cheers Hostel family- Lighthouse is for the more luxurious backpacker- Complete with ocean views and situated above a restaurant- Lighthouse has all the comforts for a relaxing stay but with the Cheers infamous friendly relaxed atmosphere-Our hostel offers a comfortable- clean and budget stay in a warm and friendly atmosphere-\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"embed_1\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"embed_2\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe", + "variable_name": "df" + }, + "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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountryreview_infohotel_infoembed_1embed_2
0Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...An exceptional boutique hotel, great value for...NoneNaNFebruary 2020https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...[-0.023187159, 0.051497463, -0.0023922175, -0....[0.009530647, -0.07076493, -0.009004908, 0.049...
1Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...You can’t get better than this.NoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...[-0.023187159, 0.051497463, -0.0023922175, -0....[0.009530647, -0.07076493, -0.009004908, 0.049...
2Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Exceeds all expectationsNoneNaNMarch 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...[-0.023187159, 0.051497463, -0.0023922175, -0....[0.009530647, -0.07076493, -0.009004908, 0.049...
3Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Great Location, Fantastic AccommodationsNoneNaNAugust 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...[-0.023187159, 0.051497463, -0.0023922175, -0....[0.009530647, -0.07076493, -0.009004908, 0.049...
4Romance Istanbul HotelRomance Istanbul Hotel has 39 rooms.Every room...Perfection. It is all in the details.NoneNaNJune 2021https://www.tripadvisor.com/Hotel_Review-g2939...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.04023Hudavendigar Cd. No:5 SirkeciIstanbulTurkiyenanRomance Istanbul Hotel Romance Istanbul Hotel ...[-0.023187159, 0.051497463, -0.0023922175, -0....[0.009530647, -0.07076493, -0.009004908, 0.049...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ], + "text/plain": [ + " hotel_name hotel_description \\\n", + "0 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "1 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "2 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "3 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "4 Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room... \n", + "\n", + " review_title review_text rate \\\n", + "0 An exceptional boutique hotel, great value for... None NaN \n", + "1 You can’t get better than this. None NaN \n", + "2 Exceeds all expectations None NaN \n", + "3 Great Location, Fantastic Accommodations None NaN \n", + "4 Perfection. It is all in the details. None NaN \n", + "\n", + " tripdate hotel_url \\\n", + "0 February 2020 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "1 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "2 March 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "3 August 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "4 June 2021 https://www.tripadvisor.com/Hotel_Review-g2939... \n", + "\n", + " hotel_image \\\n", + "0 https://media-cdn.tripadvisor.com/media/photo-... \n", + "1 https://media-cdn.tripadvisor.com/media/photo-... \n", + "2 https://media-cdn.tripadvisor.com/media/photo-... \n", + "3 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "0 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "1 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "2 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "3 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "4 $ (Based on Average Nightly Rates for a Standa... 5.0 \n", + "\n", + " review_count street_address locality country review_info \\\n", + "0 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye nan \n", + "1 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye nan \n", + "2 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye nan \n", + "3 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye nan \n", + "4 4023 Hudavendigar Cd. No:5 Sirkeci Istanbul Turkiye nan \n", + "\n", + " hotel_info \\\n", + "0 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "1 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "2 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "3 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "4 Romance Istanbul Hotel Romance Istanbul Hotel ... \n", + "\n", + " embed_1 \\\n", + "0 [-0.023187159, 0.051497463, -0.0023922175, -0.... \n", + "1 [-0.023187159, 0.051497463, -0.0023922175, -0.... \n", + "2 [-0.023187159, 0.051497463, -0.0023922175, -0.... \n", + "3 [-0.023187159, 0.051497463, -0.0023922175, -0.... \n", + "4 [-0.023187159, 0.051497463, -0.0023922175, -0.... \n", + "\n", + " embed_2 \n", + "0 [0.009530647, -0.07076493, -0.009004908, 0.049... \n", + "1 [0.009530647, -0.07076493, -0.009004908, 0.049... \n", + "2 [0.009530647, -0.07076493, -0.009004908, 0.049... \n", + "3 [0.009530647, -0.07076493, -0.009004908, 0.049... \n", + "4 [0.009530647, -0.07076493, -0.009004908, 0.049... " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_pickle('/content/data.pkl')\n", + "df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "CInlemX5vKnl" + }, + "outputs": [], + "source": [ + "\n", + "# search through the reviews for a specific product\n", + "def search_reviews(df, query, n=5, pprint=True):\n", + " query_embedding = embedder.encode(query,show_progress_bar=True) #encode the query\n", + " df[\"rev_sim_score\"] = df.embed_1.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1))) #similarity against each doc\n", + "\n", + " review_results = (\n", + " df.sort_values(\"rev_sim_score\", ascending=False) # re-rank\n", + " .head(n))\n", + "\n", + " return review_results" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "pNg7KTKEgb1Q" + }, + "outputs": [], + "source": [ + "\n", + "# search through the hotels for a specific hotel\n", + "def hotel_info(df, query, n=5, pprint=True):\n", + " query_embedding = embedder.encode(query,show_progress_bar=True) #encode the query\n", + " df[\"hotel_sim_score\"] = df.embed_2.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1))) #similarity against each doc\n", + "\n", + " hotel_results = (\n", + " df.sort_values(\"hotel_sim_score\", ascending=False) # re-rank\n", + " .head(n))\n", + "\n", + " return hotel_results" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "id": "F-5oKwzAh7a9" + }, + "outputs": [], + "source": [ + "query1 = 'close to Louvre and great food nearby but not too expensive'" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "_hTAezfF3rjO", + "outputId": "d4d6cf0a-5e2d-49da-dbd9-eb8dd4f871e5" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'embedder' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msearch_reviews\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mquery1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mresults\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36msearch_reviews\u001b[0;34m(df, query, n, pprint)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# search through the reviews for a specific product\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msearch_reviews\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpprint\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mquery_embedding\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0membedder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mshow_progress_bar\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#encode the query\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"rev_sim_score\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0membed_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mcosine_similarity\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mquery_embedding\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m768\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#similarity against each doc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'embedder' is not defined" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 657, + "referenced_widgets": [ + "79a15181b6c540e3b0e9a940868b4323", + "b3408a026cd74321b14aa5bd649f59d2", + "114721f0e8ab48e8b6a80fcbc1d60856", + "a986b27d9dc849709101f831c613c863", + "5b7162144b6048c59cd28ac4d62ff709", + "3aa2bb9516b04a2d854a60a4f72551c8", + "9d10d998e9ee4f2aa0b0934516a5e408", + "9baf755e807c47babd45ad12e4975e5b", + "2ccb6410914f401ab872c41cf773b9ff", + "aa4065df49f84b3e9c088672456a5225", + "60262197671940eeb7f7d133792a92c5" + ] + }, + "id": "H6qJkjOJh7ni", + "outputId": "cd61d5d1-1729-47ec-d218-1ba592265d12" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79a15181b6c540e3b0e9a940868b4323", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00\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", + " \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", + " \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", + " \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", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_valuereview_countstreet_addresslocalitycountryreview_infohotel_infoembed_1embed_2rev_sim_score
5803Hotel Square LouvoisIts location in the heart of Paris’ 2nd arrond...Nice hotel within walking distance to the LouvreLovely stylish hotel with friendly staff and g...5.0October 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$$ (Based on Average Nightly Rates for a Stand...5.061212 rue de LouvoisParisFrancenice hotel within walking distance to the louv...Hotel Square Louvois Its location in the heart...[-0.014278595, -0.0011566663, 0.0014304481, 0....[0.004480955, 0.0005347205, -0.009777102, 0.07...[0.78552306]
5402Hotel MoliereNew four star boutique hotel in chic 1st arron...Very nice Hotel near the LouvreThe hotel is very clean. Our room was very nic...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$$ (Based on Average Nightly Rates for a Stand...5.0109221 rue Moliere 1st Arr.ParisFrancevery nice hotel near the louvre the hotel is v...Hotel Moliere New four star boutique hotel in ...[0.0123288585, -0.019878859, -0.0015795418, 0....[-0.0058772797, -0.0125413155, 0.0053988886, 0...[0.7396791]
4922La Maison FavartLa Maison Favart opened on April, 13th 2012 af...Wonderful hotel near the LouvreWe stayed at the Maison Favart for three days....5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$$ (Based on Average Nightly Rates for a Stand...5.022655, Rue de Marivaux 2nd ArrParisFrancewonderful hotel near the louvre we stayed at t...La Maison Favart La Maison Favart opened on Ap...[0.014333752, -0.020665431, -0.008410787, 0.05...[-0.014409535, -0.033573374, -0.00302253, 0.07...[0.7279303]
4925La Maison FavartLa Maison Favart opened on April, 13th 2012 af...Fantastic locationWe stayed for a short break for 3 nights . Fan...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$$ (Based on Average Nightly Rates for a Stand...5.022655, Rue de Marivaux 2nd ArrParisFrancefantastic location we stayed for a short break...La Maison Favart La Maison Favart opened on Ap...[-0.025455102, 0.0016975864, 0.011814055, 0.05...[-0.014409535, -0.033573374, -0.00302253, 0.07...[0.7181488]
4814Hotel Malte - AstotelLocated in the 2nd district next to the Stock ...Comfortable option in a convenient locationA nice boutique hotel on a quiet street, at ea...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$$ (Based on Average Nightly Rates for a Stand...5.0298563 rue de RichelieuParisFrancecomfortable option in a convenient location a ...Hotel Malte - Astotel Located in the 2nd distr...[-0.0071530193, 0.046794657, 0.01182203, 0.057...[-0.021859052, -0.05051283, -0.015184616, 0.07...[0.7153726]
\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" + ], + "text/plain": [ + " hotel_name \\\n", + "5803 Hotel Square Louvois \n", + "5402 Hotel Moliere \n", + "4922 La Maison Favart \n", + "4925 La Maison Favart \n", + "4814 Hotel Malte - Astotel \n", + "\n", + " hotel_description \\\n", + "5803 Its location in the heart of Paris’ 2nd arrond... \n", + "5402 New four star boutique hotel in chic 1st arron... \n", + "4922 La Maison Favart opened on April, 13th 2012 af... \n", + "4925 La Maison Favart opened on April, 13th 2012 af... \n", + "4814 Located in the 2nd district next to the Stock ... \n", + "\n", + " review_title \\\n", + "5803 Nice hotel within walking distance to the Louvre \n", + "5402 Very nice Hotel near the Louvre \n", + "4922 Wonderful hotel near the Louvre \n", + "4925 Fantastic location \n", + "4814 Comfortable option in a convenient location \n", + "\n", + " review_text rate tripdate \\\n", + "5803 Lovely stylish hotel with friendly staff and g... 5.0 October 2023 \n", + "5402 The hotel is very clean. Our room was very nic... 5.0 December 2023 \n", + "4922 We stayed at the Maison Favart for three days.... 5.0 December 2023 \n", + "4925 We stayed for a short break for 3 nights . Fan... 5.0 December 2023 \n", + "4814 A nice boutique hotel on a quiet street, at ea... 5.0 December 2023 \n", + "\n", + " hotel_url \\\n", + "5803 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5402 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "4922 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "4925 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "4814 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "\n", + " hotel_image \\\n", + "5803 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5402 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4922 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4925 https://media-cdn.tripadvisor.com/media/photo-... \n", + "4814 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value \\\n", + "5803 $$ (Based on Average Nightly Rates for a Stand... 5.0 \n", + "5402 $$ (Based on Average Nightly Rates for a Stand... 5.0 \n", + "4922 $$ (Based on Average Nightly Rates for a Stand... 5.0 \n", + "4925 $$ (Based on Average Nightly Rates for a Stand... 5.0 \n", + "4814 $$ (Based on Average Nightly Rates for a Stand... 5.0 \n", + "\n", + " review_count street_address locality country \\\n", + "5803 612 12 rue de Louvois Paris France \n", + "5402 1092 21 rue Moliere 1st Arr. Paris France \n", + "4922 2265 5, Rue de Marivaux 2nd Arr Paris France \n", + "4925 2265 5, Rue de Marivaux 2nd Arr Paris France \n", + "4814 2985 63 rue de Richelieu Paris France \n", + "\n", + " review_info \\\n", + "5803 nice hotel within walking distance to the louv... \n", + "5402 very nice hotel near the louvre the hotel is v... \n", + "4922 wonderful hotel near the louvre we stayed at t... \n", + "4925 fantastic location we stayed for a short break... \n", + "4814 comfortable option in a convenient location a ... \n", + "\n", + " hotel_info \\\n", + "5803 Hotel Square Louvois Its location in the heart... \n", + "5402 Hotel Moliere New four star boutique hotel in ... \n", + "4922 La Maison Favart La Maison Favart opened on Ap... \n", + "4925 La Maison Favart La Maison Favart opened on Ap... \n", + "4814 Hotel Malte - Astotel Located in the 2nd distr... \n", + "\n", + " embed_1 \\\n", + "5803 [-0.014278595, -0.0011566663, 0.0014304481, 0.... \n", + "5402 [0.0123288585, -0.019878859, -0.0015795418, 0.... \n", + "4922 [0.014333752, -0.020665431, -0.008410787, 0.05... \n", + "4925 [-0.025455102, 0.0016975864, 0.011814055, 0.05... \n", + "4814 [-0.0071530193, 0.046794657, 0.01182203, 0.057... \n", + "\n", + " embed_2 rev_sim_score \n", + "5803 [0.004480955, 0.0005347205, -0.009777102, 0.07... [0.78552306] \n", + "5402 [-0.0058772797, -0.0125413155, 0.0053988886, 0... [0.7396791] \n", + "4922 [-0.014409535, -0.033573374, -0.00302253, 0.07... [0.7279303] \n", + "4925 [-0.014409535, -0.033573374, -0.00302253, 0.07... [0.7181488] \n", + "4814 [-0.021859052, -0.05051283, -0.015184616, 0.07... [0.7153726] " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = search_reviews(df,query1,5)\n", + "results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "M3KKsyfnh7xH" + }, + "outputs": [], + "source": [ + "query2 = 'a hotel which is close to the city of Paris which is the best option for travelors.'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 634, + "referenced_widgets": [ + "41ef3a8829274ecc98b8c259aa85a360", + "f132defef69f42969e13656c774db4a8", + "58975c55d9da4b889a1a3bd7d42357b8", + "625aa372e3aa4290828c8dc3b2ef2c44", + "81d84da2b31c44d181e3a017dacd00ec", + "1426d75a39184a5cbb3efd16dd841e3c", + "3367b90e731d4a358fc1144deeeca622", + "3e55282ab8f945a7a9699984566d5a4b", + "37fa90c632fb43649f638f742b781f5a", + "c6a5463a485147bf97010931a33d1d5d", + "39ecd3fb587c4833afa937cf5c93a31f" + ] + }, + "id": "TMkK3Vifh8CB", + "outputId": "ad4099e8-b91c-451c-9986-fcb22f7febf5" + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "41ef3a8829274ecc98b8c259aa85a360", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Batches: 0%| | 0/1 [00:00\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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + "
hotel_namehotel_descriptionreview_titlereview_textratetripdatehotel_urlhotel_imageprice_rangerating_value...street_addresslocalitycountryreview_infohotel_infoembed_1embed_2rev_sim_scorehotel_scorehotel_sim_score
5215Hotel 34B - AstotelYou'll be amazed by the 100% French interiors ...Clean, Comfortable, Safe, & Quiet - We Would S...My husband & I spent four nights at Hotel 34B ...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.0...34 Rue BergereParisFranceclean comfortable safe quiet we would stay a...Hotel 34B - Astotel You-ll be amazed by the 10...[-0.014069219, -0.010572047, 0.011915225, 0.04...[-0.024417771, -0.056391012, 0.012523997, 0.06...[0.43712926][0.6950462][0.7656225]
5197Hotel 34B - AstotelYou'll be amazed by the 100% French interiors ...Well located hotelWell located hotel close to Grand Boulevards m...5.0January 2024https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.0...34 Rue BergereParisFrancewell located hotel well located hotel close to...Hotel 34B - Astotel You-ll be amazed by the 10...[-0.00907395, -0.010198971, 0.017618986, 0.056...[-0.024417771, -0.056391012, 0.012523997, 0.06...[0.476525][0.6950462][0.7656225]
5216Hotel 34B - AstotelYou'll be amazed by the 100% French interiors ...Very good and clean hotel, friendly staff !Very good location. Very clean hotel. Friendly...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.0...34 Rue BergereParisFrancevery good and clean hotel friendly staff very...Hotel 34B - Astotel You-ll be amazed by the 10...[-0.015835341, -0.051074367, 0.01071393, 0.055...[-0.024417771, -0.056391012, 0.012523997, 0.06...[0.6366803][0.6950462][0.7656225]
5214Hotel 34B - AstotelYou'll be amazed by the 100% French interiors ...I will come back for sureA very good surprise. The hotel is very comfy,...4.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.0...34 Rue BergereParisFrancei will come back for sure a very good surprise...Hotel 34B - Astotel You-ll be amazed by the 10...[-0.014740517, 0.00047891602, -0.010692966, 0....[-0.024417771, -0.056391012, 0.012523997, 0.06...[0.41676807][0.6950462][0.7656225]
5213Hotel 34B - AstotelYou'll be amazed by the 100% French interiors ...18th Birthday celebrationswent with my grandaughter for her 18th birthda...5.0December 2023https://www.tripadvisor.com/Hotel_Review-g1871...https://media-cdn.tripadvisor.com/media/photo-...$ (Based on Average Nightly Rates for a Standa...5.0...34 Rue BergereParisFrance18th birthday celebrations went with my granda...Hotel 34B - Astotel You-ll be amazed by the 10...[-0.018635593, 0.027032236, 0.008765617, -0.00...[-0.024417771, -0.056391012, 0.012523997, 0.06...[0.30129167][0.6950462][0.7656225]
\n", + "

5 rows × 21 columns

\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" + ], + "text/plain": [ + " hotel_name hotel_description \\\n", + "5215 Hotel 34B - Astotel You'll be amazed by the 100% French interiors ... \n", + "5197 Hotel 34B - Astotel You'll be amazed by the 100% French interiors ... \n", + "5216 Hotel 34B - Astotel You'll be amazed by the 100% French interiors ... \n", + "5214 Hotel 34B - Astotel You'll be amazed by the 100% French interiors ... \n", + "5213 Hotel 34B - Astotel You'll be amazed by the 100% French interiors ... \n", + "\n", + " review_title \\\n", + "5215 Clean, Comfortable, Safe, & Quiet - We Would S... \n", + "5197 Well located hotel \n", + "5216 Very good and clean hotel, friendly staff ! \n", + "5214 I will come back for sure \n", + "5213 18th Birthday celebrations \n", + "\n", + " review_text rate tripdate \\\n", + "5215 My husband & I spent four nights at Hotel 34B ... 5.0 December 2023 \n", + "5197 Well located hotel close to Grand Boulevards m... 5.0 January 2024 \n", + "5216 Very good location. Very clean hotel. Friendly... 5.0 December 2023 \n", + "5214 A very good surprise. The hotel is very comfy,... 4.0 December 2023 \n", + "5213 went with my grandaughter for her 18th birthda... 5.0 December 2023 \n", + "\n", + " hotel_url \\\n", + "5215 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5197 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5216 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5214 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "5213 https://www.tripadvisor.com/Hotel_Review-g1871... \n", + "\n", + " hotel_image \\\n", + "5215 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5197 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5216 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5214 https://media-cdn.tripadvisor.com/media/photo-... \n", + "5213 https://media-cdn.tripadvisor.com/media/photo-... \n", + "\n", + " price_range rating_value ... \\\n", + "5215 $ (Based on Average Nightly Rates for a Standa... 5.0 ... \n", + "5197 $ (Based on Average Nightly Rates for a Standa... 5.0 ... \n", + "5216 $ (Based on Average Nightly Rates for a Standa... 5.0 ... \n", + "5214 $ (Based on Average Nightly Rates for a Standa... 5.0 ... \n", + "5213 $ (Based on Average Nightly Rates for a Standa... 5.0 ... \n", + "\n", + " street_address locality country \\\n", + "5215 34 Rue Bergere Paris France \n", + "5197 34 Rue Bergere Paris France \n", + "5216 34 Rue Bergere Paris France \n", + "5214 34 Rue Bergere Paris France \n", + "5213 34 Rue Bergere Paris France \n", + "\n", + " review_info \\\n", + "5215 clean comfortable safe quiet we would stay a... \n", + "5197 well located hotel well located hotel close to... \n", + "5216 very good and clean hotel friendly staff very... \n", + "5214 i will come back for sure a very good surprise... \n", + "5213 18th birthday celebrations went with my granda... \n", + "\n", + " hotel_info \\\n", + "5215 Hotel 34B - Astotel You-ll be amazed by the 10... \n", + "5197 Hotel 34B - Astotel You-ll be amazed by the 10... \n", + "5216 Hotel 34B - Astotel You-ll be amazed by the 10... \n", + "5214 Hotel 34B - Astotel You-ll be amazed by the 10... \n", + "5213 Hotel 34B - Astotel You-ll be amazed by the 10... \n", + "\n", + " embed_1 \\\n", + "5215 [-0.014069219, -0.010572047, 0.011915225, 0.04... \n", + "5197 [-0.00907395, -0.010198971, 0.017618986, 0.056... \n", + "5216 [-0.015835341, -0.051074367, 0.01071393, 0.055... \n", + "5214 [-0.014740517, 0.00047891602, -0.010692966, 0.... \n", + "5213 [-0.018635593, 0.027032236, 0.008765617, -0.00... \n", + "\n", + " embed_2 rev_sim_score \\\n", + "5215 [-0.024417771, -0.056391012, 0.012523997, 0.06... [0.43712926] \n", + "5197 [-0.024417771, -0.056391012, 0.012523997, 0.06... [0.476525] \n", + "5216 [-0.024417771, -0.056391012, 0.012523997, 0.06... [0.6366803] \n", + "5214 [-0.024417771, -0.056391012, 0.012523997, 0.06... [0.41676807] \n", + "5213 [-0.024417771, -0.056391012, 0.012523997, 0.06... [0.30129167] \n", + "\n", + " hotel_score hotel_sim_score \n", + "5215 [0.6950462] [0.7656225] \n", + "5197 [0.6950462] [0.7656225] \n", + "5216 [0.6950462] [0.7656225] \n", + "5214 [0.6950462] [0.7656225] \n", + "5213 [0.6950462] [0.7656225] \n", + "\n", + "[5 rows x 21 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results = hotel_info(df,query2,5)\n", + "results" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "PDWXXCwVcDFc", + "outputId": "92adbd0d-5910-4bdc-8b5d-6f46eb047baf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " full_text\n", + "0 Romance Istanbul Hotel Romance Istanbul Hotel ...\n", + "1 Romance Istanbul Hotel Romance Istanbul Hotel ...\n", + "2 Romance Istanbul Hotel Romance Istanbul Hotel ...\n", + "3 Romance Istanbul Hotel Romance Istanbul Hotel ...\n", + "4 Romance Istanbul Hotel Romance Istanbul Hotel ...\n", + "... ...\n", + "5992 Hotel Campanile Paris Bercy Village In the eas...\n", + "5993 Hotel Campanile Paris Bercy Village In the eas...\n", + "5994 Hotel Campanile Paris Bercy Village In the eas...\n", + "5995 Hotel Campanile Paris Bercy Village In the eas...\n", + "5996 Hotel Campanile Paris Bercy Village In the eas...\n", + "\n", + "[5997 rows x 1 columns]\n" + ] + } + ], + "source": [ + "df['full_text'] = df['hotel_name'] + ' ' + df['hotel_description'].astype(str) + ' ' + df['review_title']\n", + "print(df[['full_text']])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 174 + }, + "id": "p_6eZ2NTeRIo", + "outputId": "6fd22a68-499a-4fa8-fb6c-f537c19fc781" + }, + "outputs": [ + { + "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + }, + "text/plain": [ + "'Romance Istanbul Hotel Romance Istanbul Hotel has 39 rooms.Every room is elegantly furnished and harmonizes the modern life style with the traditional Ottoman touch. Romance Istanbul sits at the intersection of the old city’s most important part. With its luxuriously inspiring design and landmark old city location, steeped in the history of its surroundings, Romance Istanbul Hotel welcomes you with exceptional designed rooms and world-renowned Turkish hospitality. Our colleagues deliver the most personal service. It is perfectly placed and perfectly designed to enhance all that Istanbul has to offer. Each room offers a private bathroom and shower. Each is equipped with a satellite TV and free wifi connection. The rooms size change between 20 m2 and 45 m2. It includes 7 suite rooms: 1 Royal Suite, 4 Grand Suite, 1 Romance Suite and 1 Premium Suite, 2 Luxury Room With Terrace, 22 Deluxe Room, 8 City Room. You can’t get better than this.'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.full_text\t[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "x2_99ddefhI7" + }, + "outputs": [], + "source": [ + "!mkdir data" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "id": "PnLH7xeifuG9" + }, + "outputs": [], + "source": [ + "df[1000:].to_csv('data/df_embed.csv',index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "ak5Rmqx_f3xj" + }, + "outputs": [], + "source": [ + "from langchain.document_loaders.csv_loader import CSVLoader\n", + "path= 'data/df_embed.csv'\n", + "loader = CSVLoader(file_path=path,source_column=\"hotel_description\")\n", + "\n", + "data = loader.load()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AyxXk4dhgdOq", + "outputId": "6bcfb76f-1781-4200-f757-548e4322b21a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "page_content='hotel_name: Wyndham Grand Istanbul Kalamis Marina Hotel\\nhotel_description: Anti allergic and disabled rooms available.\\nreview_title: Comfortable Stay with Exceptional Service\\nreview_text: During my stay at the Wyndham Grand Istanbul Kalamis, I was impressed by the comfort and cleanliness of the rooms. In addition, Ümit was quick to respond to any requests we had. Ümit deserves many thanks for this beautiful and very attentive service.\\nrate: 5.0\\ntripdate: January 2024\\nhotel_url: https://www.tripadvisor.com/Hotel_Review-g293974-d3588557-Reviews-Wyndham_Grand_Istanbul_Kalamis_Marina_Hotel-Istanbul.html\\nhotel_image: https://media-cdn.tripadvisor.com/media/photo-s/2a/7a/34/8e/exterior.jpg\\nprice_range: $$ (Based on Average Nightly Rates for a Standard Room from our Partners)\\nrating_value: 4.5\\nreview_count: 1461\\nstreet_address: Fener Kalamis Caddesi No 38 Kalamis / Kadikoy\\nlocality: Istanbul\\ncountry: Turkiye\\nfull_text: Wyndham Grand Istanbul Kalamis Marina Hotel Anti allergic and disabled rooms available. Comfortable Stay with Exceptional Service' metadata={'source': 'Anti allergic and disabled rooms available.', 'row': 0}\n" + ] + } + ], + "source": [ + "print(data[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "rDH3nMQreRcY", + "outputId": "c3eee6d5-e33b-4eda-fe91-3230987d28fc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You have 4997 document(s) in your data\n", + "There are 1055 words in your document\n" + ] + } + ], + "source": [ + "print (f'You have {len(data)} document(s) in your data')\n", + "print (f'There are {len(data[0].page_content)} words in your document')" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "id": "-wY90hB3gyno" + }, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain.document_loaders import DirectoryLoader\n", + "text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)\n", + "texts = text_splitter.split_documents(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xujAl7MNg-9I", + "outputId": "ec52beee-8c5d-4f0f-eca7-58e6a63b35a8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "15755" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(texts)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "a0ztprNnhCcP", + "outputId": "3e4f8d95-060f-45ca-f3d9-be79b541721c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You now have 15755 document(s) in your data\n", + "There are 238 characters in your document\n" + ] + } + ], + "source": [ + "print (f'You now have {len(texts)} document(s) in your data')\n", + "print (f'There are {len(texts[1].page_content)} characters in your document')" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bSBjhmdMhH8u", + "outputId": "65ddb72e-6452-4c3d-d0e2-7bcc5b4ec251" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Document(page_content='hotel_name: Wyndham Grand Istanbul Kalamis Marina Hotel\\nhotel_description: Anti allergic and disabled rooms available.\\nreview_title: Good hotel\\nreview_text: Lobby bar was great Melih the waiter was great The room is great and the view is amazing For sure I will come back in summer 2 restaurants on top floor .. pool are amazing too Fast check in ..room upgraded.. The Greek restaurant on the top floor was great .. good mezze ..\\nrate: 5.0\\ntripdate: January 2024\\nhotel_url: https://www.tripadvisor.com/Hotel_Review-g293974-d3588557-Reviews-Wyndham_Grand_Istanbul_Kalamis_Marina_Hotel-Istanbul.html\\nhotel_image: https://media-cdn.tripadvisor.com/media/photo-s/2a/7a/34/8e/exterior.jpg\\nprice_range: $$ (Based on Average Nightly Rates for a Standard Room from our Partners)\\nrating_value: 4.5\\nreview_count: 1461\\nstreet_address: Fener Kalamis Caddesi No 38 Kalamis / Kadikoy\\nlocality: Istanbul\\ncountry: Turkiye', metadata={'source': 'Anti allergic and disabled rooms available.', 'row': 5})" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "texts[10]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WECLQaVCnf-T", + "outputId": "e80e31bc-276c-43b1-f6e5-c1ecd109219b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "env: OPENAI_API_KEY=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\n" + ] + } + ], + "source": [ + "%env OPENAI_API_KEY=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" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zxV7_brNl4Wp", + "outputId": "9e0b55de-b003-4809-868b-3dc0057383d5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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\n" + ] + } + ], + "source": [ + "import os\n", + "from dotenv import load_dotenv,find_dotenv\n", + "load_dotenv(find_dotenv())\n", + "\n", + "\n", + "OpenAI_key = os.environ.get(\"OPENAI_API_KEY\")\n", + "print(OpenAI_key)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "id": "UT2y18HtjMAr" + }, + "outputs": [], + "source": [ + "from langchain.llms import OpenAI\n", + "from langchain.vectorstores import FAISS" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "o0caruaZhRFN", + "outputId": "b76561d0-2f46-47db-d9eb-b7d4c4be815c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "client= async_client= model='text-embedding-ada-002' deployment='text-embedding-ada-002' openai_api_version='' openai_api_base=None openai_api_type='' openai_proxy='' embedding_ctx_length=8191 openai_api_key='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' openai_organization=None allowed_special=set() disallowed_special='all' chunk_size=1000 max_retries=2 request_timeout=None headers=None tiktoken_enabled=True tiktoken_model_name=None show_progress_bar=False model_kwargs={} skip_empty=False default_headers=None default_query=None retry_min_seconds=4 retry_max_seconds=20 http_client=None\n" + ] + } + ], + "source": [ + "from langchain.embeddings.openai import OpenAIEmbeddings\n", + "from langchain.chat_models import ChatOpenAI\n", + "from langchain import PromptTemplate\n", + "from langchain.chains import LLMChain\n", + "from langchain.llms import OpenAI\n", + "from langchain.vectorstores import FAISS\n", + "MODEL_NAME = \"text-embedding-3-small\"\n", + "embeddings = OpenAIEmbeddings()\n", + "print(embeddings)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "id": "FEAJqKMPhRWN" + }, + "outputs": [], + "source": [ + "db = FAISS.from_documents(texts, embeddings)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "O7hU9t8tpT31" + }, + "outputs": [], + "source": [ + "query = \"\"\"What is the Best Vacation Hotel in Istanbul which provides value for money?\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "id": "0Cf5oznVDjiO" + }, + "outputs": [], + "source": [ + "def get_response_from_query(db, query, k=10):\n", + " \"\"\"\n", + "\n", + " \"\"\"\n", + "\n", + " docs = db.similarity_search(query, k=k) # extremely important\n", + "\n", + " docs_page_content = \" \".join([d.page_content for d in docs])\n", + "\n", + " # llm = BardLLM()\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo-16k\",temperature=0)\n", + "\n", + " prompt = PromptTemplate(\n", + " input_variables=[\"question\", \"docs\"],\n", + " template=\"\"\"\n", + " You are a bot that is open to discussions about different hotels and their reviews either good or bad located in different countries of the world. I will use do different analysis to the articles provided to me. Stay truthful and if you weren't provided any resources give your opinion only.\n", + " Answer the following question: {question}\n", + " By searching the following hotel reviews: {docs}\n", + "\n", + " Only use the factual information from the documents. Make sure to mention key reviews and hotel location from the texts.\n", + "\n", + " If you feel like you don't have enough information to answer the question, say \"I don't know\".\n", + "\n", + " \"\"\",\n", + " )\n", + "\n", + " chain = LLMChain(llm=llm, prompt=prompt)\n", + " # chain = RetrievalQAWithSourcesChain.from_chain_type(llm=llm, prompt=prompt,\n", + " # chain_type=\"stuff\", retriever=db.as_retriever(), return_source_documents=True)\n", + "\n", + " response = chain.run(question=query, docs=docs_page_content,return_source_documents=True)\n", + " r_text = str(response)\n", + "\n", + " ##evaluation part\n", + "\n", + " prompt_eval = PromptTemplate(\n", + " input_variables=[\"answer\", \"docs\"],\n", + " template=\"\"\"\n", + " You job is to evaluate if the response to a given context is faithful.\n", + "\n", + " for the following: {answer}\n", + " By searching the following article: {docs}\n", + "\n", + " Give a reason why they are similar or not, start with a Yes or a No.\n", + "\n", + " \"\"\",\n", + " )\n", + "\n", + " chain_part_2 = LLMChain(llm=llm, prompt=prompt_eval)\n", + "\n", + " evals = chain_part_2.run(answer=r_text, docs=docs_page_content)\n", + "\n", + "\n", + " return response,docs,evals" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ry_DddDUFl9H", + "outputId": "fdb8627f-656e-4cb1-902e-e8325b93b9bd" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The class `langchain_community.chat_models.openai.ChatOpenAI` was deprecated in langchain-community 0.0.10 and will be removed in 0.2.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import ChatOpenAI`.\n", + " warn_deprecated(\n", + "/usr/local/lib/python3.10/dist-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `run` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", + " warn_deprecated(\n" + ] + } + ], + "source": [ + "answer,sources,evals=get_response_from_query(db,query,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2sXxbyOqFuTA", + "outputId": "b14c42a4-6b98-4d29-e01f-f1892bcba604" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[Document(page_content=\"hotel_name: InterContinental Istanbul\\nhotel_description: Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\\nreview_title: Worth a try out place. Good views.\\nreview_text: Hotel was under renovation. Our rooms were club class but very old fashioned. Plug points to charge our phones etc we’re not there beside the bed. Need to surely renovate the rooms. Service was good. Housekeeping was not upto 5 star standard. We were there for 4 nights. They were nice. They gave us delayed check out. That’s extremely important. Location is extremely good.\", metadata={'source': \"Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\", 'row': 117}),\n", + " Document(page_content=\"hotel_name: InterContinental Istanbul\\nhotel_description: Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\\nreview_title: Wonderful stay - the best in Istanbul\", metadata={'source': \"Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\", 'row': 116}),\n", + " Document(page_content=\"hotel_name: InterContinental Istanbul\\nhotel_description: Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\\nreview_title: Nice, but expensive\", metadata={'source': \"Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\", 'row': 113}),\n", + " Document(page_content=\"hotel_name: InterContinental Istanbul\\nhotel_description: Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\\nreview_title: Best option in istanbul\\nreview_text: \\nrate: \\ntripdate: March 2021\\nhotel_url: https://www.tripadvisor.com/Hotel_Review-g293974-d294607-Reviews-or20-InterContinental_Istanbul-Istanbul.html\\nhotel_image: https://dynamic-media-cdn.tripadvisor.com/media/photo-o/29/44/c6/2e/lobby-iconic-stairs.jpg?w=500&h=-1&s=1\\nprice_range: $$ (Based on Average Nightly Rates for a Standard Room from our Partners)\\nrating_value: 4.5\\nreview_count: 2412\", metadata={'source': \"Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\", 'row': 106}),\n", + " Document(page_content=\"hotel_name: InterContinental Istanbul\\nhotel_description: Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\\nreview_title: Excellent choice in Istanbul\", metadata={'source': \"Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\", 'row': 119})]" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sources" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hNGsOgePGGAx", + "outputId": "93fd2d6b-02e6-47d8-e0f8-8ec921ae7549" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "> Question:\n", + "'What is the Best Vacation Hotel in Istanbul which provides value for money?'\n", + "\n", + "> Answer:\n", + "('Based on the provided information, the InterContinental Istanbul is a '\n", + " 'five-star hotel located in Taksim, Istanbul. It offers a great location with '\n", + " 'stunning views of the Bosphorus, Taksim, the Skyline of Istanbul, and the '\n", + " 'Blue Mosque. The hotel is within walking distance of Dolmabahce Palace and '\n", + " 'Istanbul Congress Center. \\n'\n", + " '\\n'\n", + " 'There are mixed reviews about the hotel. One review mentions that the hotel '\n", + " 'was under renovation and the rooms were old-fashioned. The plug points to '\n", + " 'charge phones were not conveniently located. However, the service was good, '\n", + " 'and the staff provided a delayed check-out, which was appreciated. Another '\n", + " 'review describes the stay as wonderful, claiming it to be the best in '\n", + " 'Istanbul. \\n'\n", + " '\\n'\n", + " 'Another review mentions that the hotel is nice but expensive. Unfortunately, '\n", + " 'no information is provided about the review titled \"Best option in '\n", + " 'Istanbul.\" \\n'\n", + " '\\n'\n", + " 'Based on the available information, it is difficult to determine the best '\n", + " 'vacation hotel in Istanbul that provides value for money. More reviews and '\n", + " 'information would be needed to make a comprehensive assessment.')\n", + "\n", + "> Eval:\n", + "('No, the response is not faithful. The response states that the hotel was '\n", + " 'under renovation and the rooms were old-fashioned, which is not mentioned in '\n", + " 'the provided information. Additionally, the response mentions that the plug '\n", + " 'points to charge phones were not conveniently located, which is also not '\n", + " 'mentioned in the provided information.')\n", + "----------------------------------SOURCE DOCUMENTS---------------------------\n", + "\n", + "> Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\n", + "('hotel_name: InterContinental Istanbul\\n'\n", + " \"hotel_description: Five-star ambiance at Istanbul's one of the best address \"\n", + " 'and in the heart of the city. InterContinental Istanbul is the ideal base '\n", + " \"from which to explore this Ottoman capital city's endless historic sites, \"\n", + " 'museums, restaurants, clubs and shops. Located in Taksim,commanding stunning '\n", + " 'views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the '\n", + " 'hotel is in a short walk from Dolmabahce Palace and Istanbul Congress '\n", + " 'Center. Our attentive staff will also point out your desired places.\\n'\n", + " 'review_title: Worth a try out place. Good views.\\n'\n", + " 'review_text: Hotel was under renovation. Our rooms were club class but very '\n", + " 'old fashioned. Plug points to charge our phones etc we’re not there beside '\n", + " 'the bed. Need to surely renovate the rooms. Service was good. Housekeeping '\n", + " 'was not upto 5 star standard. We were there for 4 nights. They were nice. '\n", + " 'They gave us delayed check out. That’s extremely important. Location is '\n", + " 'extremely good.')\n", + "\n", + "> Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\n", + "('hotel_name: InterContinental Istanbul\\n'\n", + " \"hotel_description: Five-star ambiance at Istanbul's one of the best address \"\n", + " 'and in the heart of the city. InterContinental Istanbul is the ideal base '\n", + " \"from which to explore this Ottoman capital city's endless historic sites, \"\n", + " 'museums, restaurants, clubs and shops. Located in Taksim,commanding stunning '\n", + " 'views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the '\n", + " 'hotel is in a short walk from Dolmabahce Palace and Istanbul Congress '\n", + " 'Center. Our attentive staff will also point out your desired places.\\n'\n", + " 'review_title: Wonderful stay - the best in Istanbul')\n", + "\n", + "> Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\n", + "('hotel_name: InterContinental Istanbul\\n'\n", + " \"hotel_description: Five-star ambiance at Istanbul's one of the best address \"\n", + " 'and in the heart of the city. InterContinental Istanbul is the ideal base '\n", + " \"from which to explore this Ottoman capital city's endless historic sites, \"\n", + " 'museums, restaurants, clubs and shops. Located in Taksim,commanding stunning '\n", + " 'views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the '\n", + " 'hotel is in a short walk from Dolmabahce Palace and Istanbul Congress '\n", + " 'Center. Our attentive staff will also point out your desired places.\\n'\n", + " 'review_title: Nice, but expensive')\n", + "\n", + "> Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\n", + "('hotel_name: InterContinental Istanbul\\n'\n", + " \"hotel_description: Five-star ambiance at Istanbul's one of the best address \"\n", + " 'and in the heart of the city. InterContinental Istanbul is the ideal base '\n", + " \"from which to explore this Ottoman capital city's endless historic sites, \"\n", + " 'museums, restaurants, clubs and shops. Located in Taksim,commanding stunning '\n", + " 'views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the '\n", + " 'hotel is in a short walk from Dolmabahce Palace and Istanbul Congress '\n", + " 'Center. Our attentive staff will also point out your desired places.\\n'\n", + " 'review_title: Best option in istanbul\\n'\n", + " 'review_text: \\n'\n", + " 'rate: \\n'\n", + " 'tripdate: March 2021\\n'\n", + " 'hotel_url: '\n", + " 'https://www.tripadvisor.com/Hotel_Review-g293974-d294607-Reviews-or20-InterContinental_Istanbul-Istanbul.html\\n'\n", + " 'hotel_image: '\n", + " 'https://dynamic-media-cdn.tripadvisor.com/media/photo-o/29/44/c6/2e/lobby-iconic-stairs.jpg?w=500&h=-1&s=1\\n'\n", + " 'price_range: $$ (Based on Average Nightly Rates for a Standard Room from our '\n", + " 'Partners)\\n'\n", + " 'rating_value: 4.5\\n'\n", + " 'review_count: 2412')\n", + "\n", + "> Five-star ambiance at Istanbul's one of the best address and in the heart of the city. InterContinental Istanbul is the ideal base from which to explore this Ottoman capital city's endless historic sites, museums, restaurants, clubs and shops. Located in Taksim,commanding stunning views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the hotel is in a short walk from Dolmabahce Palace and Istanbul Congress Center. Our attentive staff will also point out your desired places.\n", + "('hotel_name: InterContinental Istanbul\\n'\n", + " \"hotel_description: Five-star ambiance at Istanbul's one of the best address \"\n", + " 'and in the heart of the city. InterContinental Istanbul is the ideal base '\n", + " \"from which to explore this Ottoman capital city's endless historic sites, \"\n", + " 'museums, restaurants, clubs and shops. Located in Taksim,commanding stunning '\n", + " 'views of the Bosphorus,Taksim,Skyline of Istanbul and the Blue Mosque,the '\n", + " 'hotel is in a short walk from Dolmabahce Palace and Istanbul Congress '\n", + " 'Center. Our attentive staff will also point out your desired places.\\n'\n", + " 'review_title: Excellent choice in Istanbul')\n", + "----------------------------------SOURCE DOCUMENTS---------------------------\n" + ] + } + ], + "source": [ + "from pprint import pprint\n", + "\n", + "# Print question, answer, and evaluations\n", + "print(\"\\n\\n> Question:\")\n", + "pprint(query)\n", + "print(\"\\n> Answer:\")\n", + "pprint(answer)\n", + "print(\"\\n> Eval:\")\n", + "pprint(evals)\n", + "\n", + "# Print the relevant sources used for the answer\n", + "print(\"----------------------------------SOURCE DOCUMENTS---------------------------\")\n", + "for document in sources:\n", + " print(\"\\n> \" + document.metadata[\"source\"])\n", + " pprint(document.page_content[:1000])\n", + "print(\"----------------------------------SOURCE DOCUMENTS---------------------------\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 610 + }, + "id": "QbavhkQlHFco", + "outputId": "f6727474-7019-4e89-f43a-9486a61914cf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n", + "Running on public URL: https://0d95007d3e48359831.gradio.live\n", + "\n", + "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gradio as gr\n", + "def greet(query):\n", + "\n", + " answer,sources,evals = get_response_from_query(db,query,2)\n", + " return answer,sources,evals\n", + "examples = [\n", + " [\"A hotel in Paris with best stay reviews\"],\n", + " [\"A five star ambiance and service at New York Times Square\"],\n", + " [\"The food was delicious, the tea was hot, the Bellinis were decadent. I will definitely go back as soon as I can! \"],\n", + " [\"Lovely but Inexpensive Boutique Experience vs Worst hotel experience ever\"],\n", + " [\"All hotels with Clean, Comfortable, and Great Value!\"],\n", + " [\"The importance of Ottoman Capital City historic site\"]\n", + " ]\n", + "demo = gr.Interface(fn=greet, title=\"hotel-search-with-llm\", inputs=\"text\",\n", + " outputs=[gr.components.Textbox(lines=3, label=\"Response\"),\n", + " gr.components.Textbox(lines=3, label=\"Source\"),\n", + " gr.components.Textbox(lines=3, label=\"Evaluation\")],\n", + " examples=examples)\n", + "\n", + "demo.launch(share=True)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gqfS8xIp5SCq", + "outputId": "e52a3cb8-b840-48e2-83d4-31d6552f5e3d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "env: ARES_API_KEY=ares_208f5ce6af225f96ac754bdf7bb96e8743c42c60669f1b6ff2f5a87314e052ce\n" + ] + } + ], + "source": [ + "%env ARES_API_KEY=ares_208f5ce6af225f96ac754bdf7bb96e8743c42c60669f1b6ff2f5a87314e052ce" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "prYlCpoY4OZe" + }, + "outputs": [], + "source": [ + "import requests\n", + "import os\n", + "\n", + "url = \"https://api-ares.traversaal.ai/live/predict\"\n", + "\n", + "payload = { \"query\": [\"taco spots in San Francisco\"] }\n", + "headers = {\n", + " \"x-api-key\": os.environ.get(\"ARES_API_KEY\"),\n", + " \"content-type\": \"application/json\"\n", + "}\n", + "\n", + "response = requests.post(url, json=payload, headers=headers)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EX-KuvnG5d0q", + "outputId": "8f72b134-f922-4585-f544-7a4497848daa" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"data\":[{\"response_text\":\"Here are some of the best taco spots in San Francisco:\\n\\n1. Al Pastor Papi: Known for their incredible fish tacos, try the baja taco with deep-fried rock cod and chipotle remoulade.\\n\\n2. Nopalito: A modern, all-organic Mexican restaurant offering make-it-yourself-style tacos with delicious house-made tortillas.\\n\\n3. Barrio: Enjoy stunning views of the Golden Gate Bridge while indulging in their Cochinita Pibil tacos.\\n\\n4. Bonita Taqueria and Rotisserie: Hidden gem serving up tasty mahi-mahi tacos with tangy coleslaw and arbol chile oil.\\n\\n5. Cielito Lindo: Visit this authentic taqueria for their mouthwatering quesa birria tacos and rich consomme.\\n\\n6. Lolo's: Located in the Mission District, Lolo's offers a range of exciting tacos that will satisfy any palate.\\n\\nPlease note that these are just a few recommendations and there are many more great taco spots to explore in San Francisco.\",\"web_url\":[\"https://sf.eater.com/maps/best-tacos-san-francisco\",\"https://www.sftravel.com/article/where-to-find-best-tacos-san-francisco\",\"https://www.femalefoodie.com/restaurant-reviews/best-tacos-in-san-francisco/\",\"https://www.reddit.com/r/AskSF/comments/pb1jug/best_taco_in_sf/\",\"https://traveloutlandish.com/blog/best-tacos-in-san-francisco-taquerias/\",\"https://www.yelp.com/search?find_desc=Tacos&find_loc=San+Francisco%2C+CA\",\"https://www.theinfatuation.com/san-francisco/cuisines/tacos\",\"https://lataco.com/san-francisco-best-tacos-guide\",\"https://www.sfchronicle.com/projects/best-tacos-bay-area/\",\"https://foursquare.com/top-places/san-francisco/best-places-street-tacos\"],\"meta-data\":{\"id\":\"chatcmpl-8pQNNoQQ82tgVWqr9vp0Sd8gDMjWt\",\"choices\":[{\"finish_reason\":\"stop\",\"index\":0,\"logprobs\":null,\"message\":{\"content\":\"Here are some of the best taco spots in San Francisco:\\n\\n1. Al Pastor Papi: Known for their incredible fish tacos, try the baja taco with deep-fried rock cod and chipotle remoulade.\\n\\n2. Nopalito: A modern, all-organic Mexican restaurant offering make-it-yourself-style tacos with delicious house-made tortillas.\\n\\n3. Barrio: Enjoy stunning views of the Golden Gate Bridge while indulging in their Cochinita Pibil tacos.\\n\\n4. Bonita Taqueria and Rotisserie: Hidden gem serving up tasty mahi-mahi tacos with tangy coleslaw and arbol chile oil.\\n\\n5. Cielito Lindo: Visit this authentic taqueria for their mouthwatering quesa birria tacos and rich consomme.\\n\\n6. Lolo's: Located in the Mission District, Lolo's offers a range of exciting tacos that will satisfy any palate.\\n\\nPlease note that these are just a few recommendations and there are many more great taco spots to explore in San Francisco.\",\"role\":\"assistant\",\"function_call\":null,\"tool_calls\":null}}],\"created\":1707266809,\"model\":\"gpt-35-turbo-16k\",\"object\":\"chat.completion\",\"system_fingerprint\":null,\"usage\":{\"completion_tokens\":211,\"prompt_tokens\":5965,\"total_tokens\":6176}},\"scrapped_data\":[{\"url\":\"https://sf.eater.com/maps/best-tacos-san-francisco\",\"text\":\"12 Incredibly Fresh Sushi Restaurants in the East Bay17 Essential Places to Eat and Drink in San Francisco’s Historic JapantownHere Are the Hottest New Restaurants in the East Bay, February 2024Where to get your carnitas, fish taco, and quesabirria fix San Francisco taco culture: Not a phrase thrown around as often as it should. Everybody knows the annoying fanaticism around burrito culture, especially the Mission-style burrito, was born here. We experienced the depths of the quesabirria craze in full force, too. But the Bay Area’s taco game is stronger than it often gets credit for. Mothers Tacos in Napa brings the heat to a former Pizza Hut, plus bean king Steve Sando knows all the best spots for tacos north of the city. Sacramento has Naijia Boy Tacos, fusing West African flavors within a corn tortilla. But in San Francisco these 18 restaurants make a strong case for why the city should be considered amongst California’s finest destinations for tacos, full stop.Las Mestizas made the move from the Mission to the Marina this year, bringing its Yucatan specialties along for the ride. The cochinita pibil and poc chuc are the specialties here, and the tacos are the perfect way to highlight both styles of meat. If you’re wondering what to order at Cholita Linda, all of the dishes are excellent, but the crispy, Baja-style fish taco is the standout. The crispy fish, topped with cabbage slaw and a crema can’t be beat, come paired with views of the water at the restaurant’s Ferry Building location. 20 Excellent and Child-Friendly Restaurants in the East BayOne of the better Mexican restaurants on the West side, Los Mayas is also one of the city’s better Yucatecan restaurants. It’s a solid spot to sample the cuisine’s characteristic citrus-marinated meats — poc chuc and cochinita pibil — in taco form, piled onto fat handmade tortillas.9 San Francisco Tamales Worth Adding to Your Wish List This Holiday SeasonCancun (with three locations in the Mission, Bernal Heights and SoMa) is a San Francisco crowd favorite. If you’re deciding what to order, the al pastor and carnitas are always reliable and the tacos always have just the right meat-to-tortilla ratios. The 38 Essential Restaurants in San Francisco18 Classic Restaurants Every San Franciscan Must TryThis Design District restaurant earned a reputation for its excellent Guanajuatan cuisine and its rich pozole verde. But it’s also a great spot for carnitas tacos: slow-roasted local pork shoulder piled onto tortillas made with fresh masa from Oakland’s La Finca Tortilleria.El Tonayense's trucks travel the city, dispensing their tender meats to taco (and burrito) lovers — but thankfully there’s always one parked outside the Mission Best Buy. The tender lengua is a good choice here, drenched in El Tonayense’s excellent salsa roja.Check your inbox for a welcome email.Oops. Something went wrong. Please enter a valid email and try again.There’s plenty to enjoy at Poc-Chuc, which serves up Yucatecan and Mayan-style food, but the tacos themselves are worth stopping in for. The homemade tortillas are the perfect vessel for the varieties of meat served at Poc-Chuc; the pork in the cochinita pibil taco is tender and comes served with an achiote sauce and pickled red onions, while the taco de chimole de pavo, comes topped with strands of turkey swimming in ink-black mole. Both sauces were soaked up nicely by the tortilla and dribbled slightly onto the plate... a bit messy, but worth it.15 Mighty Mexican Restaurants in San FranciscoWhen Copas reopened as a taco haven in April 2023 it quickly became a sensation for fans of Baja California-style tacos. Taco fanatic (and San Francisco Chronicle food critic) Cesar Hernandez wrote that the Tijuana-style fundamentals are huge here. Veggie tacos, filled with creamy Brussels sprouts, are a smart order.14 Eye-Catching Private Dining Rooms in San FranciscoThe Best Moderately-Priced Date Night Restaurants in the Bay AreaThe quesabirria tacos are the most popular at Chuy’s Fiestas, a waiter confirmed, and it’s easy to see why: the classically red-tinged tacos come stuffed with meat and cheese, with the tortilla charred to a nice crisp and served alongside the cutest bowl holding the requisite consomé. But there are other tacos to explore on the menu; the vampiro taco can satisfy the hungriest people in your party and comes loaded with carne asada, melted cheese, pinto beans, pico de gallo, a healthy serving of guacamole and topped with tomatillo sauce. Tucked away in the Mission, San Jalisco is a charming, no-frills diner-style taqueria. The tacos here are huge and available in both soft and hard shell styles. Regulars come specifically for the goat birria that’s available on Fridays and weekends.The 12 Sauciest Chilaquiles in San Francisco Loló has been a Mission District favorite since its debut in 2007. The restaurant bills itself as serving a “playful interpretation of Jaliscan-Californian cuisine” and it shows with its various takes on the taco. Try the Taco Tropical with spiced panko-encrusted shrimp and chipotle aioli drizzle or the fried chicken taco with coleslaw and pickled jalapenos, or go for the “al pastor” cauliflower tacos if you’re looking for a vegetarian option.The 38 Essential Restaurants in San Francisco12 Excellent Margaritas in San FranciscoEl Gallo Giro has long been one of the best taco trucks in the biz, dishing out impeccably juicy carnitas and deeply flavorful grilled chicken. You can find the truck parked in its usual spot at 23rd Street and Treat Avenue, from 10 a.m. to 5 p.m. Monday through Friday.17 Destination Restaurants, Bars, and Bakeries in the Mission District15 Mighty Mexican Restaurants in San FranciscoLa Torta Gorda is a mom-and-pop owned by a family from Puebla, Mexico. Although the restaurant is best known for its namesake sandwiches, its meaty tacos are also solid — including the oversized “Taco Placero” — especially when doused with the shop’s very good salsas verde and rojo. This unassuming meat market hides handmade tortillas with various meat options within, the best of which is the cecina, a salted and air-dried meat sliced thin and crisped on the griddle. Be careful with the salsa rojo here — it is seriously hot. The taco counter is open with somewhat limited hours — 9 a.m. to 5 p.m., except Sundays when it closes at 2.This is your spot for less common (in San Francisco) but delicious bits like suadero, buche, and tripitas, though the carne asada and al pastor also don’t disappoint. Order three tacos for a full meal, alongside a selection of aguas frescas.La Taq is nationally famous for its meaty, rice-free burritos, and rightfully so. But if you talk to the restaurant’s legion of dedicated fans, many of them will tell you that it’s La Taqueria’s tacos, and not its burritos, that are its most delicious offerings. The carnitas and carne asada are both uncommonly juicy and flavorful, and the tacos come loaded with so much meat (and guacamole, sour cream, and cheese if you opt for the “super” version) that just one or two makes for a filling meal. Go for the dorado style, with a crispy corn tortilla folded inside a soft one, for a taco with more crunch and structural integrity.13 James Beard Award-Winning Restaurants to Try in San Francisco The 38 Essential Restaurants in San FranciscoIf you’re going to order a single taco at El Patrón, let it be the quesabirria, the cheesy, soupy Tijuana-style beef birria tacos (served with a side of consomé for convenient dipping) that this Mission taqueria helped popularize in the city. Really, though, any taco is a good choice here, with the other standout being the namesake Taco Patrón, which comes loaded with grilled shrimp and melted cheese.The 38 Essential Restaurants in San Francisco19 Bay Area Spots Where You Can Find Crispy, Cheesy Quesabirria TacosThis longtime Anchor Brewing pop-up just opened its first permanent location in spring 2023. Now, fans can get any of the suite of six tacos on the cheap — nothing more expensive than $6 for fare, including a roasted duck taco — on the city’s more or less slept-on east side.14 Destination Restaurants in Bayview and Hunter’s PointLas Mestizas made the move from the Mission to the Marina this year, bringing its Yucatan specialties along for the ride. The cochinita pibil and poc chuc are the specialties here, and the tacos are the perfect way to highlight both styles of meat. If you’re wondering what to order at Cholita Linda, all of the dishes are excellent, but the crispy, Baja-style fish taco is the standout. The crispy fish, topped with cabbage slaw and a crema can’t be beat, come paired with views of the water at the restaurant’s Ferry Building location. One of the better Mexican restaurants on the West side, Los Mayas is also one of the city’s better Yucatecan restaurants. It’s a solid spot to sample the cuisine’s characteristic citrus-marinated meats — poc chuc and cochinita pibil — in taco form, piled onto fat handmade tortillas.Cancun (with three locations in the Mission, Bernal Heights and SoMa) is a San Francisco crowd favorite. If you’re deciding what to order, the al pastor and carnitas are always reliable and the tacos always have just the right meat-to-tortilla ratios. This Design District restaurant earned a reputation for its excellent Guanajuatan cuisine and its rich pozole verde. But it’s also a great spot for carnitas tacos: slow-roasted local pork shoulder piled onto tortillas made with fresh masa from Oakland’s La Finca Tortilleria.El Tonayense's trucks travel the city, dispensing their tender meats to taco (and burrito) lovers — but thankfully there’s always one parked outside the Mission Best Buy. The tender lengua is a good choice here, drenched in El Tonayense’s excellent salsa roja.There’s plenty to enjoy at Poc-Chuc, which serves up Yucatecan and Mayan-style food, but the tacos themselves are worth stopping in for. The homemade tortillas are the perfect vessel for the varieties of meat served at Poc-Chuc; the pork in the cochinita pibil taco is tender and comes served with an achiote sauce and pickled red onions, while the taco de chimole de pavo, comes topped with strands of turkey swimming in ink-black mole. Both sauces were soaked up nicely by the tortilla and dribbled slightly onto the plate... a bit messy, but worth it.When Copas reopened as a taco haven in April 2023 it quickly became a sensation for fans of Baja California-style tacos. Taco fanatic (and San Francisco Chronicle food critic) Cesar Hernandez wrote that the Tijuana-style fundamentals are huge here. Veggie tacos, filled with creamy Brussels sprouts, are a smart order.The quesabirria tacos are the most popular at Chuy’s Fiestas, a waiter confirmed, and it’s easy to see why: the classically red-tinged tacos come stuffed with meat and cheese, with the tortilla charred to a nice crisp and served alongside the cutest bowl holding the requisite consomé. But there are other tacos to explore on the menu; the vampiro taco can satisfy the hungriest people in your party and comes loaded with carne asada, melted cheese, pinto beans, pico de gallo, a healthy serving of guacamole and topped with tomatillo sauce. Tucked away in the Mission, San Jalisco is a charming, no-frills diner-style taqueria. The tacos here are huge and available in both soft and hard shell styles. Regulars come specifically for the goat birria that’s available on Fridays and weekends.Loló has been a Mission District favorite since its debut in 2007. The restaurant bills itself as serving a “playful interpretation of Jaliscan-Californian cuisine” and it shows with its various takes on the taco. Try the Taco Tropical with spiced panko-encrusted shrimp and chipotle aioli drizzle or the fried chicken taco with coleslaw and pickled jalapenos, or go for the “al pastor” cauliflower tacos if you’re looking for a vegetarian option.El Gallo Giro has long been one of the best taco trucks in the biz, dishing out impeccably juicy carnitas and deeply flavorful grilled chicken. You can find the truck parked in its usual spot at 23rd Street and Treat Avenue, from 10 a.m. to 5 p.m. Monday through Friday.La Torta Gorda is a mom-and-pop owned by a family from Puebla, Mexico. Although the restaurant is best known for its namesake sandwiches, its meaty tacos are also solid — including the oversized “Taco Placero” — especially when doused with the shop’s very good salsas verde and rojo. This unassuming meat market hides handmade tortillas with various meat options within, the best of which is the cecina, a salted and air-dried meat sliced thin and crisped on the griddle. Be careful with the salsa rojo here — it is seriously hot. The taco counter is open with somewhat limited hours — 9 a.m. to 5 p.m., except Sundays when it closes at 2.This is your spot for less common (in San Francisco) but delicious bits like suadero, buche, and tripitas, though the carne asada and al pastor also don’t disappoint. Order three tacos for a full meal, alongside a selection of aguas frescas.La Taq is nationally famous for its meaty, rice-free burritos, and rightfully so. But if you talk to the restaurant’s legion of dedicated fans, many of them will tell you that it’s La Taqueria’s tacos, and not its burritos, that are its most delicious offerings. The carnitas and carne asada are both uncommonly juicy and flavorful, and the tacos come loaded with so much meat (and guacamole, sour cream, and cheese if you opt for the “super” version) that just one or two makes for a filling meal. Go for the dorado style, with a crispy corn tortilla folded inside a soft one, for a taco with more crunch and structural integrity.If you’re going to order a single taco at El Patrón, let it be the quesabirria, the cheesy, soupy Tijuana-style beef birria tacos (served with a side of consomé for convenient dipping) that this Mission taqueria helped popularize in the city. Really, though, any taco is a good choice here, with the other standout being the namesake Taco Patrón, which comes loaded with grilled shrimp and melted cheese.This longtime Anchor Brewing pop-up just opened its first permanent location in spring 2023. Now, fans can get any of the suite of six tacos on the cheap — nothing more expensive than $6 for fare, including a roasted duck taco — on the city’s more or less slept-on east side.\",\"title\":\"18 of San Francisco’s Best Taco Destinations - Eater SFclockmenumore-arrownoyesmobileFollow Eater SF on TwitterFollow Eater SF on FacebookFollow Eater SF on YoutubeFollow Eater SF on InstagramSearch\"},{\"url\":\"https://www.sftravel.com/article/where-to-find-best-tacos-san-francisco\",\"text\":\"\\n By \\n Dan Rosenbaum\\n\\n \\n From the traditional to the unexpected, tacos in San Francisco run the gamut and can be found in almost every neighborhood. Which is your favorite?\\n San Francisco is known for a number of signature dishes, and locals have their own strong opinions about where to find the best of the best. Among those famous foods: tacos! Like the best burritos in San Francisco (the taco's close cousin), we've done the demanding, delicious work of eating all over the city and have come up with our recommendations for the best tacos in San Francisco. Which one is your favorite?What could be more San Francisco than finding out the best tacos you'll ever have come from a truck? Miguel Escobedo started serving his incredible creations years ago and his popularity has never stopped growing. Inspired by the food of Miguel's native Mexico City, Al Pastor Papi tacos are a badge of honor for any traveling foodie.In the Richmond, no one does tacos like Cielito Lindo. All your traditional favorites are served here quickly and with a smile. Cielito Lindo is also known for its quesabirria tacos: spiced tortillas that are grilled and topped with carne asada, melted cheese, diced onion, and cilantro. It's a great place to stop on your way to or from the sights of the Sutro Baths.While there are a lot of delicious things to eat at the Ferry Building, do not overlook the tacos from Cholita Linda. The crispy, Baja-style fish taco, topped with cabbage slaw and a crema, is the standout. Devour one while looking out at the bay; that's the way to go.North Beach may be best known for its Italian food, but look hard enough and you'll find some terrific tacos among all that pizza and pasta. Don Pistos's street tacos are deliciously authentic, and their squash tacos—served with avocado salsa, onions, and cilantro—might be our favorite vegetarian option we've sampled. Not far from Oracle Park is Garaje, which manages to create an almost retro drive-in vibe while being surrounded by San Francisco's rapidly evolving modern skyline. Try their beer-battered tilapia tacos. The chipotle mayo goes perfectly with them.For a straight-up, no-frills, and thoroughly filling taco experience, visit La Taqueria in the Mission. If you're feeling bold, order your tacos super. That means they'll come with beans, pico de gallo, three cheeses, sour cream, and avocado. Good look keeping all that inside the tortilla!If you're looking for the best fish tacos in San Francisco, it makes sense to head toward the ocean. At Hook Fish Co., just blocks from Ocean Beach, you'll find incredibly fresh fish tacos, served grilled or poke style. Their pickled slaw and spicy aioli give their tacos an unexpected kick.Right in the middle of the Mission's most happening stretch is Mosto, a bar best known for having more than 300 types of tequila and mezcal in stock. They also serve delicious al pastor and pastrami tacos. Be sure to stop in on Taco Tuesdays between 5 and 7 p.m. to enjoy their $1 taco specials.Don't be confused by the spelling or the Nantucket-themed decor. Cow Hollow's Tacko has some of the best tacos you'll find in the city. Their nautical nature serves them well on their delicious grilled fish and gulf shrimp tacos, filled with cilantro, cabbage, red onions, pico de gallo and tomato salsa.Whether you visit their Marina or Mission locations, you won't be disappointed by Tacolicious. Offering traditional tacos filled with carne asada or carnitas, as well as tasty vegan and gluten-free options, Tacolicious's kitchen creations are great to share with friends. You can purchase 4 tacos for $25 or 10 for $58. With cocktails available by the pitcher, Tacolicious is a great place for a group hang. Korean/Mexican fusion is a marriage made in taco heaven that you can find at Tacorea in Nob Hill or in their newest Chinatown location. If you're looking for the Korean flavor, get Mama Lee's spicy pork or the bulgogi.At the southern edge of the Mission lies one of San Francisco's newest taco hotspots. The food at Tacos El Patron is cooked with love, with family recipes and traditions serving as the inspiration. Where else would you find tacos birria, a house speciality taco made with beef stew meat and served with broth on the side?Just a short walk from a number of Golden Gate Park's major attractions is Underdogs Tres, a tiny neighborhood favorite with a variety of tacos on the menu. We recommend ordering your tacos \\\"Nick's Way\\\": where a crispy grilled tortilla is wrapped in a soft corn tortilla, then stuffed with your choice of meat and Monterey Jack cheese, pinto beans, pico de gallo, and guacamole.Dan is the Vice President, Global Marketing, at San Francisco Travel. San Francisco has been his home for over a decade (that makes him a local, right?). On the weekends, you can find him with a cup of craft coffee in hand, a playlist of good vibes, a growing list of books to read, or out at the city's hottest new restaurant or bar.You don’t have to travel far to find a great LGBTQ bar in San Francisco.In a culinary capital like San Francisco, you won't believe how many delicious versions of a classic hamburger are waiting for visitors.Enjoy a day of shopping, sightseeing, and dining in the Fisherman's Wharf neighborhood, one of San Francisco's most popular neighborhoods. Are you looking for a dining experience that embodies classic San Francisco? Well, look no further than the Tadich Grill, the oldest restaurant in...Come hungry to this popular San Francisco destination!This is your guide to the delicious restaurants and speciality food retailers in San Francisco's Ferry Building.\\nOur motto: there are a farmers' markets happening somewhere in the city. With fresh produce year-round and with farms nearby, it's farm-to-table every day.Learn about the history behind one of San Francisco's most iconic beverages.Be the first to know about upcoming events and festivals, new restaurants, special deals, and everything else happening in the City by the Bay.© 2024 San Francisco Travel Association. All Rights Reserved.\",\"title\":\"Where to Find the Best Tacos in San Francisco | San Francisco Travel\"},{\"url\":\"https://www.femalefoodie.com/restaurant-reviews/best-tacos-in-san-francisco/\",\"text\":\"Our latest & greatest straight to your inboxSign upIf you know anything about California, you know that tacos are an essential and abundant part of the food scene, and San Francisco is no exception. Narrowing down the best taco shops in San Francisco can be tricky when they can be found on nearly every corner, but that’s what we do best! We’ve rounded up the very best tacos in San Fransisco. So whether you’re a hungry traveler, or a Bay Area local in search of your new favorite taco shop, this guide to the best tacos in San Francisco is for you. Happy eating!If you are a fish taco fan, you must try Papito! The baja taco is the way to go when ordering here. Papito uses rock cod that is deep-fried in a Modelo batter. Topped with a creamy chipotle remoulade and slaw, these tacos will surprise you with their light taste and fantastic flavor. Get this taco with a crunchy shell and pair it with their sweet mango salsa that meshes immaculately with the slaw. Papito has a great outdoor dining area that allows you to emerge yourself in the up-and-coming Potrero Hill neighborhood, which is known for its family-friendly environment.1457 18th St, San Francisco, CA 94107Looking for a healthier option? Nopalito’s is the spot for you! This modern, all-organic Mexican restaurant serves up some delicious tacos that will have you wanting more before you’ve even left. With a spacious indoor dining area and sidewalk cafe, Nopalito’s is perfect for a sit-down dinner date or quick lunch break. Nopalito’s has a more abstract approach to their taco game, with a make-it-yourself-style taco. Served with a platter of carnitas, curtido cabbage slaw, and tangy salsa cruda, guests can load it all up in a delicious house-made tortilla. Their tortillas alone earn them a spot on our guide to the best tacos in San Francisco. Still hungry after your tacos? Treat yourself to something sweet from their pastry selection!306 Broderick St, San Francisco, CA 94117SEE ALSO: 7 Best Donuts in San FranciscoBarrio is the place to go for a meal with a view. Sink your teeth into a taco while witnessing a stunning view of the Golden Gate Bridge. And while the views are great, Barrio’s no-frill tacos are a must-try on your search for the best tacos in San Francisco. We recommend the Cochinita Pibil—marinated pork tacos! The tender meat pairs seamlessly with the pickled onions wrapped in a fresh blue heirloom corn tortilla. Each taco order comes with a side of beans and rice. Get a side of the Yuca Frita for the table to truly experience the greatness of Barrio.$$ Wine Bars, Beer Bar, Latin American1609 Powell St, San Francisco, CA 94133Bonita Taqueria and Rotisserie is a bit of a hidden gem, but they are absolutely serving up some of the best tacos in San Francisco. When entering the restaurant, guests are greeted with an outdoor dining area that resembles a small town in Mexico (we love!). They’re then presented with a plethora of taco options, and while exciting, it can be a little overwhelming. Don’t worry, we’re here to help. Get the mahi-mahi tacos, loaded with tangy coleslaw, guac, and arbol chile oil. You’ll never be the same. There are also great vegetarian alternatives to be found here. With an unorthodox twist to their veggie taco, Bonita Taqueria and Rotisserie implement pumpkin seeds, giving the taco not only a distinctive flavor but a great crunch. If you’re visiting on a clear day, enjoy a walk or quick drive to Fort Mason to see the Golden Gate Bridge after your meal! 2257 Chestnut St, San Francisco, CA 94123RELATED: Top 10 Ice Cream Shops in SFThe California experience is not complete without a stop to an authentic taqueria, and Cielito Lindo is one of our favorites in SF. Their quesa birria tacos will be a highlight of your San Francisco food tour, and maybe of your life. Cielito Lindo’s mouthwatering consomme holds its own with its rich flavor, but the combo of the tender meat, gooey cheese, and consomme is out of this world. Ooh, and we also love the burnt cheesy ends. Don’t forget to add their hot sauce for an extra punch to your tacos! This hole-in-the-wall is a quick drive away from Ocean Beach, so grab the family and head down to the beach for a taco party.3440 Balboa St, San Francisco, CA 94121For a modern dining experience, head to Lolo’s in the Mission District. Lolo’s serves a range of exciting tacos that will satisfy any palate. Step out of your comfort zone and try one of Lolo’s original taco creations, like the Taco Tropical—a spiced, panko-coated shrimp served with a vibrant salsa and chipotle aioli that adds the perfect kick. This taco comes with a jicama tortilla that adds a refreshing crunch to every bite. In need of an appetizer? The baby kale salad is a perfect light start to your meal. Lolo’s ambiance is perfect for a date night or dinner with the girls, but they don’t take reservations so make sure to plan ahead to beat the crowd.974 Valencia St, San Francisco, CA 94110Don’t Miss: 9 Best Bakeries in San FranciscoSenor Sisig is one of our favorite spots for getting tacos in the city! With a hole-in-the-wall location in the Mission District as well as a food truck, Senor Sisig tacos are easy to get your hands on. Their Filipino-fusion style gives a twist to the classic taco, and earns them a well-deserved spot on our guide to the best tacos in San Francisco. As much as we love a traditional meat taco, the tofu option is the real show stopper here. We know what you’re thinking—tofu tacos?! Don’t knock it until you try it. Senor Sisig keeps their taco toppings simple with onions, lettuce, fresh jalapeños, and a zesty cilantro cream sauce, which we love. Be sure you check out their website to track down their daily food truck stops.$$ Mexican, Filipino, Asian Fusion990 Valencia St, San Francisco, CA 94110Can’t decide between Mexican or Asian? Then Tacorea is the place for you! Located close to Union Square, Tacorea serves up mind-blowing Korean fusion tacos. We recommend getting the Bulugoi street tacos combo deal, which will land you two sweet marinated beef tacos topped with fresh housemade tomatillo salsa, onions, and cilantro.  If spicy is your thing, Tacorea’s hot sauce is no joke! The sweet chili hot sauce will take your taco to the next level. Our favorite part of Tacorea’s tacos is the side of tater tots it comes with.$$ Mexican, Korean, Breakfast & Brunch809 Bush St, San Francisco, CA 94108Hook Fish Co. is an absolutely essential stop on your tour of the best tacos in San Francisco. Hook Fish Co. has a phenomenal fish selection that changes daily to showcase whatever is fresh. Their poké tacos will take your taste buds on a vacation to the Hawaiian Islands—served with a crunchy slaw, spicy aioli, and avocado on fresh housemade tortillas. They’re so good, you’re going to want a spoon to scoop up everything that falls out of your taco. They update their Instagram stories daily with photos of the fresh catch if you want to know what the current fish of the day is before heading out.4542 Irving St, San Francisco, CA 94122Hungry For More? 25 Best Restaurants in Los AngelesNow, for the most crucial stop on your taco tour—Tacos El Patron. Tacos El Patron serves THE best tacos in San Francisco, hands down. Tacos El Patron is located in the Mission District where you can find a taqueria on just about every corner, so what makes Tacos El Patron stand out? To start, their menu offers an unmatched assortment of proteins that will cater to anyone. If you’re an adventurous eater, this is a great place to expand your palate. But what really steals the show at Tacos El Patron is their quesa birria tacos. These tacos are stuffed full of tender meat, fresh onions, and melty cheese that will have you falling in love at first bite. Full disclosure, eating these tacos may get messy. Embrace these tacos in all their messy glory—it’s always worth it! 1500 S Van Ness Ave #100, San Francisco, CA 941101457 18th St, San Francisco, CA 94107306 Broderick St, San Francisco, CA 941171609 Powell St, San Francisco, CA 941332257 Chestnut St, San Francisco, CA 941233440 Balboa St, San Francisco, CA 94121974 Valencia St, San Francisco, CA 94110990 Valencia St, San Francisco, CA 94110809 Bush St, San Francisco, CA 941084542 Irving St, San Francisco, CA 94122516 N State College Blvd, Anaheim, CA 92806Get our free bucket list with 100 must-try restaurants in San Francisco, categorized by neighborhood.Your email address will not be published. Required fields are marked *Save my name and email in this browser for the next time I comment.This site uses Akismet to reduce spam. Learn how your comment data is processed.You put the wrong address for El Patron. You have it located in Anaheim, plus it’s your #1 restaurant. Very confusing.Thank you for letting us know- this has been corrected. Appreciate it!Our team of local, trustworthy foodies scout out the best places to eat, so that you don’t have to waste your hard earned pennies on lousy food. Ever again.Get our latest recipes & restaurant guides straight to your inbox.Life's too short to eat bad foodGet our latest recipes & restaurant guides straight to your inbox.\",\"title\":\"10 Best Tacos in San Francisco - Female FoodieInstagramFacebookPinterestYouTubeTikTokToggle MenuToggle SearchClose MenuSearchInstagramFacebookPinterestYouTubeTikTokClose SearchSearchPinCommentsSaveShare on FacebookPinTweetEmailInstagramFacebookPinterestYouTubeTikTokClose\"},{\"url\":\"https://lataco.com/san-francisco-best-tacos-guide\",\"text\":\"[dropcap size=big]Y[/dropcap]ou might be wondering why you’re reading a guide about SF tacos over here at L.A. TACO—it’s quite simple really: It's one of the most common guide requests we get. As people are traveling more, taking that really quick flight to SFO, or making the road trip up the 5, it makes perfect sense. After all, we always gotta know where all the good taco spots are and you definitely don't want to be caught slipping out in SF.San Francisco’s taco game is strong, diverse, and delicious. From roving taqueros slanging soft and steamy tacos de canasta in the Mission District to cochinita specialist trucks overlooking the Golden Gate Bridge, San Francisco has something to offer—you just gotta come with an open mind and a hungry stomach.Here is a list of our L.A. TACO-approved spots.A post shared by Felipe Rreyes (@deliciosostacosdecanasta)Felipe Reyes is an inspiration. Originally from Mexico City, he used to cook at restaurants in San Francisco but was laid off when COVID hit. So he took to the streets of The Mission and started selling extra sweaty tacos de canasta out of a little blue cooler—he’s been making and selling hundreds of tacos six days a week since. He does six different guisados daily—the chicharrón prensado is our favorite and sells out first. Felipe moves up and down Mission Street starting at 10 AM and usually sells out by 1 PM, aka, taco de canasta hours. He can sometimes be hard to track down (most of the time it feels like Felipe finds you). This piece I did on him in The Chronicle is worth a read.Follow his Instagram for the latest location, and catch him if you can.A post shared by La Gallinita Meat Market (@belmarlagallinita)La Gallinita is one part carnicería, one part Mexicatessan, one part taquería, and 100% one of my favorite spots in The Mission. The business has been around for over 60 years and is run by the Vasquez family. You can still find Sal—now approaching his 80s—behind the counter cheerily cutting carne to order for his customers. The thing to get is the cecina taco—they butcher beef themselves, of course, using the thinly sliced eye of the round and salting for at least 24 hours before searing it on the plancha to order. They have tortillas de mano or regular—the tortilla power is yours to choose. The salsa roja gets its heat from habanero and color from árbol and packs a fiery punch.2989 24th St #4133, San Francisco, CA 94110A post shared by Tacos El Pollito (@tacoselpollitosf)Tacos El Pollito is one of the newer taco outfits that popped up on Mission Street during the last year of the pandemic. Run by a wife-and-husband couple, the Gutierrez family, who work at nearby Lucky Pork Market a few blocks away (where they also source their meats). Their setup reminds me a bit of L.A., with a tent over their plancha and a couple of tables and some makeshift chairs surrounding. Late at night, the lamplight shines bright, a beacon that beckons the burgeoning bar-hopping crowds, drunk and hungry. The cecina is solid, they have quesabirria for the masses of course (who doesn't these days?), but for me, the cabeza is where it's at. Braised beef cheek is juicy, stringy but intact, a sponge for the spicy salsas. Mulitas is the way.2467 Mission St San Francisco, CA 94110 A post shared by La Taqueria™️ (@lataqueriasf)La Taquería is an essential San Francisco institution. Since 1973, people have been lining up for the Jara family’s tightly wrapped burritos and tacos, and for good reason—they’re pfg. A few years ago I broke their secret menu, where it was revealed you can do all sorts of sneaky menu hacks like get your burrito dorado—it’s worth a read before a visit. But these days, my biggest protip is unsuspectingly hidden in plain sight right on the menu: get a carne asada corn quesadilla—a single corn tortilla is filled with cheese and charred meat and put on the plancha until melted—it’s basically a DIY quesataco. Add cilantro and cebolla if you want, creamy bright green guacamole, and plump pintos make it extra. The green salsa verde, however, should not be missed.2889 Mission St, San Francisco, CA 94110A post shared by Loló Restaurant (@lolorestaurantsf)There are so many things I love about Loló—the owners to start are the warmest and most welcoming: Chef Jorge Martínez Lillard and his wife Lorena Zertuche (who designed the space—she’s a literal artist), as well as Juan Carlos Ruelas the GM. Their cocktail program is mezcal forward and solid, and they also have a genuine obsession with natural wines. It’s been around since 2007, and it’s always poppin' off—the vibe is so real, it makes me feel. The food--Jaliscan-Californian inspired—is eclectic and ever-changing. But the thing I gravitate towards the most, a menu mainstay, is the fried avocado tacos—remember you are in the Bay. It is creamy avocado coated in panko and fried until crispy with a dollop of jalapeno crema over a flour tortilla with melty Oaxacan cheese—truly one of my favorite things to eat in San Francisco.974 Valencia St, San Francisco, CA 94110A post shared by El Gallo Giro (@elgallogirotruck)El Gallo Giro is a taco truck that parks on the corner of 23rd Street  and Treat Avenue in The Mission. Since 2002, Elena Caballero and her husband Jose Perez have been serving up some of my favorite carnitas in The City. Salted pork leg is cooked in a copper cauldron then crisped up on the plancha to order. Some bites contain crispy bits, others contain fatty, meatier chunks, but the best have a bit of both. I always go salsa roja with this—theirs is deeply heady and complex, slightly smokey, and not too spicy.986-998 Treat Ave, San Francisco, CA 94110A post shared by La Torta Gorda Restaurant (@latorta_gorda_restaurant)Of course, you come to La Torta Gorda for Armando Macuil’s crazy-good, panini-pressed tortas, but his Pueblan specialties are the standouts. Specifically, the taco árabe, the great Lebanese import to Mexico, features tortillas he sources directly from Puebla that are stuffed with sliced pork butt he marinates in orange, lime, vinegar, parsley, onion, and oregano before searing on the plancha. He recommends a schmear of his smokey chipotle morita salsa, but I’m partial to his salsa verde crudo, which is full of spicy serrano, cilantro, onion, garlic, and a good amount of salt. The choice is yours of course.2833 24th St, San Francisco, CA 94110A post shared by 🐽 COCHINITA (@cochinita.sf)Run by business and life partners Karen González and Sergio Albornoz, who grew up in Yucatán, the colorful cochinita truck can be found parked right along The Marina with views of both the Golden Gate bridge and Alcatraz. There’s not much more of a picturesque San Francisco scene as you sink your teeth into their excellent, juicy cochinita pibil. Their charred salsa is tomatillo-based and features habaneros, jalapeños, and serranos to spice it up, while the pickled red onion requisitely cut through it all.  You could get it in taco form, but I actually prefer the cochinita pibil panucho or salbute, both of which are made from fresh masa and puffed in hot oil for maximum texture. Sure, they’re technically not tacos, but they’re basically tacos.Two locations: One in Golden Gate Park and another at 500 Marina Boulevard.Sign up for our free newsletterThe Midnight Hour in San Fernando has hosted dozens of benefit shows, raising thousands of dollars for local LGBTQ+ and Palestinian organizations. Its landlord reportedly refused to help with repairs or lost income due to damaged equipment and goods at the shop. A fundraiser is now up.Or you can have hummus with a bust of Jesus on your table from one of the Southwest's seminal chefs on La Brea. Your call.Connecting East L.A. to the rest of Los Angeles, Metro's 18 bus is a legendary mainline to spectacular tacos, including curbside tacos de canasta, famous Baja fish tacos, insane tlayudas, and the most taco-y plate of vegan barbacoa pasta you've ever seen.The lead prosecutor disclosed that Enamorado and Wendy Lujan, who are raising children together, allegedly “violated jail rules” by setting up a three-way call to be able to talk, landing them both in solitary confinement.A juicy birria burrito, a slow-cooked carnitas burrito, and even a satisfying surf-n-turf shrimp-asada burrito for those who want it all, here are our favorite flour tortilla-wrapped masterpieces in the big bad S.G.V.Celebrating the Taco Lifestyle in Los Angeles, CASign up for our free newsletter\",\"title\":\"The L.A. TACO Travel Guide to San Francisco's Best Taquerías, Mapped ~ L.A. TACO\"}]}],\"is_generating\":false,\"duration\":4.703567981719971,\"average_duration\":6.807917782754609}\n" + ] + } + ], + "source": [ + "print(response.json())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BA0Zz-bioeUs" + }, + "outputs": [], + "source": [ + "title = \"Welcome to Hotel Recommendation System!\"\n", + "\n", + "head = (\n", + " \"
\"\n", + " \"\"\n", + " \"The robot was trained to search for relevant hotels from the dataset provided.\"\n", + " \"
\"\n", + ")\n", + "\n", + "import gradio as gr\n", + "\n", + "blocks = gr.Blocks()\n", + "def reviews(query1):\n", + " ans1 = search(query1)\n", + " return ans1\n", + "def hotel_info(query2):\n", + " ans2 = hotel_info(query2)\n", + " return ans2\n", + "with blocks as demo:\n", + " search = gr.Interface(fn=reviews, inputs=\"text\",title=title, description=head, outputs=\"json\")\n", + " hotel_info= gr.Interface(fn=hotel_info, inputs=\"text\", outputs=\"json\")\n", + "\n", + " def search(query):\n", + " n = 15\n", + " query_embedding = embedder.encode(query1,show_progress_bar=True) #encode the query\n", + " df[\"rev_sim_score\"] = df.embed_1.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1))) #similarity against each doc\n", + " review_results = (\n", + " df.sort_values(\"rev_sim_score\", ascending=False) # re-rank\n", + " .head(n))\n", + " resultlist = []\n", + " hlist = []\n", + " for r in review_results.index:\n", + " if review_results.hotel_name[r] not in hlist:\n", + " smalldf = review_results.loc[review_results.hotel_name == review_results.hotel_name[r]]\n", + " smallarr = smalldf.rev_sim_score[r].max()\n", + " sm =smalldf.rate[r].mean()\n", + " if smalldf.shape[1] > 3:\n", + " smalldf = smalldf[:3]\n", + " resultlist.append(\n", + " {\n", + " \"hotel_name\":review_results.hotel_name[r],\n", + " \"description\":review_results.hotel_description[r],\n", + " \"relevance score\": smallarr.tolist(),\n", + " \"rating\": sm.tolist(),\n", + " \"relevant_reviews\": [ smalldf.hotel_info[s] for s in smalldf.index]\n", + " })\n", + " hlist.append(review_results.hotel_name[r])\n", + " return resultlist\n", + "\n", + " def hotel_info(df, query, n=5, pprint=True):\n", + " query_embedding = embedder.encode(query2,show_progress_bar=True) #encode the query\n", + " df[\"hotel_sim_score\"] = df.embed_2.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1)))\n", + " #similarity against each doc\n", + " hotel_results = (\n", + " df.sort_values(\"hotel_sim_score\", ascending=False) # re-rank\n", + " .head(n))\n", + " resultlist = []\n", + " hlist = []\n", + " for r in hotel_results.index:\n", + " if hotel_results.hotel_name[r] not in hlist:\n", + " smalldf = hotel_results.loc[hotel_results.hotel_name == hotel_results.hotel_name[r]]\n", + " smallarr = smalldf.hotel_sim_score[r].max()\n", + " sm =smalldf.rate[r].mean()\n", + " if smalldf.shape[1] > 3:\n", + " smalldf = smalldf[:3]\n", + " resultlist.append(\n", + " {\n", + " \"name\":hotel_results.hotel_name[r],\n", + " \"description\":hotel_results.hotel_description[r],\n", + " \"hotel_picture\":hotel_results.hotel_image[r],\n", + " \"relevance score\": smallarr.tolist(),\n", + " \"rating\": sm.tolist(),\n", + " \"relevant_reviews\": [ smalldf.hotel_info[s] for s in smalldf.index]\n", + " })\n", + " hlist.append(hotel_results.hotel_name[r])\n", + " return resultlist\n", + "\n", + "\n", + "demo.launch(share=True,debug=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "HIClll01FRse", + "outputId": "269af211-895c-46d4-8291-34046dca1b30" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. To turn off, set debug=False in launch().\n", + "Running on public URL: https://0b4d68877e0e219132.gradio.live\n", + "\n", + "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.10/dist-packages/gradio/queueing.py\", line 501, in call_prediction\n", + " output = await route_utils.call_process_api(\n", + " File \"/usr/local/lib/python3.10/dist-packages/gradio/route_utils.py\", line 253, in call_process_api\n", + " output = await app.get_blocks().process_api(\n", + " File \"/usr/local/lib/python3.10/dist-packages/gradio/blocks.py\", line 1695, in process_api\n", + " result = await self.call_function(\n", + " File \"/usr/local/lib/python3.10/dist-packages/gradio/blocks.py\", line 1235, in call_function\n", + " prediction = await anyio.to_thread.run_sync(\n", + " File \"/usr/local/lib/python3.10/dist-packages/anyio/to_thread.py\", line 33, in run_sync\n", + " return await get_asynclib().run_sync_in_worker_thread(\n", + " File \"/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n", + " return await future\n", + " File \"/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py\", line 807, in run\n", + " result = context.run(func, *args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/gradio/utils.py\", line 692, in wrapper\n", + " response = f(*args, **kwargs)\n", + " File \"\", line 30, in greet\n", + " bm25 = hotel_info(query)\n", + " File \"\", line 3, in hotel_info\n", + " query_embedding = embedder.encode(query,show_progress_bar=True) #encode the query\n", + "NameError: name 'embedder' is not defined\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Keyboard interruption in main thread... closing server.\n", + "Killing tunnel 127.0.0.1:7860 <> https://0b4d68877e0e219132.gradio.live\n" + ] + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import gradio as gr\n", + "def hotel_info(query):\n", + " query_embedding = embedder.encode(query,show_progress_bar=True) #encode the query\n", + " df[\"hotel_sim_score\"] = df.embed_2.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1)))\n", + " #similarity against each doc\n", + " hotel_results = (\n", + " df.sort_values(\"hotel_sim_score\", ascending=False) # re-rank\n", + " .head(n))\n", + " resultlist = []\n", + " hlist = []\n", + " for r in hotel_results.index:\n", + " if hotel_results.hotel_name[r] not in hlist:\n", + " smalldf = hotel_results.loc[hotel_results.hotel_name == hotel_results.hotel_name[r]]\n", + " smallarr = smalldf.hotel_sim_score[r].max()\n", + " sm =smalldf.rate[r].mean()\n", + " if smalldf.shape[1] > 3:\n", + " smalldf = smalldf[:3]\n", + " resultlist.append(\n", + " {\n", + " \"name\":hotel_results.hotel_name[r],\n", + " \"description\":hotel_results.hotel_description[r],\n", + " \"hotel_picture\":hotel_results.hotel_image[r],\n", + " \"relevance score\": smallarr.tolist(),\n", + "\n", + " })\n", + "\n", + " return resultlist\n", + "\n", + "def greet(query):\n", + " bm25 = hotel_info(query)\n", + " return bm25\n", + "\n", + "demo = gr.Interface(fn=greet, inputs=\"text\", outputs=\"json\")\n", + "\n", + "demo.launch(share=True,debug=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3GJBKrGQ7atO", + "outputId": "b67d2ed9-cc12-458a-8ad9-52953cad3009" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: gradio_client in /usr/local/lib/python3.10/dist-packages (0.12.0)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from gradio_client) (2023.6.0)\n", + "Requirement already satisfied: httpx>=0.24.1 in /usr/local/lib/python3.10/dist-packages (from gradio_client) (0.27.0)\n", + "Requirement already satisfied: huggingface-hub>=0.19.3 in /usr/local/lib/python3.10/dist-packages (from gradio_client) (0.20.3)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from gradio_client) (24.0)\n", + "Requirement already satisfied: typing-extensions~=4.0 in /usr/local/lib/python3.10/dist-packages (from gradio_client) (4.10.0)\n", + "Requirement already satisfied: websockets<12.0,>=10.0 in /usr/local/lib/python3.10/dist-packages (from gradio_client) (11.0.3)\n", + "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio_client) (3.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio_client) (2024.2.2)\n", + "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio_client) (1.0.4)\n", + "Requirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio_client) (3.6)\n", + "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio_client) (1.3.1)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.10/dist-packages (from httpcore==1.*->httpx>=0.24.1->gradio_client) (0.14.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio_client) (3.13.1)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio_client) (2.31.0)\n", + "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio_client) (4.66.2)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio_client) (6.0.1)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx>=0.24.1->gradio_client) (1.2.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio_client) (3.3.2)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio_client) (2.0.7)\n" + ] + } + ], + "source": [ + "!pip install gradio_client" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BeE5truipVAR" + }, + "outputs": [], + "source": [ + "def search_reviews(query):\n", + " n = 15\n", + " query_embedding = embedder.encode(query)\n", + " df[\"similarity\"] = df.embedding.apply(lambda x: cosine_similarity(x, query_embedding.reshape(768,-1)))\n", + "\n", + " results = (\n", + " df.sort_values(\"similarity\", ascending=False)\n", + " .head(n))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6Ubl1sM6EuFg" + }, + "outputs": [], + "source": [ + "qdrant_client = qdrant_client.QdrantClient(\":memory:\")\n", + "\n", + "texts = [\n", + " \"Qdrant is the best vector search engine!\",\n", + " \"Loved by Enterprises and everyone building for low latency, high performance, and scale.\",\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 176 + }, + "id": "dRYOlEgX5-6V", + "outputId": "10dc3387-b9fc-4e60-d196-fd2ccaa690ac" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'openai_client' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0membedding_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"text-embedding-3-small\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopenai_client\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0membeddings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m=\u001b[0m \u001b[0mtexts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0membedding_model\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'openai_client' is not defined" + ] + } + ], + "source": [ + "embedding_model = \"text-embedding-3-small\"\n", + "\n", + "result = openai_client.embeddings.create(input= texts, model=embedding_model)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 176 + }, + "id": "6YOu0emT6IBt", + "outputId": "7c43e74c-854a-4aa2-f574-66ebf8089a0e" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'points' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m ),\n\u001b[1;32m 11\u001b[0m )\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0mqdrant_client\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupsert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcollection_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpoints\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'points' is not defined" + ] + } + ], + "source": [ + "from qdrant_client.http.models import VectorParams, Distance\n", + "\n", + "collection_name = \"example_collection\"\n", + "\n", + "qdrant_client.create_collection(\n", + " collection_name,\n", + " vectors_config=VectorParams(\n", + " size=1536,\n", + " distance=Distance.COSINE,\n", + " ),\n", + ")\n", + "qdrant_client.upsert(collection_name, points)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "003d672cc31246b5acf818e94eb2272d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7e236b574ca745f6bec18b98b9eb3ba8", + "placeholder": "​", + "style": "IPY_MODEL_c55cb170dbb14a23acb7bb46e3f1a024", + "value": "Downloading data: 100%" + } + }, + "00ec1a9a0f1a47ab820670786f1772b6": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "09d6abf493e046f98b85280ae80ff989": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0a2515f1e92448919497f3635e0fffdb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0dc9a4714e514026b61e7e0bf1db68ba": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0a2515f1e92448919497f3635e0fffdb", + "max": 28, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_794ca60095f9446e8aa369b81646ea4c", + "value": 28 + } + }, + "114721f0e8ab48e8b6a80fcbc1d60856": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9baf755e807c47babd45ad12e4975e5b", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2ccb6410914f401ab872c41cf773b9ff", + "value": 1 + } + }, + "1426d75a39184a5cbb3efd16dd841e3c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "145a8a4f52804fcba9ac6a6554c493f0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "14c41de0e6d54b2a904f2961f45f52ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_79c2719fe9674bdaa57af4236025a6ca", + "placeholder": "​", + "style": "IPY_MODEL_c4dc1b7a9d77452aaaae235946a617a9", + "value": " 5997/0 [00:00<00:00, 8970.85 examples/s]" + } + }, + "15351778b3dc47e19076c8041eaf319d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "17ea0e0562e34c18a4ee38c9c6123bf2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aaf24d47c8704fe494b44af771eb1f22", + "IPY_MODEL_19e9b83c7b204537b8d08f12cb78bb76", + "IPY_MODEL_79f0c2c7c0304a04a4411973cb1a3572" + ], + "layout": "IPY_MODEL_3fd8b2b90f854b348d0435cebc05ca75" + } + }, + "18a0b7f81d624e7ebc7026e2a91398f2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "19422a1269f54478b1f63a6beb640be1": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_18a0b7f81d624e7ebc7026e2a91398f2", + "placeholder": "​", + "style": "IPY_MODEL_9d170fa4822448cb9259f598187fa217", + "value": " 28.0/28.0 [00:00<00:00, 761B/s]" + } + }, + "19e9b83c7b204537b8d08f12cb78bb76": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_505673b7f85a4b8b994e6082b2859946", + "max": 1758527, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_423ad22440e140f9bfb7a43a7ba7d6c6", + "value": 1758527 + } + }, + "1a5383169ea44f90acaccab31a4e0e21": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d8264884b8e24b039acec27c95aca5b8", + "IPY_MODEL_41a8830d89644ab9b9f0651b9ffb5f85", + "IPY_MODEL_f8346dba023e46a2aecac9d8cbc0a74b" + ], + "layout": "IPY_MODEL_00ec1a9a0f1a47ab820670786f1772b6" + } + }, + "1aa1b58531f44152ac203cfd1421b128": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1d7fa4303740461192b128d7d5f5b745": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "25acf9d0ba1947f2822b06f4fc02a434": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2916282f229943809fbfaccdc88c7301": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "2c1b366ff93d4faebac9b22988511afe": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2ccb6410914f401ab872c41cf773b9ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "326b16f203c7453bb62affc37d09602e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3367b90e731d4a358fc1144deeeca622": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3652dfd091da454dab14368069dbef74": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "370caccc8b274985839dcf7116378175": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3712ae42e22b49788b12db0aa60e3de5": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "37fa90c632fb43649f638f742b781f5a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "37fbc6ed37dc42df93dd977455016aec": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f9d51fcacc704fc4845b404922df86de", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d1abce6c0e2346428f175fe70d2589b6", + "value": 1 + } + }, + "39ecd3fb587c4833afa937cf5c93a31f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3aa2bb9516b04a2d854a60a4f72551c8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3c319bde5c9047d6bdb06ea244ced4c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "3d12b1688e794e42a17d85f34370161c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2c1b366ff93d4faebac9b22988511afe", + "placeholder": "​", + "style": "IPY_MODEL_831d8289f55a4d168c5f6e756696619c", + "value": " 1.67M/1.67M [00:00<00:00, 7.59MB/s]" + } + }, + "3e55282ab8f945a7a9699984566d5a4b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3fd8b2b90f854b348d0435cebc05ca75": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "41a8830d89644ab9b9f0651b9ffb5f85": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1d7fa4303740461192b128d7d5f5b745", + "max": 1697529, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_746d995175d14ad5a466dd270c59e518", + "value": 1697529 + } + }, + "41ef3a8829274ecc98b8c259aa85a360": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f132defef69f42969e13656c774db4a8", + "IPY_MODEL_58975c55d9da4b889a1a3bd7d42357b8", + "IPY_MODEL_625aa372e3aa4290828c8dc3b2ef2c44" + ], + "layout": "IPY_MODEL_81d84da2b31c44d181e3a017dacd00ec" + } + }, + "423ad22440e140f9bfb7a43a7ba7d6c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "505673b7f85a4b8b994e6082b2859946": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "58975c55d9da4b889a1a3bd7d42357b8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3e55282ab8f945a7a9699984566d5a4b", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_37fa90c632fb43649f638f742b781f5a", + "value": 1 + } + }, + "58b83f329f5b497c876349054f74848b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c039ad4dbb084706921672ee6c429912", + "IPY_MODEL_fa65848d4b164d2a9ccae64082072674", + "IPY_MODEL_f6cd5952821044848c52fbe5636d9148" + ], + "layout": "IPY_MODEL_25acf9d0ba1947f2822b06f4fc02a434" + } + }, + "5b7162144b6048c59cd28ac4d62ff709": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5bbed4e6f6e34bb0927d36cbcba03e3a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_370caccc8b274985839dcf7116378175", + "placeholder": "​", + "style": "IPY_MODEL_c73cb53a92c743a793aa395e6051bb99", + "value": "Downloading readme: 100%" + } + }, + "60262197671940eeb7f7d133792a92c5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "625aa372e3aa4290828c8dc3b2ef2c44": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c6a5463a485147bf97010931a33d1d5d", + "placeholder": "​", + "style": "IPY_MODEL_39ecd3fb587c4833afa937cf5c93a31f", + "value": " 1/1 [00:00<00:00,  5.59it/s]" + } + }, + "6870ad4f601840a1b76e45ae9249924e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e677cc0cda1c445bb603083f19950f57", + "max": 1669571, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_9e99c96910cd43bf92ef9a981a9a3e7a", + "value": 1669571 + } + }, + "746d995175d14ad5a466dd270c59e518": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "78a8a265b2304a3691a470f6455af12b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "794ca60095f9446e8aa369b81646ea4c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "79a15181b6c540e3b0e9a940868b4323": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b3408a026cd74321b14aa5bd649f59d2", + "IPY_MODEL_114721f0e8ab48e8b6a80fcbc1d60856", + "IPY_MODEL_a986b27d9dc849709101f831c613c863" + ], + "layout": "IPY_MODEL_5b7162144b6048c59cd28ac4d62ff709" + } + }, + "79c2719fe9674bdaa57af4236025a6ca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "79f0c2c7c0304a04a4411973cb1a3572": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_326b16f203c7453bb62affc37d09602e", + "placeholder": "​", + "style": "IPY_MODEL_e9c1c57a67fb4be1b2d3ba56252abf2a", + "value": " 1.76M/1.76M [00:00<00:00, 9.15MB/s]" + } + }, + "7c1d7071dc0746f8b03159b3752657c2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7e236b574ca745f6bec18b98b9eb3ba8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81d84da2b31c44d181e3a017dacd00ec": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "831d8289f55a4d168c5f6e756696619c": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8850b33466b24ad699cf86edf0684229": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8dffb253c18f4b95830c7f4f8a38d2cb": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "93e672527458461d9af91896cd045efb": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b627eff47a67431d81bb89d663d0ef6f", + "IPY_MODEL_37fbc6ed37dc42df93dd977455016aec", + "IPY_MODEL_14c41de0e6d54b2a904f2961f45f52ee" + ], + "layout": "IPY_MODEL_e0de82574042484f9c2d6b9abd5e07ca" + } + }, + "96c2acf3e7884920a3c38b90bc310626": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9baf755e807c47babd45ad12e4975e5b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9d10d998e9ee4f2aa0b0934516a5e408": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9d170fa4822448cb9259f598187fa217": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9e99c96910cd43bf92ef9a981a9a3e7a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "a2dc226fbd3d49189b96b95277433896": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3712ae42e22b49788b12db0aa60e3de5", + "placeholder": "​", + "style": "IPY_MODEL_78a8a265b2304a3691a470f6455af12b", + "value": " 1.53M/1.53M [00:00<00:00, 4.83MB/s]" + } + }, + "a4f8bed577c24d94aac46740f0de3296": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a56072f75865425d92c2d5f32f9c069e": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a6181fc8b9184a6d988943545eb90704": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a986b27d9dc849709101f831c613c863": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_aa4065df49f84b3e9c088672456a5225", + "placeholder": "​", + "style": "IPY_MODEL_60262197671940eeb7f7d133792a92c5", + "value": " 1/1 [00:00<00:00,  4.62it/s]" + } + }, + "aa4065df49f84b3e9c088672456a5225": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aaf24d47c8704fe494b44af771eb1f22": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e693d218ee2740dc9f9132e4078bd65c", + "placeholder": "​", + "style": "IPY_MODEL_145a8a4f52804fcba9ac6a6554c493f0", + "value": "Downloading data: 100%" + } + }, + "b3408a026cd74321b14aa5bd649f59d2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3aa2bb9516b04a2d854a60a4f72551c8", + "placeholder": "​", + "style": "IPY_MODEL_9d10d998e9ee4f2aa0b0934516a5e408", + "value": "Batches: 100%" + } + }, + "b627eff47a67431d81bb89d663d0ef6f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a6181fc8b9184a6d988943545eb90704", + "placeholder": "​", + "style": "IPY_MODEL_a4f8bed577c24d94aac46740f0de3296", + "value": "Generating train split: " + } + }, + "ba0f8e85cfe34f00b810f33a4b23d6e7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_003d672cc31246b5acf818e94eb2272d", + "IPY_MODEL_bd6e6d468f21447fad2e452ba09de368", + "IPY_MODEL_a2dc226fbd3d49189b96b95277433896" + ], + "layout": "IPY_MODEL_eda5b348eb37448386bda587c7d7c744" + } + }, + "bd6e6d468f21447fad2e452ba09de368": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8dffb253c18f4b95830c7f4f8a38d2cb", + "max": 1526592, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e5a5488269b6413bab3c7bb7c78e1cc5", + "value": 1526592 + } + }, + "c039ad4dbb084706921672ee6c429912": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7c1d7071dc0746f8b03159b3752657c2", + "placeholder": "​", + "style": "IPY_MODEL_2916282f229943809fbfaccdc88c7301", + "value": "Downloading data: 100%" + } + }, + "c4dc1b7a9d77452aaaae235946a617a9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c55cb170dbb14a23acb7bb46e3f1a024": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c5c929247979458598820b76600b8fb3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c6a5463a485147bf97010931a33d1d5d": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c73cb53a92c743a793aa395e6051bb99": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d1abce6c0e2346428f175fe70d2589b6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d80c895a5e9f4d5b9495c6708dae6e0d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d8264884b8e24b039acec27c95aca5b8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_96c2acf3e7884920a3c38b90bc310626", + "placeholder": "​", + "style": "IPY_MODEL_d80c895a5e9f4d5b9495c6708dae6e0d", + "value": "Downloading data: 100%" + } + }, + "e0de82574042484f9c2d6b9abd5e07ca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e2823db8b700414b87cf2d7320c76000": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5bbed4e6f6e34bb0927d36cbcba03e3a", + "IPY_MODEL_0dc9a4714e514026b61e7e0bf1db68ba", + "IPY_MODEL_19422a1269f54478b1f63a6beb640be1" + ], + "layout": "IPY_MODEL_1aa1b58531f44152ac203cfd1421b128" + } + }, + "e5a5488269b6413bab3c7bb7c78e1cc5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e677cc0cda1c445bb603083f19950f57": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e693d218ee2740dc9f9132e4078bd65c": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e6ab5eb6655a45b09451b6b98e94b562": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_09d6abf493e046f98b85280ae80ff989", + "placeholder": "​", + "style": "IPY_MODEL_e6ec219a00f249449dedd1f8b702e6c6", + "value": "Downloading data: 100%" + } + }, + "e6ec219a00f249449dedd1f8b702e6c6": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e9c1c57a67fb4be1b2d3ba56252abf2a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "eda5b348eb37448386bda587c7d7c744": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f132defef69f42969e13656c774db4a8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1426d75a39184a5cbb3efd16dd841e3c", + "placeholder": "​", + "style": "IPY_MODEL_3367b90e731d4a358fc1144deeeca622", + "value": "Batches: 100%" + } + }, + "f499afb92e484dc8873b1000ea9766dd": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e6ab5eb6655a45b09451b6b98e94b562", + "IPY_MODEL_6870ad4f601840a1b76e45ae9249924e", + "IPY_MODEL_3d12b1688e794e42a17d85f34370161c" + ], + "layout": "IPY_MODEL_f8b14a9061424318a8a7d6aeb8735df8" + } + }, + "f6cd5952821044848c52fbe5636d9148": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_15351778b3dc47e19076c8041eaf319d", + "placeholder": "​", + "style": "IPY_MODEL_c5c929247979458598820b76600b8fb3", + "value": " 1.57M/1.57M [00:00<00:00, 4.79MB/s]" + } + }, + "f8346dba023e46a2aecac9d8cbc0a74b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a56072f75865425d92c2d5f32f9c069e", + "placeholder": "​", + "style": "IPY_MODEL_3652dfd091da454dab14368069dbef74", + "value": " 1.70M/1.70M [00:00<00:00, 7.77MB/s]" + } + }, + "f8b14a9061424318a8a7d6aeb8735df8": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9d51fcacc704fc4845b404922df86de": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": "20px" + } + }, + "fa65848d4b164d2a9ccae64082072674": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8850b33466b24ad699cf86edf0684229", + "max": 1569442, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3c319bde5c9047d6bdb06ea244ced4c5", + "value": 1569442 + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}