From b1f781bd31146da2a07695a58b51fd9929955c0d Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Thu, 17 Mar 2022 18:12:22 +0100 Subject: [PATCH 01/11] update tutorial 15 with newer features --- haystack/nodes/reader/table.py | 2 +- haystack/schema.py | 2 +- tutorials/Tutorial15_TableQA.ipynb | 2626 ++++++++++++++++++++++------ tutorials/Tutorial15_TableQA.py | 23 +- 4 files changed, 2075 insertions(+), 578 deletions(-) diff --git a/haystack/nodes/reader/table.py b/haystack/nodes/reader/table.py index 4d343b1a59..8783367eb8 100644 --- a/haystack/nodes/reader/table.py +++ b/haystack/nodes/reader/table.py @@ -370,7 +370,7 @@ def _aggregate_answers(agg_operator: str, answer_cells: List[str]) -> str: else: raise KeyError("unknown aggregator") - return f"{answer_value}{' ' + unit if unit else ''}" + return f"{answer_value}{' ' + unit if unit else ''}" except KeyError as e: if "unknown aggregator" in str(e): diff --git a/haystack/schema.py b/haystack/schema.py index 5b02e4b85d..1d2bd7b011 100644 --- a/haystack/schema.py +++ b/haystack/schema.py @@ -227,7 +227,7 @@ def __repr__(self): def __str__(self): # In some cases, self.content is None (therefore not subscriptable) - if not self.content: + if self.content is None: return f"" return f" 100 else ''}'>" diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index d448118cef..583d24d0d3 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -111,11 +111,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "id": "RmxepXZtwQ0E" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.document_stores.base - Numba not found, replacing njit() with no-op implementation. Enable it with 'pip install numba'.\n", + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n" + ] + } + ], "source": [ "# Connect to Elasticsearch\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", @@ -134,7 +143,7 @@ }, "source": [ "## Add Tables to DocumentStore\n", - "To quickly demonstrate the capabilities of the `TableTextRetriever` and the `TableReader` we use a subset of 1000 tables of the [Open Table-and-Text Question Answering (OTT-QA) dataset](https://github.com/wenhuchen/OTT-QA).\n", + "To quickly demonstrate the capabilities of the `TableTextRetriever` and the `TableReader` we use a subset of 1000 tables and text documents from a dataset we have published in [this paper](https://arxiv.org/abs/2108.04049).\n", "\n", "Just as text passages, tables are represented as `Document` objects in Haystack. The content field, though, is a pandas DataFrame instead of a string." ] @@ -152,13 +161,13 @@ "from haystack.utils import fetch_archive_from_http\n", "\n", "doc_dir = \"data\"\n", - "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_sample.zip\"\n", + "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip\"\n", "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -168,21 +177,30 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - " Result ... Score\n", - "0 Winner ... 6-1 , 6-1\n", - "1 Winner ... 6-2 , 4-6 , 6-3\n", - "2 Winner ... 6-2 , 6-2\n", - "3 Runner-up ... 3-6 , 2-6\n", - "4 Winner ... 6-7 , 6-3 , 6-0\n", - "5 Winner ... 6-1 , 6-0\n", - "6 Winner ... 6-2 , 2-6 , 6-2\n", - "7 Winner ... 6-0 , 6-4\n", - "\n", - "[8 rows x 8 columns]\n", - "{'title': 'Rewa Hudson', 'section_title': 'ITF finals ( 7–3 ) -- Doubles ( 7–1 )'}\n" + " Opponent M W L T NR Win% First Last\n", + "0 Afghanistan 2 2 0 0 0 100.0 2012 2014\n", + "1 Australia 98 32 62 1 3 34.21 1975 2017\n", + "2 Bangladesh 35 31 4 0 0 88.57 1986 2015\n", + "3 Canada 2 2 0 0 0 100.0 1979 2011\n", + "4 England 82 31 49 0 2 38.75 1974 2017\n", + "5 Hong Kong 2 2 0 0 0 100.0 2004 2008\n", + "6 India 129 73 52 0 4 58.4 1978 2017\n", + "7 Ireland 7 5 1 1 0 78.57 2007 2016\n", + "8 Kenya 6 6 0 0 0 100.0 1996 2011\n", + "9 Namibia 1 1 0 0 0 100.0 2003 2003\n", + "10 Netherlands 3 3 0 0 0 100.0 1996 2003\n", + "11 New Zealand 103 53 47 1 2 52.97 1973 2018\n", + "12 Scotland 3 3 0 0 0 100.0 1999 2013\n", + "13 South Africa 73 25 47 0 1 34.72 1992 2017\n", + "14 Sri Lanka 153 90 58 1 4 60.73 1975 2017\n", + "15 United Arab Emirates 3 3 0 0 0 100.0 1994 2015\n", + "16 West Indies 133 60 70 3 0 46.24 1975 2017\n", + "17 Zimbabwe 59 52 4 1 2 92.1 1992 2018\n", + "18 Total[12] 894 474 394 8 18 54.56 1973 2018\n", + "{}\n" ] } ], @@ -194,7 +212,7 @@ "import pandas as pd\n", "\n", "\n", - "def read_ottqa_tables(filename):\n", + "def read_tables(filename):\n", " processed_tables = []\n", " with open(filename) as tables:\n", " tables = json.load(tables)\n", @@ -202,20 +220,16 @@ " current_columns = table[\"header\"]\n", " current_rows = table[\"data\"]\n", " current_df = pd.DataFrame(columns=current_columns, data=current_rows)\n", - " current_doc_title = table[\"title\"]\n", - " current_section_title = table[\"section_title\"]\n", " document = Document(\n", " content=current_df,\n", " content_type=\"table\",\n", - " meta={\"title\": current_doc_title, \"section_title\": current_section_title},\n", " id=key,\n", " )\n", " processed_tables.append(document)\n", "\n", " return processed_tables\n", "\n", - "\n", - "tables = read_ottqa_tables(f\"{doc_dir}/ottqa_tables_sample.json\")\n", + "tables = read_tables(f\"{doc_dir}/tables.json\")\n", "document_store.write_documents(tables, index=document_index)\n", "\n", "# Showing content field and meta field of one of the Documents of content_type 'table'\n", @@ -246,11 +260,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "EY_qvdV6wyK5" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-question_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-question_encoder\n", + "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", + "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", + "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-passage_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-passage_encoder\n", + "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", + "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", + "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-table_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-table_encoder\n" + ] + } + ], "source": [ "from haystack.nodes.retriever import TableTextRetriever\n", "\n", @@ -265,11 +309,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "id": "jasi1RM2zIJ7" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.document_stores.elasticsearch - Updating embeddings for all 437 docs ...\n", + "Updating embeddings: 10000 Docs [00:22, 449.16 Docs/s] \n" + ] + } + ], "source": [ "# Add table embeddings to the tables in DocumentStore\n", "document_store.update_embeddings(retriever=retriever)" @@ -277,7 +330,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": { "id": "XM-ijy6Zz11L" }, @@ -290,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -300,32 +353,22 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - " Name ... Status\n", - "0 Twin Towers II ... Never built\n", - "1 World Trade Center ... Destroyed\n", - "2 Three Sixty West ... Under construction\n", - "3 Gateway Towers ... Under construction\n", - "4 Rustomjee Crown ... Under construction\n", - "5 Orchid Heights ... On-hold\n", - "6 Hermitage Towers ... Proposed\n", - "7 Lokhandwala Minerva ... Under construction\n", - "8 Lamar Towers ... Under construction\n", - "9 Indonesia One Towers ... Under construction\n", - "10 Sky link ... Approved\n", - "11 Vida Za'abeel ... Proposed\n", - "12 Broadway Corridor Twin Towers ... Never built\n", - "13 India Bulls Sky Forest Tower ... Under construction\n", - "14 Capital Towers ... Under construction\n", - "15 One Avighna Park ... Under construction\n", - "16 NEB Towers ... On hold\n", - "17 The Destiny ( Tower ) ... Under construction\n", - "18 Oberoi Esquire Towers ... Under construction\n", - "19 Bhoomi Celestia ... Under construction\n", - "\n", - "[20 rows x 6 columns]\n" + " Year Coach Super Bowl \\\n", + "0 1966 Vince Lombardi I \n", + "1 1967 Vince Lombardi II \n", + "2 1996 Mike Holmgren XXXI \n", + "3 2010 Mike McCarthy XLV \n", + "4 Total Super Bowls won: Total Super Bowls won: Total Super Bowls won: \n", + "\n", + " Location Opponent Score Record \n", + "0 Los Angeles, California Kansas City Chiefs 35–10 12–2 \n", + "1 Miami, Florida Oakland Raiders 33–14 9–4–1 \n", + "2 New Orleans, Louisiana New England Patriots 35–21 13–3 \n", + "3 Arlington, Texas Pittsburgh Steelers 31–25 10–6 \n", + "4 Total Super Bowls won: Total Super Bowls won: 4 4 \n" ] } ], @@ -333,7 +376,7 @@ "# Try the Retriever\n", "from haystack.utils import print_documents\n", "\n", - "retrieved_tables = retriever.retrieve(\"How many twin buildings are under construction?\", top_k=5)\n", + "retrieved_tables = retriever.retrieve(\"Who won the Super Bowl?\", top_k=5)\n", "# Get highest scored table\n", "print(retrieved_tables[0].content)" ] @@ -352,11 +395,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "id": "4APcRoio2RxG" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + } + ], "source": [ "from haystack.nodes import TableReader\n", "\n", @@ -365,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -375,45 +427,55 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - " Name ... Status\n", - "0 Twin Towers II ... Never built\n", - "1 World Trade Center ... Destroyed\n", - "2 Three Sixty West ... Under construction\n", - "3 Gateway Towers ... Under construction\n", - "4 Rustomjee Crown ... Under construction\n", - "5 Orchid Heights ... On-hold\n", - "6 Hermitage Towers ... Proposed\n", - "7 Lokhandwala Minerva ... Under construction\n", - "8 Lamar Towers ... Under construction\n", - "9 Indonesia One Towers ... Under construction\n", - "10 Sky link ... Approved\n", - "11 Vida Za'abeel ... Proposed\n", - "12 Broadway Corridor Twin Towers ... Never built\n", - "13 India Bulls Sky Forest Tower ... Under construction\n", - "14 Capital Towers ... Under construction\n", - "15 One Avighna Park ... Under construction\n", - "16 NEB Towers ... On hold\n", - "17 The Destiny ( Tower ) ... Under construction\n", - "18 Oberoi Esquire Towers ... Under construction\n", - "19 Bhoomi Celestia ... Under construction\n", - "\n", - "[20 rows x 6 columns]\n" + " Name Program Role Salary Year \\\n", + "0 Simon Cowell The X Factor Judge $75 million 2012–13 \n", + "1 Britney Spears American Idol $25 million 2017–18 [15] \n", + "2 Jennifer Lopez $20 million 2011–12 [16] nan \n", + "3 Mariah Carey $18 million 2012–13 [17] nan \n", + "4 Hugh Laurie House Gregory House $15 million 2013 \n", + "5 Ryan Seacrest American Idol Host 2013–16 [14] \n", + "6 Katy Perry The X Factor Judge 2012 [17] \n", + "7 Miley Cyrus The Voice Coach $13 million 2016–17 \n", + "8 Adam Levine 2016–18 [18] nan nan \n", + "9 Blake Shelton 2016–18 [18] nan nan \n", + "10 Christina Aguilera $12.5 million 2013 [19] nan \n", + "11 Kelly Clarkson $12 million 2018 [20] nan \n", + "12 Shakira 2013 [19] nan nan \n", + "13 Gwen Stefani 2017 [21] nan nan \n", + "14 Nicki Minaj American Idol Judge 2012–13 [19] \n", + "\n", + " Ref. \n", + "0 [14] \n", + "1 nan \n", + "2 nan \n", + "3 nan \n", + "4 [14] \n", + "5 nan \n", + "6 nan \n", + "7 [18] \n", + "8 nan \n", + "9 nan \n", + "10 nan \n", + "11 nan \n", + "12 nan \n", + "13 nan \n", + "14 nan \n" ] } ], "source": [ "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", "\n", - "table_doc = document_store.get_document_by_id(\"List_of_tallest_twin_buildings_and_structures_in_the_world_1\")\n", + "table_doc = document_store.get_document_by_id(\"36964e90-3735-4ba1-8e6a-bec236e88bb2\")\n", "print(table_doc.content)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -423,42 +485,52 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "\n", - "Query: How many twin buildings are under construction?\n", + "Query: Who played Gregory House in the series House?\n", "Answers:\n", - "[ ]\n" + "[ ]\n" ] } ], "source": [ "from haystack.utils import print_answers\n", "\n", - "prediction = reader.predict(query=\"How many twin buildings are under construction?\", documents=[table_doc])\n", + "prediction = reader.predict(query=\"Who played Gregory House in the series House?\", documents=[table_doc])\n", "print_answers(prediction, details=\"all\")" ] }, @@ -468,14 +540,12 @@ "id": "jkAYNMb7R9qu" }, "source": [ - "The offsets in the `offsets_in_document` and `offsets_in_context` field indicate the table cells that the model predicts to be part of the answer. They need to be interpreted on the linearized table, i.e., a flat list containing all of the table cells.\n", - "\n", - "In the `Answer`'s meta field, you can find the aggreagtion operator used to construct the answer (in this case `COUNT`) and the answer cells as strings." + "The offsets in the `offsets_in_document` and `offsets_in_context` field indicate the table cells that the model predicts to be part of the answer. They need to be interpreted on the linearized table, i.e., a flat list containing all of the table cells." ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -485,11 +555,11 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Predicted answer: 12\n", - "Meta field: {'aggregation_operator': 'COUNT', 'answer_cells': ['Three Sixty West', 'Gateway Towers', 'Rustomjee Crown', 'Lokhandwala Minerva', 'Lamar Towers', 'Indonesia One Towers', 'India Bulls Sky Forest Tower', 'Capital Towers', 'One Avighna Park', 'The Destiny ( Tower )', 'Oberoi Esquire Towers', 'Bhoomi Celestia']}\n" + "Predicted answer: Hugh Laurie\n", + "Meta field: {'aggregation_operator': 'NONE', 'answer_cells': ['Hugh Laurie']}\n" ] } ], @@ -512,7 +582,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "id": "G-aZZvyv4-Mf" }, @@ -528,7 +598,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -538,244 +608,1350 @@ }, "outputs": [ { + "name": "stderr", "output_type": "stream", + "text": [ + "/opt/homebrew/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3440: RuntimeWarning: Mean of empty slice.\n", + " return _methods._mean(a, axis=axis, dtype=dtype,\n", + "/opt/homebrew/lib/python3.9/site-packages/numpy/core/_methods.py:189: RuntimeWarning: invalid value encountered in double_scalars\n", + " ret = ret.dtype.type(ret / rcount)\n" + ] + }, + { "name": "stdout", + "output_type": "stream", "text": [ "\n", - "Query: How many twin buildings are under construction?\n", + "Query: When was Guilty Gear Xrd : Sign released?\n", "Answers:\n", - "[ { 'answer': '12',\n", - " 'context': Name ... Status\n", - "0 Twin Towers II ... Never built\n", - "1 World Trade Center ... Destroyed\n", - "2 Three Sixty West ... Under construction\n", - "3 Gateway Towers ... Under construction\n", - "4 Rustomjee Crown ... Under construction\n", - "5 Orchid Heights ... On-hold\n", - "6 Hermitage Towers ... Proposed\n", - "7 Lokhandwala Minerva ... Under construction\n", - "8 Lamar Towers ... Under construction\n", - "9 Indonesia One Towers ... Under construction\n", - "10 Sky link ... Approved\n", - "11 Vida Za'abeel ... Proposed\n", - "12 Broadway Corridor Twin Towers ... Never built\n", - "13 India Bulls Sky Forest Tower ... Under construction\n", - "14 Capital Towers ... Under construction\n", - "15 One Avighna Park ... Under construction\n", - "16 NEB Towers ... On hold\n", - "17 The Destiny ( Tower ) ... Under construction\n", - "18 Oberoi Esquire Towers ... Under construction\n", - "19 Bhoomi Celestia ... Under construction\n", - "\n", - "[20 rows x 6 columns]},\n", - " { 'answer': '7',\n", - " 'context': Building or structure ... Listing\n", - "0 Ford Assembly Plant Building Now Public Storage ... Seattle landmark\n", - "1 Immanuel Lutheran Church ... Seattle landmark NRHP\n", - "2 Jensen Block ... Seattle landmark\n", - "3 Lake Union Steam Plant and Hydro House Now Zymogenetics ... Seattle landmark\n", - "4 New Richmond Laundry Now part of the Alley24 development ... Seattle landmark\n", - "5 St. Spiridon Russian Orthodox Cathedral ... Seattle landmark\n", - "6 Supply Laundry Building Now part of the Stackhouse development ... Seattle landmark NRHP\n", - "\n", - "[7 rows x 3 columns]},\n", - " { 'answer': '8',\n", - " 'context': Years Venue Location\n", - "0 1989 Bamm Hollow Country Club Lincroft , New Jersey\n", - "1 1987-88 Navesink Country Club Middletown , New Jersey\n", - "2 1985-86 Fairmount Country Club Chatham , New Jersey\n", - "3 1983-84 Upper Montclair Country Club Clifton , New Jersey\n", - "4 1982 Wykagyl Country Club New Rochelle , New York\n", - "5 1981 Ridgewood Country Club Paramus , New Jersey\n", - "6 1979-80 Upper Montclair Country Club Clifton , New Jersey\n", - "7 1976-78 Forsgate Country Club Monroe Township , New Jersey},\n", - " { 'answer': '8',\n", - " 'context': Model Specification ... Prime mover Power output\n", - "0 RS-1 E-1641A ... 6-539T 1,000 hp ( 0.75 MW )\n", - "1 RS-2 E-1661 , E-1661A , E-1661B ... 12-244 1,500 hp ( 1.12 MW )\n", - "2 RS-2 E-1661C ... 12-244 1,600 hp ( 1.19 MW )\n", - "3 RS-3 E-1662 , E-1662A , E-1662B ... 12-244 1,600 hp ( 1.19 MW )\n", - "4 RS-11 DL-701 ... 12-251 1,800 hp ( 1.34 MW )\n", - "5 RS-27 DL-640 ... 16-251 2,400 hp ( 1.79 MW )\n", - "6 RS-32 DL-721 ... 12-251 2,000 hp ( 1.49 MW )\n", - "7 RS-36 DL-701XAP ... 12-251 1,800 hp ( 1.34 MW )\n", - "\n", - "[8 rows x 7 columns]},\n", - " { 'answer': '10',\n", - " 'context': Name or designation ... Notes\n", - "0 Aluminum Overcast ... One of only ten flyable B-17s\n", - "1 Avro Lancaster PA474 ... One of only two Lancasters in flying condition in the world\n", - "2 Avro Vulcan XH558 , aka Spirit of Great Britain ... The only Cold War / Falklands War -era Vulcan bomber to fly after 1986 . Res...\n", - "3 Douglas DC-7B N836D ... \n", - "4 Douglas R4D-3 N763A ... Used by the US Navy during World War II . Placed on the National Register of...\n", - "5 FIFI ... One of only two B-29s flying\n", - "6 Glacier Girl ... Forced to land in Greenland in 1942 along with five other P-38s and two B-17...\n", - "7 Hawker Hurricane PZ865 ... Last Hurricane produced . Retained by Hawker Aircraft for trials work . Give...\n", - "8 My Gal Sal ... Forced to land on the Greenland icecap during World War II and abandoned , a...\n", - "9 Piccadilly Lilly II ... Last B-17 to serve in the US Air Force , flying her last mission in 1959 . U...\n", - "10 The Pink Lady ... Only flying B-17 survivor to have seen action in Europe during World War II\n", - "11 Sally B ... Only airworthy B-17 left in Europe . Used in the 1990 film Memphis Belle\n", - "12 Sentimental Journey ... Based at the Commemorative Air Force Museum in Mesa , Arizona , and regularl...\n", - "13 Shoo Shoo Baby ... Crash-landed in Sweden in 1944 . Restored from 1978 to 1988\n", - "14 Swamp Ghost ... Ran out of fuel and crash-landed in a swamp in Papua New Guinea . Recovered ...\n", - "15 Texas Raiders ... Maintained and flown by the Commemorative Air Force ( formerly Confederate A...\n", - "16 Thunderbird ... Housed at the Lone Star Flight Museum in Galveston , Texas\n", - "17 Worry Bird ... Served in World War II and the Korean War before being retired in 1957 and p...\n", - "18 Yankee Lady ... Flyable\n", - "\n", - "[19 rows x 6 columns]},\n", - " { 'answer': '13',\n", - " 'context': N Year Country ... Link Remark K\n", - "0 003+ 2013 INDIA ... LK RK K\n", - "1 005 2006 USA ... LK RK K\n", - "2 010 2014 ZAF ... LK RK K\n", - "3 020 2010 USA ... LK RK K\n", - "4 030 201 ? USA ... LK RK K\n", - "5 040 2007 USA ... LK RK K\n", - "6 042 2004 USA ... LK Only G-S With Large Battery K\n", - "7 050 201 ? USA ... LK RK K\n", - "8 100 20 ? ? USA ... LK RK K\n", - "9 200 20 ? ? USA ... LK RK K\n", - "10 300 2013 EUR ... LK RK K\n", - "11 400 20 ? ? USA ... LK RK K\n", - "12 995 20 ? ? USA ... LK RK K\n", - "\n", - "[13 rows x 12 columns]},\n", - " { 'answer': '5',\n", - " 'context': Team ... Capacity\n", - "0 Barnsley ... 23,009\n", - "1 Blackpool ... 16,750\n", - "2 Bradford City ... 25,136\n", - "3 Burton Albion ... 6,912\n", - "4 Bury ... 11,840\n", - "5 Chesterfield ... 10,400\n", - "6 Colchester United ... 10,105\n", - "7 Coventry City ... 32,500\n", - "8 Crewe Alexandra ... 10,066\n", - "9 Doncaster Rovers ... 15,231\n", - "10 Fleetwood Town ... 5,311\n", - "11 Gillingham ... 11,582\n", - "12 Millwall ... 20,146\n", - "13 Oldham Athletic ... 13,512\n", - "14 Peterborough United ... 14,319\n", - "15 Port Vale ... 18,947\n", - "16 Rochdale ... 10,249\n", - "17 Scunthorpe United ... 9,183\n", - "18 Sheffield United ... 32,702\n", - "19 Shrewsbury Town ... 9,875\n", + "[ { 'answer': 'December 16 , 2014',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear Xrd : Sign December 16 , 2014 \n", + "1 BlazBlue : Chrono Phantasma Extend June 30 , 2015 \n", + "2 Aegis of Earth : Protonovus Assault March 15 , 2016 \n", + "3 BlazBlue : Central Fiction October 6 , 2016 \n", + "4 Chronicles of Teddy : Harmony of Exidus March 29 , 2016 \n", + "5 Guilty Gear Xrd : Revelator June 7 , 2016 \n", + "6 Exist Archive : The Other Side of the Sky October 18 , 2016 \n", + "7 Guilty Gear Xrd : Rev 2 May 25 , 2017 \n", + "8 Under Night In-Birth Exe : Late [ st ] Late 2017 \n", + "9 School Girl/Zombie Hunter Late 2017 \n", + "10 Tokyo Xanadu eX+ 2017 \n", + "11 Code : Realize ~Bouquet of Rainbows~ 2018 \n", + "12 Death Mark 2018 \n", + "13 NG ( Visual Novel ) 2019 \n", "\n", - "[20 rows x 4 columns]},\n", - " { 'answer': '7',\n", - " 'context': Resource Name ... Added\n", - "0 Whitfield Estates-Broughton Street Historic District ... October 29 , 1993\n", - "1 John M. Beasley House ... March 5 , 1996\n", - "2 Whitfield Estates-Lantana Avenue Historic District ... March 8 , 1997\n", - "3 Austin House ... February 5 , 1998\n", - "4 Reid-Woods House ... August 31 , 2000\n", - "5 Villa Serena Apartments ... September 29 , 2000\n", - "6 Paul M. Souder House ... November 2 , 2000\n", - "7 Stevens-Gilchrist House ... August 17 , 2001\n", - "\n", - "[8 rows x 3 columns]},\n", - " { 'answer': '19',\n", - " 'context': Name ( Alternative names in parenthesis ) ... Carries\n", - "0 Arboretum Sewer Trestle ... Sewer and a footpath\n", - "1 Ballard Bridge ( 15th Avenue Bridge ) ... 15th Avenue NW\n", - "2 Cowen Park Bridge ... 15th Avenue NE\n", - "3 First Avenue South Bridge ... State Route 99\n", - "4 Fremont Bridge ( Fremont Avenue Bridge ) ... Road connecting Fremont Avenue N and 4th Avenue N\n", - "5 George Washington Memorial Bridge ( Aurora Bridge ) ... State Route 99\n", - "6 Homer M. Hadley Memorial Bridge ( Third Lake Washington Bridge ) ... Interstate 90\n", - "7 Jeanette Williams Memorial Bridge ( West Seattle Bridge ) ... Road connecting Fauntleroy Way SW and the Spokane Street Viaduct\n", - "8 Jose Rizal Bridge ( 12th Avenue South Bridge ) ... 12th Avenue S and Interstate 90\n", - "9 Lacey V. Murrow Memorial Bridge ... Interstate 90\n", - "10 Magnolia Bridge ... W Garfield Street\n", - "11 Montlake Bridge ... State Route 513\n", - "12 North Queen Anne Drive Bridge ... N Queen Anne Drive\n", - "13 Salmon Bay Bridge ... BNSF Railway\n", - "14 Ship Canal Bridge ... Interstate 5\n", - "15 Schmitz Park Bridge ... SW Admiral Way\n", - "16 Spokane Street Bridge ... SW Spokane Street\n", - "17 SR 520 Albert D. Rosellini Evergreen Point Floating Bridge ( Evergreen Point... ... State Route 520\n", - "18 20th Avenue NE Bridge ( Ravenna Park Bridge ) ... 20th Avenue NE ( pedestrian access only )\n", - "19 University Bridge ... Eastlake Avenue NE\n", - "\n", - "[20 rows x 6 columns]},\n", - " { 'answer': '8',\n", - " 'context': Location ... Comments\n", - "0 Ayr ... Known as Wonderwest World 1988-1998 ; operated as Craig Tara by Haven since ...\n", - "1 Bahamas ... The site is now occupied by a new hotel and marina complex known as Old Baha...\n", - "2 Barry Island ... Operated independently until closure in 1996 . Demolished in 2005\n", - "3 Bognor Regis ... Known as Southcoast World 1987-1998 . Still open as Butlins Bognor Regis\n", - "4 Clacton ... Demolished , now a housing estate . Small area yet to be redeveloped\n", - "5 Filey Holiday Camp ... Operated independently for six weeks in 1986 , but the venture failed and it...\n", - "6 Minehead ... Known as Somerwest World 1986-1998 . Still open as Butlins Minehead 30 April...\n", - "7 Mosney ... Operated independently until closure and conversion into an Irish Government...\n", - "8 Pwllheli ... Known as Starcoast World 1990-1998 ; operated as Hafan Y Mor by Haven since ...\n", - "9 Skegness ... Known as Funcoast World 1987-1998 . Still open as Butlins Skegness\n", - "\n", - "[10 rows x 4 columns]}]\n" + " Developer ( s ) Platform ( s ) \n", + "0 Arc System Works PlayStation 4 \n", + "1 Arc System Works PlayStation 4 \n", + "2 Acquire PlayStation 4 \n", + "3 Arc System Works PlayStation 4 \n", + "4 LookAtMyGame PlayStation 4 ( PSN ) \n", + "5 Arc System Works PlayStation 4 \n", + "6 Spike Chunsoft , tri-Ace PlayStation 4 \n", + "7 Arc System Works PlayStation 4 \n", + "8 Ecole Software , French Bread PlayStation 4 \n", + "9 Tamsoft PlayStation 4 \n", + "10 Falcom PlayStation 4 \n", + "11 Otomate PlayStation 4 \n", + "12 Experience Inc PlayStation 4 \n", + "13 Experience Inc PlayStation 4 },\n", + " { 'answer': 'October 7 , 2008',\n", + " 'context': Title \\\n", + "0 Battle Fantasia \n", + "1 Guilty Gear 2 : Overture \n", + "2 BlazBlue : Calamity Trigger \n", + "3 0-D Beat Drop \n", + "4 Record of Agarest War \n", + "5 DeathSmiles \n", + "6 BlazBlue : Continuum Shift \n", + "7 Record of Agarest War Zero \n", + "8 Bit.Trip Presents ... Runner2 : Future Legend of Rhythm Alien \n", + "9 A.R.E.S : Extinction Agenda EX \n", + "\n", + " First release Developer ( s ) Platform ( s ) \n", + "0 September 16 , 2008 Arc System Works Xbox 360 \n", + "1 October 7 , 2008 Arc System Works Xbox 360 \n", + "2 June 30 , 2009 Arc System Works Xbox 360 \n", + "3 November 11 , 2009 Cyclone Zero Xbox 360 ( XBLA ) \n", + "4 April 27 , 2010 Compile Heart , Red Entertainment Xbox 360 \n", + "5 June 28 , 2010 Cave Xbox 360 \n", + "6 July 27 , 2010 Arc System Works Xbox 360 \n", + "7 June 14 , 2011 Compile Heart , Red Entertainment Xbox 360 \n", + "8 February 27 , 2013 Gaijin Games Xbox 360 ( XBLA ) \n", + "9 October 2 , 2013 Extend Studio Xbox 360 ( XBLA ) },\n", + " { 'answer': 'April 7 , 2009',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", + "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", + "2 Cho Aniki Zero March 25 , 2010 \n", + "3 Mimana Iyar Chronicle March 30 , 2010 \n", + "4 Gladiator Begins September 14 , 2010 \n", + "5 Blazing Souls Accelate October 19 , 2010 \n", + "6 Jikandia : The Timeless Land March 15 , 2011 \n", + "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", + "8 Fate/Extra November 1 , 2011 \n", + "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", + "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", + "11 Ragnarok Tactics February 19 , 2013 \n", + "12 Sweet Fuse : At Your Side August 27 , 2013 \n", + "\n", + " Developer ( s ) \\\n", + "0 Arc System Works \n", + "1 Arc System Works \n", + "2 extreme Co. , Ltd \n", + "3 Kogado Studio , Premium Agency \n", + "4 Goshow \n", + "5 Neverland \n", + "6 Opus Studio Inc \n", + "7 Arc System Works \n", + "8 Type-Moon \n", + "9 Idea Factory , Otomate \n", + "10 Idea Factory \n", + "11 GungHo Online Entertainment , Apollosoft , Chime \n", + "12 Idea Factory , Otomate , Comcept \n", + "\n", + " Platform ( s ) \n", + "0 PlayStation Portable \n", + "1 PlayStation Portable \n", + "2 PlayStation Portable ( PSN ) \n", + "3 PlayStation Portable \n", + "4 PlayStation Portable \n", + "5 PlayStation Portable \n", + "6 PlayStation Portable \n", + "7 PlayStation Portable \n", + "8 PlayStation Portable \n", + "9 PlayStation Portable \n", + "10 PlayStation Portable \n", + "11 PlayStation Portable \n", + "12 PlayStation Portable },\n", + " { 'answer': 'April 7 , 2009',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", + "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", + "2 Cho Aniki Zero March 25 , 2010 \n", + "3 Mimana Iyar Chronicle March 30 , 2010 \n", + "4 Gladiator Begins September 14 , 2010 \n", + "5 Blazing Souls Accelate October 19 , 2010 \n", + "6 Jikandia : The Timeless Land March 15 , 2011 \n", + "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", + "8 Fate/Extra November 1 , 2011 \n", + "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", + "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", + "11 Ragnarok Tactics February 19 , 2013 \n", + "12 Sweet Fuse : At Your Side August 27 , 2013 \n", + "\n", + " Developer ( s ) \\\n", + "0 Arc System Works \n", + "1 Arc System Works \n", + "2 extreme Co. , Ltd \n", + "3 Kogado Studio , Premium Agency \n", + "4 Goshow \n", + "5 Neverland \n", + "6 Opus Studio Inc \n", + "7 Arc System Works \n", + "8 Type-Moon \n", + "9 Idea Factory , Otomate \n", + "10 Idea Factory \n", + "11 GungHo Online Entertainment , Apollosoft , Chime \n", + "12 Idea Factory , Otomate , Comcept \n", + "\n", + " Platform ( s ) \n", + "0 PlayStation Portable \n", + "1 PlayStation Portable \n", + "2 PlayStation Portable ( PSN ) \n", + "3 PlayStation Portable \n", + "4 PlayStation Portable \n", + "5 PlayStation Portable \n", + "6 PlayStation Portable \n", + "7 PlayStation Portable \n", + "8 PlayStation Portable \n", + "9 PlayStation Portable \n", + "10 PlayStation Portable \n", + "11 PlayStation Portable \n", + "12 PlayStation Portable },\n", + " { 'answer': '2010',\n", + " 'context': Title Year Other artist ( s ) \\\n", + "0 Count on You 2010 Big Time Rush \n", + "1 You Got ta Want It 2011 nan \n", + "2 Chocolate Brown Eyes 2013 Salaam Remi \n", + "3 Vertigo 2013 Jason Derulo \n", + "4 Vertigo 2014 Jason Derulo \n", + "5 Playing With Fire 2015 Thomas Rhett \n", + "6 Too Late for Love 2016 DJ Antoine \n", + "7 Water Guns 2016 Todrick Hall \n", + "8 Chasing 2017 Danny Gokey \n", + "\n", + " Album \n", + "0 BTR \n", + "1 Official Gameday Music of the NFL \n", + "2 One in the Chamber \n", + "3 Tattoos \n", + "4 Talk Dirty \n", + "5 Tangled Up \n", + "6 Provocateur \n", + "7 Straight Outta Oz \n", + "8 Rise },\n", + " { 'answer': '2012',\n", + " 'context': Title Year \\\n", + "0 The American Scream 2012 \n", + "1 Dead Souls 2012 \n", + "2 Ghoul 2012 \n", + "3 Beneath 2013 \n", + "4 Chilling Visions : 5 Senses of Fear 2013 \n", + "5 The Monkey 's Paw 2013 \n", + "6 Animal 2014 \n", + "7 Deep in the Darkness 2014 \n", + "8 The Boy 2015 \n", + "9 SiREN 2016 \n", + "10 Camera Obscura 2017 \n", + "11 Dementia 13 2017 \n", + "\n", + " Production Co \n", + "0 Chiller Films Brainstorm Media \n", + "1 Chiller Films Synthetic Productions \n", + "2 Chiller Films Modernciné \n", + "3 Glass Eye Pix \n", + "4 Chiller Films Synthetic Cinema International \n", + "5 TMP Films \n", + "6 Flower Films Synthetic Cinema International \n", + "7 Chiller Films Synthetic Cinema International \n", + "8 SpectreVision \n", + "9 Studio71 \n", + "10 Chiller Films Hood River Entertainment Paper Street Pictures \n", + "11 Pipeline Entertainment Haloran LLC },\n", + " { 'answer': 'November 15 , 2007',\n", + " 'context': Title First release \\\n", + "0 Hooked ! Real Motion Fishing October 30 , 2007 \n", + "1 Guilty Gear XX Accent Core November 15 , 2007 \n", + "2 MiniCopter : Adventure Flight April 11 , 2008 \n", + "3 River City Ransom April 21 , 2008 \n", + "4 Double Dragon April 28 , 2008 \n", + "5 Renegade May 5 , 2008 \n", + "6 Castle of Shikigami III May 13 , 2008 \n", + "7 Family Table Tennis May 26 , 2008 \n", + "8 Super Dodge Ball September 22 , 2008 \n", + "9 Family Glide Hockey January 19 , 2009 \n", + "10 Bit.Trip Beat March 16 , 2009 \n", + "11 Family Pirate Party May 11 , 2009 \n", + "12 Guilty Gear XX Accent Core Plus May 12 , 2009 \n", + "13 Family Mini Golf June 22 , 2009 \n", + "14 Bit.Trip Core July 6 , 2009 \n", + "15 Family Slot Car Racing August 17 , 2009 \n", + "16 Crash ' n the Boys : Street Challenge September 14 , 2009 \n", + "17 Family Tennis September 21 , 2009 \n", + "18 Family Card Games November 2 , 2009 \n", + "19 Hooked ! Again : Real Motion Fishing November 3 , 2009 \n", + "\n", + " Developer ( s ) Platform ( s ) \n", + "0 SIMS Wii \n", + "1 Arc System Works Wii \n", + "2 Sonic Powered Wii \n", + "3 Technos Wii ( Virtual Console ) \n", + "4 Technos Wii ( Virtual Console ) \n", + "5 Technos Wii ( Virtual Console ) \n", + "6 Alfa System Wii \n", + "7 Arc System Works Wii ( WiiWare ) \n", + "8 Technos Wii ( Virtual Console ) \n", + "9 Arc System Works Wii ( WiiWare ) \n", + "10 Gaijin Games Wii ( WiiWare ) \n", + "11 Arc System Works Wii ( WiiWare ) \n", + "12 Arc System Works Wii \n", + "13 Arc System Works Wii ( WiiWare ) \n", + "14 Gaijin Games Wii ( WiiWare ) \n", + "15 Arc System Works Wii ( WiiWare ) \n", + "16 Technos Wii ( Virtual Console ) \n", + "17 Arc System Works Wii ( WiiWare ) \n", + "18 Arc System Works Wii ( WiiWare ) \n", + "19 SIMS Co. , Ltd Wii },\n", + " { 'answer': '',\n", + " 'context': Game Publisher Release Date \\\n", + "0 Super Mario 64 Nintendo September 26 , 1996 \n", + "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", + "2 Quake GT Interactive June 22 , 1996 \n", + "3 Civilization II MicroProse February 29 , 1996 \n", + "4 Tekken 2 Namco August 25 , 1996 \n", + "5 Wave Race 64 Nintendo November 1 , 1996 \n", + "6 Realms of the Haunting Interplay December 31 , 1996 \n", + "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", + "8 Resident Evil Capcom March 30 , 1996 \n", + "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", + "10 Dragon Force Sega November 30 , 1996 \n", + "11 Guardian Heroes Sega January 25 , 1996 \n", + "12 Super Mario RPG Nintendo March 9 , 1996 \n", + "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", + "14 NiGHTS into Dreams Sega July 5 , 1996 \n", + "15 Pilotwings 64 Nintendo September 26 , 1996 \n", + "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", + "\n", + " Platform ( s ) MC score GR score \n", + "0 Nintendo 64 94/100 96.41% \n", + "1 PlayStation 93/100 94.75% \n", + "2 DOS 94/100 93.22% \n", + "3 Microsoft Windows 94/100 91.29% \n", + "4 PlayStation 89/100 92.50% \n", + "5 Nintendo 64 92/100 90.67% \n", + "6 Microsoft Windows nan 91.86% \n", + "7 PlayStation 91/100 90.02% \n", + "8 PlayStation 91/100 87.23% \n", + "9 DOS 90/100 90.91% \n", + "10 Sega Saturn nan 89.64% \n", + "11 Sega Saturn nan 89.20% \n", + "12 SNES nan 89.12% \n", + "13 DOS 89/100 88.50% \n", + "14 Sega Saturn nan 88.56% \n", + "15 Nintendo 64 80/100 87.52% \n", + "16 Sega Saturn nan 87.50% },\n", + " { 'answer': '',\n", + " 'context': Game Publisher Release Date \\\n", + "0 Super Mario 64 Nintendo September 26 , 1996 \n", + "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", + "2 Quake GT Interactive June 22 , 1996 \n", + "3 Civilization II MicroProse February 29 , 1996 \n", + "4 Tekken 2 Namco August 25 , 1996 \n", + "5 Wave Race 64 Nintendo November 1 , 1996 \n", + "6 Realms of the Haunting Interplay December 31 , 1996 \n", + "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", + "8 Resident Evil Capcom March 30 , 1996 \n", + "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", + "10 Dragon Force Sega November 30 , 1996 \n", + "11 Guardian Heroes Sega January 25 , 1996 \n", + "12 Super Mario RPG Nintendo March 9 , 1996 \n", + "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", + "14 NiGHTS into Dreams Sega July 5 , 1996 \n", + "15 Pilotwings 64 Nintendo September 26 , 1996 \n", + "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", + "\n", + " Platform ( s ) MC score GR score \n", + "0 Nintendo 64 94/100 96.41% \n", + "1 PlayStation 93/100 94.75% \n", + "2 DOS 94/100 93.22% \n", + "3 Microsoft Windows 94/100 91.29% \n", + "4 PlayStation 89/100 92.50% \n", + "5 Nintendo 64 92/100 90.67% \n", + "6 Microsoft Windows nan 91.86% \n", + "7 PlayStation 91/100 90.02% \n", + "8 PlayStation 91/100 87.23% \n", + "9 DOS 90/100 90.91% \n", + "10 Sega Saturn nan 89.64% \n", + "11 Sega Saturn nan 89.20% \n", + "12 SNES nan 89.12% \n", + "13 DOS 89/100 88.50% \n", + "14 Sega Saturn nan 88.56% \n", + "15 Nintendo 64 80/100 87.52% \n", + "16 Sega Saturn nan 87.50% },\n", + " { 'answer': 'April\\xa026,\\xa02018',\n", + " 'context': No. overall No. in season Title Directed by \\\n", + "0 45 1 The Conscience Code\"\" Russell Lee Fine \n", + "1 46 2 Fear and Flesh\"\" Alexandra Kalymnios \n", + "2 47 3 Hell's Gate\"\" Constantine Makris \n", + "3 48 4 Spy Games\"\" Kevin Sullivan \n", + "4 49 5 The Blood of Romeo\"\" David McWhirter \n", + "5 50 6 The Heavens Fall\"\" Russell Lee Fine \n", + "6 51 7 Bullet Train\"[10]\" Rob Bowman \n", + "7 52 8 Deep Cover\"[10]\" Jim McKay \n", + "8 53 9 Fear Feargach\"[10]\" P. J. Pesce \n", + "9 54 10 No Place Is Home\"[10]\" Kenneth Fink \n", + "10 55 11 The Art of War\"[10]\" Jennifer Phang \n", + "11 56 12 Ghosts\"[10]\" Russell Lee Fine \n", + "12 57 13 Who Are You?\"[10]\" Russell Lee Fine \n", + "\n", + " Written by Original air date [3] \\\n", + "0 Michael Seitzman April 26, 2018 \n", + "1 Dave Kalstein May 3, 2018 \n", + "2 Tom Mularz May 10, 2018 \n", + "3 Julia Cohen May 25, 2018 \n", + "4 Adam Armus June 1, 2018 \n", + "5 Michael Brandon Guercio June 15, 2018 \n", + "6 Tom Mularz & Gideon Yago June 22, 2018 \n", + "7 Cole Maliska & Joe Webb June 29, 2018 \n", + "8 Dave Kalstein & Matthew Klam July 6, 2018 \n", + "9 Gisselle Legere & Julia Cohen July 13, 2018 \n", + "10 Adam Armus & Tom Mularz July 20, 2018 \n", + "11 Julia Cohen & Matthew Klam July 27, 2018 \n", + "12 Dave Kalstein & Michael Seitzman August 3, 2018 \n", + "\n", + " U.S. viewers (millions) \n", + "0 2.66[4] \n", + "1 2.15[5] \n", + "2 1.97[6] \n", + "3 2.62[7] \n", + "4 2.99[8] \n", + "5 2.56[9] \n", + "6 TBD \n", + "7 TBD \n", + "8 TBD \n", + "9 TBD \n", + "10 TBD \n", + "11 TBD \n", + "12 TBD },\n", + " { 'answer': \"Don't Push It\",\n", + " 'context': Position Name Rider Age Weight Starting price \\\n", + "0 1st Don't Push It Tony McCoy 10 11-05 10/1 JF \n", + "1 2nd Black Apalachi Denis O'Regan 11 11-06 14/1 \n", + "2 3rd State of Play Paul Moloney 10 10-11 16/1 \n", + "3 4th Big Fella Thanks Barry Geraghty 8 10-12 10/1 JF \n", + "4 5th Hello Bud Sam Twiston-Davies 12 10-06 20/1 \n", + "5 6th Snowy Morning David Casey 10 10-13 14/1 \n", + "6 7th Character Building Nina Carberry 10 10-11 16/1 \n", + "7 8th Cloudy Lane Jason Maguire 10 11-03 25/1 \n", + "8 9th Tricky Trickster Richard Johnson 7 11-04 16/1 \n", + "9 10th Joe Lively Joe Tizzard 11 11-06 33/1 \n", + "10 11th Cerium Davy Russell 9 10-06 50/1 \n", + "11 12th Comply or Die Timmy Murphy 11 10-05 12/1 \n", + "12 13th Piraya Johnny Farrelly 7 10-07 100/1 \n", + "\n", + " Distance Prize money \n", + "0 Winner by 5 lengths £521,052 \n", + "1 5 lengths £196,285 \n", + "2 20 lengths £98,235 \n", + "3 3 lengths £49,117 \n", + "4 7 lengths £24,605 \n", + "5 1½ lengths £12,302 \n", + "6 Neck £6,105 \n", + "7 12 lengths £3,145 \n", + "8 ¾ length Nil \n", + "9 Short head Nil \n", + "10 A distance Nil \n", + "11 8 lengths Nil \n", + "12 A distance Nil },\n", + " { 'answer': '5 June 2009',\n", + " 'context': Episode First broadcast Seans team \\\n", + "0 8x01 5 June 2009 Johnny Vegas and Alex Zane \n", + "1 8x02 12 June 2009 Jeremy Clarkson and James McQuillan \n", + "2 8x03 19 June 2009 Josie Long and Jamelia \n", + "3 8x04 26 June 2009 Tom Felton and Richard E. Grant \n", + "4 8x05 3 July 2009 Yvette Fielding and David Walliams \n", + "5 8x06 10 July 2009 Reginald D. Hunter and Kelly Osbourne \n", + "6 8x07 17 July 2009 Kevin Bridges and Patrick Kielty \n", + "\n", + " Jasons team Scores \n", + "0 Ulrika Jonsson and Jack Whitehall 5–5 \n", + "1 David Walliams and Holly Walsh 2–7 \n", + "2 Mark Watson and Claudia Winkleman 4–4 \n", + "3 Alan Cumming and Lauren Laverne 4–2 \n", + "4 Reginald D. Hunter and Phil Spencer 5–4 \n", + "5 Terry Christian and Isy Suttie 4–6 \n", + "6 Rhod Gilbert and Shappi Khorsandi 3–7 },\n", + " { 'answer': '2017',\n", + " 'context': Year Title Role \\\n", + "0 2017 Mass Effect : Andromeda Various \n", + "1 2017 Lone Echo Hera \n", + "2 2017 Madden NFL 18 : Longshot Various \n", + "3 2017 FIFA 18 Beatriz Villanova \n", + "4 2017 Puzzle Fighter Additional Voices \n", + "5 2017 Need for Speed Payback Additional Voices \n", + "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", + "7 2018 FIFA 19 Beatriz Villanova \n", + "8 2019 Crackdown 3 Additional Voices \n", + "9 2019 Anthem Princess Zhim \n", + "10 2019 FIFA 20 Beatriz Villanova \n", + "\n", + " Notes \n", + "0 Performance Capture Actor \n", + "1 Voice acting \n", + "2 Motion capture actor \n", + "3 Voice acting \n", + "4 nan \n", + "5 nan \n", + "6 Voice acting \n", + "7 Voice acting \n", + "8 nan \n", + "9 Voice acting \n", + "10 Voice acting },\n", + " { 'answer': '2017',\n", + " 'context': Year Title Role \\\n", + "0 2017 Mass Effect : Andromeda Various \n", + "1 2017 Lone Echo Hera \n", + "2 2017 Madden NFL 18 : Longshot Various \n", + "3 2017 FIFA 18 Beatriz Villanova \n", + "4 2017 Puzzle Fighter Additional Voices \n", + "5 2017 Need for Speed Payback Additional Voices \n", + "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", + "7 2018 FIFA 19 Beatriz Villanova \n", + "8 2019 Crackdown 3 Additional Voices \n", + "9 2019 Anthem Princess Zhim \n", + "10 2019 FIFA 20 Beatriz Villanova \n", + "\n", + " Notes \n", + "0 Performance Capture Actor \n", + "1 Voice acting \n", + "2 Motion capture actor \n", + "3 Voice acting \n", + "4 nan \n", + "5 nan \n", + "6 Voice acting \n", + "7 Voice acting \n", + "8 nan \n", + "9 Voice acting \n", + "10 Voice acting },\n", + " { 'answer': '7 May 2013 (hardcover)',\n", + " 'context': # Title Publisher \\\n", + "0 1 Dead Until Dark Ace Books \n", + "1 2 Living Dead in Dallas Ace Books \n", + "2 3 Club Dead Ace Books \n", + "3 4 Dead to the World Ace Hardcover \n", + "4 5 Dead as a Doornail Ace Hardcover \n", + "5 6 Definitely Dead Ace Hardcover \n", + "6 7 All Together Dead Ace Hardcover \n", + "7 8 From Dead to Worse Ace Hardcover \n", + "8 9 Dead and Gone Ace Hardcover \n", + "9 10 Dead in the Family Ace Hardcover \n", + "10 11 Dead Reckoning Ace Hardcover \n", + "11 12 Deadlocked Ace Hardcover \n", + "12 13 Dead Ever After Ace Hardcover \n", + "\n", + " Release Length \\\n", + "0 May 2001 (paperback) January 2008 (hardcover) 291 pp \n", + "1 April 2002 (paperback) January 2009 (hardcover) 291 pp \n", + "2 May 2003 (paperback) March 2010 (hardcover) 292 pp \n", + "3 May 2004 (hardcover) May 2005 (paperback) 291 pp \n", + "4 May 2005 (hardcover) April 2006 (paperback) 295 pp \n", + "5 May 2006 (hardcover) March 2007 (paperback) 324 pp \n", + "6 May 2007 (hardcover) March 2008 (paperback) 336 pp \n", + "7 May 2008 (hardcover) March 2009 (paperback) 359 pp \n", + "8 May 2009 (hardcover) April 2010 (paperback) 312 pp \n", + "9 May 2010 (hardcover) March 2011 (paperback) 311 pp \n", + "10 May 2011 (hardcover) March 2012 (paperback) 325 pp \n", + "11 May 2012 (hardcover) March 2013 (paperback) 336 pp \n", + "12 7 May 2013 (hardcover) 352 pp \n", + "\n", + " Hardcover Paperback \n", + "0 ISBN 0-441-01597-2 ISBN 0-441-00853-4 \n", + "1 ISBN 0-441-01673-1 ISBN 0-441-00923-9 \n", + "2 ISBN 0-441-01910-2 ISBN 0-441-01051-2 \n", + "3 ISBN 0-441-01167-5 ISBN 0-441-01218-3 \n", + "4 ISBN 0-441-01279-5 ISBN 0-441-01333-3 \n", + "5 ISBN 0-441-01400-3 ISBN 0-441-01491-7 \n", + "6 ISBN 0-441-01494-1 ISBN 0-441-01581-6 \n", + "7 ISBN 0-441-01589-1 ISBN 0-441-01701-0 \n", + "8 ISBN 0-441-01715-0 ISBN 0-441-01851-3 \n", + "9 ISBN 0-441-01864-5 ISBN 0-441-02015-1 \n", + "10 ISBN 0-441-02031-3 ISBN 0-441-02060-7 \n", + "11 ISBN 1-937007-44-8 ISBN 0-425-25638-3 \n", + "12 ISBN 193700788X ISBN n/a },\n", + " { 'answer': '2',\n", + " 'context': Pos Artist \\\n", + "0 1 Daniel Lavoie , Patrick Fiori & Garou \n", + "1 2 Manau \n", + "2 3 Céline Dion \n", + "3 4 Lââm \n", + "4 5 Nomads \n", + "5 6 Hermes House Band \n", + "6 7 Brandy & Monica \n", + "7 8 Ménélik & Imane D \n", + "8 9 Ricky Martin \n", + "9 10 Des'ree \n", + "\n", + " Title Sales* \n", + "0 Belle 2,221,000 \n", + "1 La Tribu de Dana 1,415,000 \n", + "2 My Heart Will Go On 1,197,000 \n", + "3 Chanter pour ceux qui sont loin de chez eux 963,000 \n", + "4 Yakalelo 846,000 \n", + "5 I Will Survive 812,000 \n", + "6 The Boy Is Mine 662,000 \n", + "7 Bye bye 613,000 \n", + "8 La Copa De La Vida 563,000 \n", + "9 Life 555,000 },\n", + " { 'answer': '2005',\n", + " 'context': Year Title \\\n", + "0 2005 Kiss Kiss Bang Bang \n", + "1 2006 Bambi II \n", + "2 2006 Curious George \n", + "3 2006 Ice Age: The Meltdown \n", + "4 2006 Over the Hedge \n", + "5 2006 Grilled \n", + "6 2008 One Missed Call \n", + "7 2008 Horton Hears a Who! \n", + "8 2008 Speed Racer \n", + "9 2009 Tales from the Catholic Church of Elvis! \n", + "10 2009 Final Fantasy VII: Advent Children Complete \n", + "11 2009 Life Is Hot in Cracktown \n", + "12 2009 Duress \n", + "13 2009 Opposite Day \n", + "14 2009 Cloudy with a Chance of Meatballs \n", + "15 2009 Afro Samurai: Resurrection \n", + "16 2010 Killers \n", + "17 2010 Nic & Tristan Go Mega Dega \n", + "18 2010 DC Showcase: Green Arrow \n", + "19 2011 Chaperone, TheThe Chaperone \n", + "20 2011 Phineas and Ferb: Across the 2nd Dimension \n", + "21 2011 Fred 2: Night of the Living Fred \n", + "22 2012 Excision \n", + "23 2012 ParaNorman \n", + "24 2012/13 Batman: The Dark Knight Returns – Parts 1 & 2 \n", + "25 2012 Sofia the First: Once Upon a Princess \n", + "26 2013 Dora the Explorer and the Destiny Medallion \n", + "27 2013 Scooby-Doo! Stage Fright \n", + "28 2013 Sofia the First: The Floating Palace \n", + "29 2013 Tad, The Lost Explorer \n", + "30 2014 Mr. Peabody & Sherman \n", + "31 2015 Safelight \n", + "32 2016 Elena and the Secret of Avalor \n", + "33 2017 Smurfs: The Lost Village \n", + "34 2017 The Last Movie Star \n", + "\n", + " Role \\\n", + "0 Young Harmony Faith Lane \n", + "1 Thumper's sister \n", + "2 Kid \n", + "3 Various characters \n", + "4 Additional voices \n", + "5 Dolly \n", + "6 Ellie Layton \n", + "7 Various characters \n", + "8 Young Trixie Shimura \n", + "9 Little girl \n", + "10 Marlene Wallace \n", + "11 Suzie \n", + "12 Sarah Barnett \n", + "13 Carla Benson \n", + "14 Various characters \n", + "15 Young Sio \n", + "16 Sadie \n", + "17 Lisa \n", + "18 Princess Perdita \n", + "19 Sally \n", + "20 Gretchen / Various characters \n", + "21 Talia \n", + "22 Grace \n", + "23 Blithe Hollow – kid \n", + "24 Carrie Kelley/Robin (voice) \n", + "25 Sofia \n", + "26 Dora \n", + "27 Chrissy Damon \n", + "28 Sofia \n", + "29 Sara Lavrof \n", + "30 Penny Peterson \n", + "31 Kate \n", + "32 Sofia \n", + "33 Smurf Lily \n", + "34 Lil \n", + "\n", + " Notes \n", + "0 nan \n", + "1 Voice role \n", + "2 Voice role \n", + "3 Voice role \n", + "4 Voice role \n", + "5 nan \n", + "6 nan \n", + "7 Voice role \n", + "8 nan \n", + "9 nan \n", + "10 Voice role \n", + "11 nan \n", + "12 nan \n", + "13 nan \n", + "14 Voice role \n", + "15 Voice role \n", + "16 nan \n", + "17 nan \n", + "18 Voice role \n", + "19 nan \n", + "20 Voice role \n", + "21 nan \n", + "22 nan \n", + "23 Voice role \n", + "24 Direct-to-video; originally released separately \n", + "25 Voice role \n", + "26 YouTube short film series by CollegeHumor \n", + "27 Voice role \n", + "28 Voice role \n", + "29 Voice role \n", + "30 Voice role \n", + "31 nan \n", + "32 Voice role \n", + "33 Voice role \n", + "34 nan },\n", + " { 'answer': '2',\n", + " 'context': Number Album Artist \\\n", + "0 1 Tha Carter IV Lil Wayne \n", + "1 2 Take Care Drake \n", + "2 3 Watch the Throne Jay-Z & Kanye West \n", + "3 4 Thug Motivation 103 : Hustlerz Ambition Young Jeezy \n", + "4 5 Cole World : The Sideline Story J. Cole \n", + "5 6 Lasers Lupe Fiasco \n", + "6 7 Rolling Papers Wiz Khalifa \n", + "7 8 Hell : The Sequel Bad Meets Evil \n", + "8 9 Ambition Wale \n", + "9 10 Blue Slide Park Mac Miller \n", + "\n", + " 1st-week sales 1st-week position \n", + "0 964,000 1 \n", + "1 631,000 1 \n", + "2 436,000 1 \n", + "3 233,000 3 \n", + "4 217,000 1 \n", + "5 204,000 1 \n", + "6 197,000 2 \n", + "7 171,000 1 \n", + "8 164,000 2 \n", + "9 144,000 1 },\n", + " { 'answer': '15 April 2005',\n", + " 'context': Release date Release title Country Publisher \\\n", + "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", + "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", + "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", + "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", + "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", + "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", + "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", + "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", + "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", + "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", + "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", + "\n", + " Format Language Subtitles Notes \n", + "0 NTSC English Traditional Chinese 1 VCD \n", + "1 NTSC English Traditional Chinese 1 VCD \n", + "2 NTSC English Traditional Chinese 1 VCD \n", + "3 NTSC English Traditional Chinese 1 VCD \n", + "4 NTSC English Traditional Chinese 1 VCD \n", + "5 NTSC English Traditional Chinese 1 VCD \n", + "6 NTSC English Traditional Chinese 1 VCD \n", + "7 NTSC English Traditional Chinese 1 VCD \n", + "8 NTSC English Traditional Chinese 1 VCD \n", + "9 NTSC English Traditional Chinese 1 VCD \n", + "10 NTSC English Traditional Chinese 10 VCD's },\n", + " { 'answer': '15 April 2005',\n", + " 'context': Release date Release title Country Publisher \\\n", + "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", + "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", + "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", + "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", + "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", + "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", + "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", + "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", + "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", + "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", + "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", + "\n", + " Format Language Subtitles Notes \n", + "0 NTSC English Traditional Chinese 1 VCD \n", + "1 NTSC English Traditional Chinese 1 VCD \n", + "2 NTSC English Traditional Chinese 1 VCD \n", + "3 NTSC English Traditional Chinese 1 VCD \n", + "4 NTSC English Traditional Chinese 1 VCD \n", + "5 NTSC English Traditional Chinese 1 VCD \n", + "6 NTSC English Traditional Chinese 1 VCD \n", + "7 NTSC English Traditional Chinese 1 VCD \n", + "8 NTSC English Traditional Chinese 1 VCD \n", + "9 NTSC English Traditional Chinese 1 VCD \n", + "10 NTSC English Traditional Chinese 10 VCD's },\n", + " { 'answer': '1991',\n", + " 'context': Year Film Song \\\n", + "0 1991 House Party 2 Ai n't Gon na Hurt Nobody \n", + "1 1991 Nothing But Trouble Same Song \n", + "2 1994 Above the Rim Regulate \n", + "3 1994 Street Fighter Something Kinda Funky \n", + "4 1995 Friday Keep Their Heads Ringin \n", + "5 1999 Office Space Shove This Jay-Oh-Bee \n", + "6 2001 The Wash Bad Intentions \n", + "7 2002 8 Mile Lose Yourself \n", + "8 2002 Like Mike Basketball \n", + "9 2002 Like Mike Take Ya Home \n", + "10 2003 2 Fast 2 Furious Act a Fool \n", + "\n", + " Artist \n", + "0 Kid ' n Play \n", + "1 Digital Underground ft. 2Pac \n", + "2 Warren G ft. Nate Dogg \n", + "3 Rally Ral \n", + "4 Dr. Dre \n", + "5 Canibus and Biz Markie \n", + "6 Dr. Dre ft. Knoc-turn'al \n", + "7 Eminem \n", + "8 Lil ' Bow Wow ft. Fundisha , Jermaine Dupri , and Fabolous \n", + "9 Lil ' Bow Wow \n", + "10 Ludacris },\n", + " { 'answer': '1987 1988 1989',\n", + " 'context': Title Year \\\n", + "0 Bomber King / RoboWarrior 1987 1988 1989 \n", + "1 Bomber King : Scenario 2 / Blaster Master Boy/Jr 1991 1992 \n", + "2 Bomberman : Panic Bomber 1994 1995 \n", + "3 Bomberman B-Daman 1996 \n", + "4 Atomic Bomberman 1997 \n", + "5 Bomberman Wars 1998 \n", + "6 Bomberman Fantasy Race 1998 1999 2000 \n", + "7 Bomberman B-Daman Bakugaiden : The Road to Victory 1999 \n", + "8 Bomberman B-Daman Bakugaiden V : Final Mega Tune 2000 \n", + "9 Bomberman Kart 2001 2003 \n", + "10 Bomberman Jetters : The Legendary Bomberman 2002 \n", + "11 Bomberman Jetters 2002 2004 \n", + "12 Bomberman Jetters Game Collection 2003 \n", + "13 DreamMix TV World Fighters 2003 \n", + "14 BoBomberman 2004 \n", + "15 Bomberman Battles / Bomberman Hardball 2004 2005 \n", + "16 Bomberman : Bakufuu Sentai Bombermen 2006 \n", + "17 Bomberman : Act Zero 2006 \n", + "18 Bomberman : Disney Stitch Edition 2010 \n", + "19 Bomberman : Chains 2011 \n", + "\n", + " Platforms \\\n", + "0 Famicom / NES , MSX \n", + "1 Game Boy \n", + "2 PC Engine CD , Neo Geo , Super Famicom , NEC PC-9821 , FM Towns , Sharp X680... \n", + "3 Super Famicom \n", + "4 PC ( Windows ) \n", + "5 PlayStation , Sega Saturn \n", + "6 PlayStation \n", + "7 Game Boy Color \n", + "8 Game Boy Color \n", + "9 PlayStation 2 \n", + "10 Game Boy Advance \n", + "11 GameCube , PlayStation 2 \n", + "12 Game Boy Advance \n", + "13 GameCube , PlayStation 2 \n", + "14 Game Boy Advance \n", + "15 PlayStation 2 \n", + "16 PlayStation Portable \n", + "17 Xbox 360 \n", + "18 Mobile Phone \n", + "19 iOS \n", + "\n", + " Notes \n", + "0 Released outside Japan under the name RoboWarrior ; Bomberman-like progressi... \n", + "1 Sequel to Bomber King ; slightly altered and released by Sunsoft in America ... \n", + "2 Puzzle game , similar to Puyo Puyo and Tetris ; all versions except for Neo ... \n", + "3 Japan-only , part of the B-Daman series \n", + "4 10-player support through IPX networking ; first Bomberman title for Windows... \n", + "5 Japan-only release ; tactical role-playing game ( TRPG ) \n", + "6 Racing game \n", + "7 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", + "8 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", + "9 Released in Japan and PAL regions only ; kart racing game \n", + "10 Japan-only release ; based on the anime series , Bomberman Jetters \n", + "11 PS2 release was Japan-only ; based on the Bomberman Jetters anime series \n", + "12 Japan-only release ; based on the anime series , Bomberman Jetters \n", + "13 Released in Japan only ; crossover fighting game featuring Bomberman as a pl... \n", + "14 Minigame based on the NES version of Bomberman , but using characters from t... \n", + "15 Released in Japan and PAL regions only ; sports and party game \n", + "16 Japan-only release \n", + "17 Realistic re-envisioning of the character \n", + "18 A Bomberman Game based on the anime Stitch ! \n", + "19 Puzzle game , similar to Bejeweled },\n", + " { 'answer': '2010',\n", + " 'context': Year Journalists \\\n", + "0 2010 Dwayne Grant ( Gold Coast Publications ) \n", + "1 2011 Leanne West ( Network Ten ) \n", + "2 2012 Stathi Paxinos ( Fairfax Media ) \n", + "3 2013 Mike Dalton ( Nine Network ) \n", + "4 2014 Emma Greenwood ( Gold Coast Bulletin ) \n", + "5 2015 Amanda Shalala ( ABC Radio Grandstand ) \n", + "6 2016 Seven Network \n", + "7 2017 Jim Callinan ( Sky News Australia ) \n", + "8 2018 Matt Carmichael ( Seven Network ) \n", + "9 2019 Australian Broadcasting Corporation \n", + "\n", + " Story Title \n", + "0 Never Say Never \n", + "1 David and Michelle \n", + "2 London Paralympic Games \n", + "3 Special Olympics Junior Games \n", + "4 He who dares lives \n", + "5 Grandstand para-sport profiles \n", + "6 ' Rio 2016 Paralympic Games ' \n", + "7 Oz Day 10K Wheelchair Road Race ' \n", + "8 2018 Winter Paralympics and 2018 Commonwealth Games \n", + "9 2018 Invictus Games },\n", + " { 'answer': 'January 31',\n", + " 'context': Release Title System \\\n", + "0 January 25 Guardian Heroes Sat \n", + "1 January 26 Mystaria : The Realms of Lore Sat \n", + "2 January 29 Duke Nukem 3D DOS \n", + "3 January 31 Mega Man X3 SNES \n", + "4 February 9 Bahamut Lagoon SNES \n", + "5 February 23 Front Mission : Gun Hazard SNES \n", + "6 February 27 Pokémon Red and Green GB \n", + "7 February 29 Civilization II Win \n", + "8 February 29 Ripper ( video game ) DOS \n", + "9 February 29 Rise 2 : Resurrection Win , Sat , PS1 \n", + "10 February 29 Terra Nova : Strike Force Centauri DOS \n", + "11 February 29 Zork : Nemesis Win \n", + "12 March 9 Super Mario RPG SNES \n", + "13 March 21 Kirby Super Star SNES \n", + "14 March 22 Resident Evil PS1 \n", + "15 March 22 Panzer Dragoon II Zwei Sat \n", + "16 March 29 Dragon Ball Z : Hyper Dimension SNES \n", + "17 April 20 Barbie Fashion Designer Win \n", + "18 April 26 Jumping Flash ! 2 PS1 \n", + "19 April 26 The Legend of Oasis Sat \n", + "\n", + " Developer / Publisher \\\n", + "0 Treasure / Sega \n", + "1 Micro Cabin / Sega \n", + "2 3D Realms / GT Interactive \n", + "3 Capcom \n", + "4 SquareSoft \n", + "5 SquareSoft \n", + "6 Nintendo \n", + "7 MicroProse \n", + "8 Take Two Interactive \n", + "9 Mirage / Acclaim \n", + "10 Looking Glass Studios \n", + "11 Activision \n", + "12 SquareSoft/Nintendo \n", + "13 HAL Labs / Nintendo \n", + "14 Capcom \n", + "15 Team Andromeda / Sega \n", + "16 TOSE / Bandai \n", + "17 Digital Domain / Mattel Media \n", + "18 Exact / SCEA \n", + "19 Sega / Ancient \n", + "\n", + " Notes \n", + "0 a beat-em-up game developed by Treasure \n", + "1 a tactical RPG \n", + "2 a popular first person shooter \n", + "3 third X installment in popular Mega Man franchise \n", + "4 Tactical RPG spin-off in the Final Fantasy series , before Final Fantasy Tac... \n", + "5 Sequel to strategy Super Famicom RPG Front Mission \n", + "6 launched a wildly popular game series \n", + "7 acclaimed sequel to the highly influential 1991 4X game \n", + "8 Interactive movie , Point-and-click adventure Single Player game \n", + "9 the sequel to the fighting game , Rise of the Robots \n", + "10 critically acclaimed FPS \n", + "11 11th game in the Zork series , employing 360-degree views of environment \n", + "12 beginning of the long-running series of Mario RPGs \n", + "13 considered to be one of the best games in the Kirby franchise \n", + "14 one of the foundational games in the survival horror genre , for a time it h... \n", + "15 an acclaimed rail shooter \n", + "16 the last Super Famicom game in the Dragon Ball Z franchise \n", + "17 The game 's strong sales sparked a renewed interest in developing games targ... \n", + "18 Sequel to the first true 3D platformer \n", + "19 Prequel to the Genesis Zelda-style action game Beyond Oasis },\n", + " { 'answer': '2009',\n", + " 'context': Song Title Album ( s ) / Single ( s ) \\\n", + "0 A Feast For Me Pipes & Flowers \n", + "1 A Little Over Zero Asile 's World / Dancing \n", + "2 A Prayer Lotus \n", + "3 Anche Se Non Trovi Le Parole Heart \n", + "4 And All I Need Heart \n", + "5 Asile 's World Asile 's World \n", + "6 Beautiful Night Lotus \n", + "7 Bitter Words Pearl Days \n", + "8 Broken Lotus / Dancing \n", + "9 Chameleon Asile 's World \n", + "10 City Lights Pearl Days / Dancing \n", + "11 Coincidences Heart \n", + "12 Come & Sit Asile 's World \n", + "13 Come Speak To Me Asile 's World \n", + "14 Creature Asile 's World \n", + "15 Cure Me Pipes & Flowers \n", + "16 Dancing Then Comes the Sun / Dancing \n", + "17 Dot in the Universe Heart \n", + "18 Eppure sentire ( Un senso di te ) Soundtrack '96-'06 \n", + "19 Electricity Lotus \n", + "\n", + " First Released \n", + "0 2002 \n", + "1 2000 \n", + "2 2003 \n", + "3 2009 \n", + "4 2009 \n", + "5 2000 \n", + "6 2003 \n", + "7 2004 \n", + "8 2003 \n", + "9 2000 \n", + "10 2004 \n", + "11 2009 \n", + "12 2000 \n", + "13 2001 \n", + "14 2000 \n", + "15 1997 \n", + "16 2002 \n", + "17 2009 \n", + "18 2006 \n", + "19 2003 },\n", + " { 'answer': 'Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS '\n", + " 'X:November 6, 2006',\n", + " 'context': Name \\\n", + "0 University \n", + "1 Nightlife \n", + "2 Open for Business \n", + "3 Pets \n", + "4 Seasons \n", + "5 Bon Voyage \n", + "6 FreeTime \n", + "7 Apartment Life \n", + "\n", + " Release date \\\n", + "0 Windows:NA: March 1, 2005 EU: March 2, 2005 Mac OS X:December 12, 2005 \n", + "1 Windows:NA: September 13, 2005 EU: September 13, 2005 Mac OS X:March 27, 2006 \n", + "2 Windows:NA: March 2, 2006 EU: March 2, 2006 Mac OS X:September 4, 2006 \n", + "3 Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS X:November 6, 2006 \n", + "4 Windows:NA: March 1, 2007 EU: March 2, 2007 Mac OS X:June 11, 2007 \n", + "5 Windows:NA: September 4, 2007 EU: September 7, 2007 Mac OS X:December 17, 2007 \n", + "6 Windows:NA: February 26, 2008 EU: February 22, 2008 \n", + "7 Windows:NA: August 27, 2008EU: August 29, 2008 \n", + "\n", + " Major Additions \\\n", + "0 Universities, Young Adult age group, Influence system \n", + "1 Dates, Groups system, Outings, Pleasure and Grilled Cheese aspiration, New r... \n", + "2 Businesses, talent badges \n", + "3 Ownable Pets \n", + "4 Weather system, Seasons, fishing, new talent badges,gardening \n", + "5 Vacations in different cultural areas \n", + "6 Hobby system, lifetime aspiration system, new talent badges. \n", + "7 Rentable apartments, reputation system, witchcraft system \n", + "\n", + " Neighborhoods \\\n", + "0 Campus:La Fiesta Tech,Sim State University,Académie Le Tour \n", + "1 Downtown:Downtown \n", + "2 Shopping District:Bluewater Village \n", + "3 None \n", + "4 Main:Riverblossom Hills \n", + "5 Vacation:Twikkii Island,Three Lakes,Takemizu Village \n", + "6 Main: Desiderata Valley Secret:Hobby \n", + "7 Main:Belladonna Cove[53]Secret:The Magical World \n", + "\n", + " New NPCs \\\n", + "0 Barista, Bartender,Cafeteria Worker,Cheerleader,Coach, Evil Mascot, Mascot,P... \n", + "1 Gypsy Matchmaker,Waiter, Chef,Bartender, DJ,Mrs. Crumplebottom,Vampires (Cou... \n", + "2 Reporters,Barbers \n", + "3 Animal Control Officers,Obedience Trainer,Wolves, Skunks \n", + "4 Garden Club Members,Penguins \n", + "5 Fire Dancers,Hotel Maids,Bellboys, Masseurs,Wise Old Man,Pirate, Tour Guides... \n", + "6 Hobby Members,Rod Humble,Hobby Leaders,Food Judge,Genie \n", + "7 Butler, Landlord,Roomies,Breakdancers,Street Performers,Social Group Sims,Hi... \n", + "\n", + " New Lifestate/Creature \\\n", + "0 Zombies (Also in FreeTime and Apartment Life) \n", + "1 Vampires \n", + "2 Servos (Robots) \n", + "3 Werewolves \n", + "4 PlantSims \n", + "5 Bigfoot \n", + "6 Genie (Only NPC) \n", + "7 Witches, Warlocks \n", + "\n", + " New Careers \n", + "0 Natural Scientist, Paranormal,Show Business, Artist \n", + "1 None \n", + "2 Shop Employees \n", + "3 Pet careers:Security,Showbiz,Service \n", + "4 Adventurer,Education,Gamer,Journalism,Law, Music \n", + "5 None \n", + "6 Oceanography,Intelligence,Entertainment,Dance,Architecture \n", + "7 None },\n", + " { 'answer': '2 December 1978',\n", + " 'context': Album \\\n", + "0 Please Please Me \n", + "1 With the Beatles \n", + "2 A Hard Day 's Night \n", + "3 Beatles for Sale \n", + "4 Help ! \n", + "5 Rubber Soul \n", + "6 Revolver \n", + "7 Sgt . Pepper 's Lonely Hearts Club Band \n", + "8 The Beatles ( White Album ) \n", + "9 Yellow Submarine \n", + "10 Abbey Road \n", + "11 Let It Be \n", + "12 Rarities \n", + "\n", + " Label \\\n", + "0 Parlophone Records PCS 3042 \n", + "1 Parlophone Records PCS 3045 \n", + "2 Parlophone Records PCS 3058 \n", + "3 Parlophone Records PCS 3062 \n", + "4 Parlophone Records PCS 3071 \n", + "5 Parlophone Records PCS 3075 \n", + "6 Parlophone Records PCS 7009 \n", + "7 Parlophone Records PCS 7027 \n", + "8 Apple Records PCS 7067/8 \n", + "9 Apple Records PCS 7070 \n", + "10 Apple Records PCS 7088 \n", + "11 Apple Records PCS 7096 \n", + "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", + "\n", + " Release date \n", + "0 22 March 1963 \n", + "1 22 November 1963 \n", + "2 10 July 1964 \n", + "3 4 December 1964 \n", + "4 6 August 1965 \n", + "5 3 December 1965 \n", + "6 5 August 1966 \n", + "7 1 June 1967 \n", + "8 22 November 1968 \n", + "9 17 January 1969 \n", + "10 26 September 1969 \n", + "11 8 May 1970 \n", + "12 2 December 1978 },\n", + " { 'answer': '2 December 1978',\n", + " 'context': Album \\\n", + "0 Please Please Me \n", + "1 With the Beatles \n", + "2 A Hard Day 's Night \n", + "3 Beatles for Sale \n", + "4 Help ! \n", + "5 Rubber Soul \n", + "6 Revolver \n", + "7 Sgt . Pepper 's Lonely Hearts Club Band \n", + "8 The Beatles ( White Album ) \n", + "9 Yellow Submarine \n", + "10 Abbey Road \n", + "11 Let It Be \n", + "12 Rarities \n", + "\n", + " Label \\\n", + "0 Parlophone Records PCS 3042 \n", + "1 Parlophone Records PCS 3045 \n", + "2 Parlophone Records PCS 3058 \n", + "3 Parlophone Records PCS 3062 \n", + "4 Parlophone Records PCS 3071 \n", + "5 Parlophone Records PCS 3075 \n", + "6 Parlophone Records PCS 7009 \n", + "7 Parlophone Records PCS 7027 \n", + "8 Apple Records PCS 7067/8 \n", + "9 Apple Records PCS 7070 \n", + "10 Apple Records PCS 7088 \n", + "11 Apple Records PCS 7096 \n", + "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", + "\n", + " Release date \n", + "0 22 March 1963 \n", + "1 22 November 1963 \n", + "2 10 July 1964 \n", + "3 4 December 1964 \n", + "4 6 August 1965 \n", + "5 3 December 1965 \n", + "6 5 August 1966 \n", + "7 1 June 1967 \n", + "8 22 November 1968 \n", + "9 17 January 1969 \n", + "10 26 September 1969 \n", + "11 8 May 1970 \n", + "12 2 December 1978 },\n", + " { 'answer': 'October22,2004',\n", + " 'context': Series # Season # Title Directed by \\\n", + "0 44 1 Psychic Eye for the Sloppy Guy Rich Correll \n", + "1 45 2 Stark Raven Mad Marc Warren \n", + "2 46 3 Opportunity Shocks Rich Correll \n", + "3 47 4 Taken to the Cleaners Rich Correll \n", + "4 48 5 Five Finger Discount Rich Correll \n", + "5 49 6 Sweeps Sean McNamara \n", + "6 50 7 Double Vision T'Keyah Crystal Keymáh \n", + "7 51 8 Bend It Like Baxter Rich Correll \n", + "8 52 9 The Big Buzz Eric Dean Seaton \n", + "9 53 10 True Colors Christopher B. Pearman \n", + "10 54 11 Dog Day Aftergroom KC Lynn De Stefano \n", + "11 55 12 Royal Treatment Christopher B. Pearman \n", + "12 56 13 Art Breaker Gregory Hobson \n", + "13 57 14 Boyz 'N Commotion Debbie Allen \n", + "14 58 15 Gettin' Outta Dodge Rich Correll \n", + "15 59 16 On Top of Old Oakey John Tracy \n", + "16 60 17 They Work Hard for His Honey Eric Dean Seaton \n", + "17 61 18 Mind Your Own Business Eric Dean Seaton \n", + "18 62 19 Hizzouse Party Rich Correll \n", + "19 63 20 Mismatch Maker Fred Savage \n", + "20 65 22 When in Dome Marc Warren \n", + "21 66 23 Too Much Pressure Rich Correll \n", + "22 67 24 Extreme Cory Rich Correll \n", + "23 68 25 The Grill Next Door Sean McNamara \n", + "24 69 26 Point of No Return Sean McNamara \n", + "25 72 29 Food for Thought Rich Correll \n", + "26 73 30 Mr. Perfect Rich Correll \n", + "27 74 31 Goin' Hollywood Rich Correll \n", + "28 75 32 Save the Last Dance Sean McNamara \n", + "29 76 33 Cake Fear Rondell Sheridan \n", + "30 77 34 Vision Impossible Marc Warren \n", + "\n", + " Written by Original air date Prod. code \\\n", + "0 Marc Warren October1,2004 301 \n", + "1 Sarah Jane Cunningham & Suzie V. Freeman October22,2004 304 \n", + "2 Dava Savel November5,2004 309 \n", + "3 Michael Feldman November19,2004 313 \n", + "4 Dennis Rinsler December3,2004 302 \n", + "5 Dennis Rinsler December11,2004 311 \n", + "6 Sarah Jane Cunningham & Suzie V. Freeman December17,2004 318 \n", + "7 Dava Savel January7,2005 315 \n", + "8 Marc Warren January28,2005 322 \n", + "9 Michael Carrington February4,2005 303 \n", + "10 Theresa Akana & Stacee Comage February11,2005 317 \n", + "11 Sarah Jane Cunningham & Suzie V. Freeman February18,2005 310 \n", + "12 Josh Lynn & Danny Warren February25,2005 308 \n", + "13 Theresa Akana & Stacee Comage March11,2005 306 \n", + "14 Edward C. Evans April8,2005 319 \n", + "15 Michael Feldman April22,2005 305 \n", + "16 Edward C. Evans April29,2005 307 \n", + "17 Dennis Rinsler May13,2005 327 \n", + "18 Michael Carrington June13,2005 312 \n", + "19 Edward C. Evans June14,2005 325 \n", + "20 Sarah Jane Cunningham & Suzie V. Freeman June16,2005 328 \n", + "21 Dava Savel June17,2005 323 \n", + "22 Theresa Akana & Stacee Comage July8,2005 326 \n", + "23 Michael Feldman July8,2005 324 \n", + "24 Edward C. Evans July23,2005 330 \n", + "25 Marc Warren September18,2005 316 \n", + "26 Michael Carrington October7,2005 329 \n", + "27 Dennis Rinsler & Marc Warren November4,2005 333 \n", + "28 Marc Warren November25,2005 334 \n", + "29 Theresa Akana & Stacee Comage December16,2005 332 \n", + "30 David Brookwell & Sean McNamara January6,2006 335 \n", + "\n", + " U.S. viewers (millions) \n", + "0 4.8 \n", + "1 4.5 \n", + "2 4.5 \n", + "3 3.7 \n", + "4 3.1 \n", + "5 2.6 \n", + "6 5.5 \n", + "7 4.0 \n", + "8 2.17 \n", + "9 3.3 \n", + "10 2.4 \n", + "11 2.7 \n", + "12 3.5 \n", + "13 4.8 \n", + "14 2.1 \n", + "15 2.3 \n", + "16 4.2 \n", + "17 4.4 \n", + "18 5.1 \n", + "19 4.3 \n", + "20 4.7 \n", + "21 4.4 \n", + "22 3.8 \n", + "23 4.23 \n", + "24 6.0 \n", + "25 3.4 \n", + "26 3.0 \n", + "27 3.7 \n", + "28 3.3 \n", + "29 3.6 \n", + "30 4.7 },\n", + " { 'answer': '1990',\n", + " 'context': Year Title \\\n", + "0 1990 Psycho IV : The Beginning \n", + "1 1992 A Taste for Killing \n", + "2 1995 Indictment : The McMartin Trial \n", + "3 1996 Riders of the Purple Sage \n", + "4 1998 Moby Dick \n", + "5 1999 Happy Face Murders \n", + "6 2005 Masters of Horror \n", + "7 2006 Stephen King 's Desperation \n", + "8 2006 Nightmares & Dreamscapes : From the Stories of Stephen King \n", + "9 2007-08 Without a Trace \n", + "10 2009 CSI : Crime Scene Investigation \n", + "11 2011 The Mentalist \n", + "12 2013-14 Betrayal \n", + "13 2015 Sons of Liberty \n", + "14 2016 Law & Order : Special Victims Unit \n", + "15 2017 Better Things \n", + "16 2018-present The Haunting of Hill House \n", + "17 2018 Girl in the Bunker \n", + "18 2020 FBI : Most Wanted \n", + "19 2020 Stargirl \n", + "\n", + " Role \\\n", + "0 Young Norman Bates \n", + "1 Cary Sloan \n", + "2 Ray Buckey \n", + "3 Bern Venters \n", + "4 Ishmael \n", + "5 Dylan McCarthy \n", + "6 Jamie \n", + "7 Peter Jackson \n", + "8 Robert Fornoy \n", + "9 Franklin Romar \n", + "10 Jeremy Kent \n", + "11 Thomas Lisbon \n", + "12 T.J. Karsten \n", + "13 John Adams \n", + "14 Sean Roberts \n", + "15 Robin \n", + "16 Young Hugh Crain ( season 1 ) TBA ( season 2 ) \n", + "17 Vinson Filyaw \n", + "18 Dr. Justin Brock \n", + "19 Charles McNider / Doctor Mid-Nite \n", + "\n", + " Notes \n", + "0 Television film \n", + "1 Television film \n", + "2 Television film \n", + "3 Television film \n", + "4 Miniseries \n", + "5 Television film \n", + "6 Episode : Chocolate \n", + "7 Television film \n", + "8 Episode : The End of the Whole Mess \n", + "9 2 episodes \n", + "10 Episode : If I Had a Hammer \n", + "11 Episode : Where in the World is Carmine O'Brien ? \n", + "12 13 episodes \n", + "13 Miniseries \n", + "14 Episode : Making a Rapist \n", + "15 4 episodes \n", + "16 Series regular , first and second season \n", + "17 Television film \n", + "18 Episode : Dopesick \n", + "19 Recurring role }]\n" ] } ], "source": [ - "prediction = table_qa_pipeline.run(\"How many twin buildings are under construction?\")\n", + "prediction = table_qa_pipeline.run(\"When was Guilty Gear Xrd : Sign released?\", params={\"top_k\": 30})\n", "print_answers(prediction, details=\"minimum\")" ] }, - { - "cell_type": "markdown", - "source": [ - "# Open-Domain QA on Text and Tables\n", - "With haystack, you not only have the possibility to do QA on texts or tables, solely, but you can also use both texts and tables as your source of information.\n", - "\n", - "To demonstrate this, we add 1,000 sample text passages from the OTT-QA dataset." - ], - "metadata": { - "id": "8uMzl9Ml_D1B" - } - }, { "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "4CBcIjIq_uFx" + }, + "outputs": [], "source": [ - "# Add 1,000 text passages from OTT-QA to our document store.\n", + "# Add 500 text passages to our document store.\n", "\n", "\n", - "def read_ottqa_texts(filename):\n", + "def read_texts(filename):\n", " processed_passages = []\n", " with open(filename) as passages:\n", " passages = json.load(passages)\n", - " for title, content in passages.items():\n", - " title = title[6:]\n", - " title = title.replace(\"_\", \" \")\n", - " document = Document(content=content, content_type=\"text\", meta={\"title\": title})\n", + " for key, content in passages.items():\n", + " document = Document(content=content, content_type=\"text\", id=key)\n", " processed_passages.append(document)\n", "\n", " return processed_passages\n", "\n", "\n", - "passages = read_ottqa_texts(f\"{doc_dir}/ottqa_texts_sample.json\")\n", + "passages = read_texts(f\"{doc_dir}/texts.json\")\n", "document_store.write_documents(passages, index=document_index)" - ], - "metadata": { - "id": "4CBcIjIq_uFx" - }, - "execution_count": 18, - "outputs": [] + ] }, { "cell_type": "code", - "source": [ - "document_store.update_embeddings(retriever=retriever, update_existing_embeddings=False)" - ], + "execution_count": 21, "metadata": { "id": "j1TaNF7SiKgH" }, - "execution_count": null, - "outputs": [] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.document_stores.elasticsearch - Updating embeddings for 563 docs without embeddings ...\n", + "Updating embeddings: 10000 Docs [00:29, 343.41 Docs/s] \n" + ] + } + ], + "source": [ + "document_store.update_embeddings(retriever=retriever, update_existing_embeddings=False)" + ] }, { "cell_type": "markdown", + "metadata": { + "id": "c2sk_uNHj0DY" + }, "source": [ "## Pipeline for QA on Combination of Text and Tables\n", "We are using one node for retrieving both texts and tables, the `TableTextRetriever`. In order to do question-answering on the Documents coming from the `TableTextRetriever`, we need to route Documents of type `\"text\"` to a `FARMReader` (or alternatively `TransformersReader`) and Documents of type `\"table\"` to a `TableReader`.\n", @@ -783,13 +1959,92 @@ "To achieve this, we make use of two additional nodes:\n", "- `SplitDocumentList`: Splits the List of Documents retrieved by the `TableTextRetriever` into two lists containing only Documents of type `\"text\"` or `\"table\"`, respectively.\n", "- `JoinAnswers`: Takes Answers coming from two different Readers (in this case `FARMReader` and `TableReader`) and joins them to a single list of Answers." - ], - "metadata": { - "id": "c2sk_uNHj0DY" - } + ] }, { "cell_type": "code", + "execution_count": 22, + "metadata": { + "id": "Ej_j8Q3wlxXE" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/roberta-base-squad2 locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/roberta-base-squad2\n", + "INFO - haystack.modeling.logger - ML Logging is turned off. No parameters, metrics or artifacts will be logged to MLFlow.\n", + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.infer - Got ya 7 parallel workers to do inference ...\n", + "INFO - haystack.modeling.infer - 0 0 0 0 0 0 0 \n", + "INFO - haystack.modeling.infer - /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ \n", + "INFO - haystack.modeling.infer - /'\\ / \\ /'\\ /'\\ / \\ / \\ /'\\ \n", + "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n", + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n" + ] + } + ], "source": [ "from haystack.nodes import FARMReader, RouteDocuments, JoinAnswers\n", "\n", @@ -800,15 +2055,15 @@ "table_reader = TableReader(\"deepset/tapas-large-nq-hn-reader\")\n", "route_documents = RouteDocuments()\n", "join_answers = JoinAnswers()" - ], - "metadata": { - "id": "Ej_j8Q3wlxXE" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "Zdq6JnF5m3aP" + }, + "outputs": [], "source": [ "text_table_qa_pipeline = Pipeline()\n", "text_table_qa_pipeline.add_node(component=retriever, name=\"TableTextRetriever\", inputs=[\"Query\"])\n", @@ -816,284 +2071,474 @@ "text_table_qa_pipeline.add_node(component=text_reader, name=\"TextReader\", inputs=[\"RouteDocuments.output_1\"])\n", "text_table_qa_pipeline.add_node(component=table_reader, name=\"TableReader\", inputs=[\"RouteDocuments.output_2\"])\n", "text_table_qa_pipeline.add_node(component=join_answers, name=\"JoinAnswers\", inputs=[\"TextReader\", \"TableReader\"])" - ], - "metadata": { - "id": "Zdq6JnF5m3aP" - }, - "execution_count": 21, - "outputs": [] + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 540 + }, + "id": "K4vH1ZEnniut", + "outputId": "85aa17a8-227d-40e4-c8c0-5d0532faa47a" + }, + "outputs": [], "source": [ "# Let's have a look on the structure of the combined Table an Text QA pipeline.\n", "from IPython import display\n", "\n", "text_table_qa_pipeline.draw()\n", "display.Image(\"pipeline.png\")" - ], - "metadata": { - "id": "K4vH1ZEnniut", - "outputId": "85aa17a8-227d-40e4-c8c0-5d0532faa47a", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 540 - } - }, - "execution_count": 22, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "execution_count": 22 - } ] }, { "cell_type": "code", - "source": [ - "# Example query whose answer resides in a text passage\n", - "predictions = text_table_qa_pipeline.run(query=\"Who is Aleksandar Trifunovic?\")" - ], + "execution_count": 30, "metadata": { "id": "strPNduPoBLe" }, - "execution_count": null, - "outputs": [] + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self, timeout)\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: pop from an empty deque", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/var/folders/yw/022rgvk17nz3rm_3gb8szmmw0000gn/T/ipykernel_7250/4210422198.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Example query whose answer resides in a text passage\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtext_table_qa_pipeline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Which country does the film Macaroni come from?\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/pipelines/base.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, query, file_paths, labels, documents, meta, params, debug)\u001b[0m\n\u001b[1;32m 644\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[1;32m 645\u001b[0m \u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Running node `{node_id}` with input `{node_input}`\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 646\u001b[0;31m \u001b[0mnode_output\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnodes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnode_id\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"component\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dispatch_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mnode_input\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 647\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_exc\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~/Documents/internships/deepset/haystack/haystack/nodes/base.py\u001b[0m in \u001b[0;36m_dispatch_run\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0mrun_inputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0moutput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mrun_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mrun_params\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 179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;31m# Collect debug information\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/base.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, query, documents, top_k, labels, add_isolated_node_eval)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0mpredict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtiming\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"query_time\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdocuments\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 83\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdocuments\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdocuments\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtop_k\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtop_k\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 84\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 85\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"answers\"\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[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/base.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mattr_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0mtic\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mperf_counter\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--> 128\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\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 129\u001b[0m \u001b[0mtoc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mperf_counter\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 130\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mattr_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mtoc\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mtic\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/farm.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, query, documents, top_k)\u001b[0m\n\u001b[1;32m 768\u001b[0m \u001b[0;31m# get answers from QA model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 769\u001b[0m \u001b[0;31m# TODO: Need fix in FARM's `to_dict` function of `QAInput` class\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 770\u001b[0;31m predictions = self.inferencer.inference_from_objects(\n\u001b[0m\u001b[1;32m 771\u001b[0m \u001b[0mobjects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 772\u001b[0m )\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_objects\u001b[0;34m(self, objects, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 593\u001b[0m \u001b[0;31m# then we can and should use inference from (input) objects!\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[0;31m# logger.warning(\"QAInferencer.inference_from_objects() will soon be deprecated. Use QAInferencer.inference_from_dicts() instead\")\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 595\u001b[0;31m return self.inference_from_dicts(\n\u001b[0m\u001b[1;32m 596\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_json\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m )\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_dicts\u001b[0;34m(self, dicts, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 576\u001b[0m ) -> List[QAPred]:\n\u001b[0;32m--> 577\u001b[0;31m return Inferencer.inference_from_dicts(\n\u001b[0m\u001b[1;32m 578\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_json\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 579\u001b[0m )\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_dicts\u001b[0;34m(self, dicts, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;31m# cast the generator to a list if it isnt already a list.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlist\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[0;32mreturn\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\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;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpredictions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36m_inference_with_multiprocessing\u001b[0;34m(self, dicts, return_json, aggregate_preds, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0;31m# Once a process spits out a preprocessed chunk. we feed this dataset directly to the model.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;31m# So we don't need to wait until all preprocessing has finished before getting first predictions.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 415\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtensor_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbaskets\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mresults\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 416\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 417\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdataset\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self, timeout)\u001b[0m\n", + "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "# Example query whose answer resides in a text passage\n", + "predictions = text_table_qa_pipeline.run(query=\"What is the Senior Bowl?\")" + ] }, { "cell_type": "code", - "source": [ - "# We can see both text passages and tables as contexts of the predicted answers.\n", - "print_answers(predictions, details=\"minimum\")" - ], + "execution_count": 28, "metadata": { - "id": "9YiK75tSoOGA", - "outputId": "bd52f841-3846-441f-dd6f-53b02111691e", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "9YiK75tSoOGA", + "outputId": "bd52f841-3846-441f-dd6f-53b02111691e" }, - "execution_count": 24, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "\n", - "Query: Who is Aleksandar Trifunovic?\n", + "Query: Which country does Vijay Singh come from?\n", "Answers:\n", - "[ { 'answer': 'a Serbian professional basketball coach and former player',\n", - " 'context': 'Aleksandar Trifunović ( ; born 30 May 1967 ) is a Serbian '\n", - " 'professional basketball coach and former player .'},\n", - " { 'answer': 'Johnny Höglin',\n", - " 'context': Rank Athlete Country Time\n", - "0 1 Kees Verkerk Netherlands 2:03.4\n", - "1 2 Ivar Eriksen Norway 2:05.0\n", - "2 3 Ard Schenk Netherlands 2:05.0\n", - "3 4 Magne Thomassen Norway 2:05.1\n", - "4 5 Johnny Höglin Sweden 2:05.2\n", - "5 5 Bjørn Tveter Norway 2:05.2\n", - "6 7 Svein-Erik Stiansen Norway 2:05.5\n", - "7 8 Eduard Matusevich Soviet Union 2:06.1\n", - "8 9 Peter Nottet Netherlands 2:06.3\n", - "9 10 Örjan Sandler Sweden 2:07.0\n", - "10 11 Aleksandr Kerchenko Soviet Union 2:07.1\n", - "11 12 Ants Antson Soviet Union 2:07.2\n", - "12 12 Valery Kaplan Soviet Union 2:07.2\n", - "13 14 Jouko Launonen Finland 2:07.5\n", - "14 15 Günter Traub West Germany 2:07.7\n", - "15 16 Jan Bols Netherlands 2:07.8\n", - "16 16 Manne Lavås Sweden 2:07.8\n", - "17 18 Kimmo Koskinen Finland 2:07.9\n", - "18 19 Richard Wurster United States 2:08.4\n", - "19 20 Göran Claeson Sweden 2:08.6},\n", - " { 'answer': 'Ivar Eriksen',\n", - " 'context': Rank Athlete Country Time\n", - "0 1 Kees Verkerk Netherlands 2:03.4\n", - "1 2 Ivar Eriksen Norway 2:05.0\n", - "2 3 Ard Schenk Netherlands 2:05.0\n", - "3 4 Magne Thomassen Norway 2:05.1\n", - "4 5 Johnny Höglin Sweden 2:05.2\n", - "5 5 Bjørn Tveter Norway 2:05.2\n", - "6 7 Svein-Erik Stiansen Norway 2:05.5\n", - "7 8 Eduard Matusevich Soviet Union 2:06.1\n", - "8 9 Peter Nottet Netherlands 2:06.3\n", - "9 10 Örjan Sandler Sweden 2:07.0\n", - "10 11 Aleksandr Kerchenko Soviet Union 2:07.1\n", - "11 12 Ants Antson Soviet Union 2:07.2\n", - "12 12 Valery Kaplan Soviet Union 2:07.2\n", - "13 14 Jouko Launonen Finland 2:07.5\n", - "14 15 Günter Traub West Germany 2:07.7\n", - "15 16 Jan Bols Netherlands 2:07.8\n", - "16 16 Manne Lavås Sweden 2:07.8\n", - "17 18 Kimmo Koskinen Finland 2:07.9\n", - "18 19 Richard Wurster United States 2:08.4\n", - "19 20 Göran Claeson Sweden 2:08.6},\n", - " { 'answer': 'Magne Thomassen',\n", - " 'context': Rank Athlete Country Time\n", - "0 1 Kees Verkerk Netherlands 2:03.4\n", - "1 2 Ivar Eriksen Norway 2:05.0\n", - "2 3 Ard Schenk Netherlands 2:05.0\n", - "3 4 Magne Thomassen Norway 2:05.1\n", - "4 5 Johnny Höglin Sweden 2:05.2\n", - "5 5 Bjørn Tveter Norway 2:05.2\n", - "6 7 Svein-Erik Stiansen Norway 2:05.5\n", - "7 8 Eduard Matusevich Soviet Union 2:06.1\n", - "8 9 Peter Nottet Netherlands 2:06.3\n", - "9 10 Örjan Sandler Sweden 2:07.0\n", - "10 11 Aleksandr Kerchenko Soviet Union 2:07.1\n", - "11 12 Ants Antson Soviet Union 2:07.2\n", - "12 12 Valery Kaplan Soviet Union 2:07.2\n", - "13 14 Jouko Launonen Finland 2:07.5\n", - "14 15 Günter Traub West Germany 2:07.7\n", - "15 16 Jan Bols Netherlands 2:07.8\n", - "16 16 Manne Lavås Sweden 2:07.8\n", - "17 18 Kimmo Koskinen Finland 2:07.9\n", - "18 19 Richard Wurster United States 2:08.4\n", - "19 20 Göran Claeson Sweden 2:08.6},\n", - " { 'answer': '5',\n", - " 'context': Position # Player Moving from\n", - "0 F 12 Nikola Kalinić Radnički Kragujevac\n", - "1 SF 6 Nemanja Dangubić Mega Vizura\n", - "2 C 33 Maik Zirbes Brose Baskets\n", - "3 PG 3 Marcus Williams Lokomotiv Kuban\n", - "4 PG 24 Stefan Jović Radnički Kragujevac\n", - "5 C 14 Đorđe Kaplanović FMP\n", - "6 SF 5 Nikola Čvorović FMP\n", - "7 SG 7 Aleksandar Aranitović Crvena zvezda U18\n", - "8 SG 20 Aleksa Radanov Crvena zvezda U18},\n", - " { 'answer': 'Vasile Sărucan',\n", - " 'context': Rank Name Nationality Result\n", - "0 1 Hans Baumgartner West Germany 8.12\n", - "1 2 Igor Ter-Ovanesyan Soviet Union 7.91\n", - "2 3 Vasile Sărucan Romania 7.88\n", - "3 4 Valeriu Jurcă Romania 7.72\n", - "4 5 Philippe Housiaux Belgium 7.70\n", - "5 6 Andreas Gloerfeld West Germany 7.70\n", - "6 7 Jan Kobuszewski Poland 7.66\n", - "7 8 Jaroslav Brož Czechoslovakia 7.66\n", - "8 9 Alan Lerwill Great Britain 7.61\n", - "9 10 Mikhail Bariban Soviet Union 7.58\n", - "10 11 Valeriy Podluzhniy Soviet Union 7.54\n", - "11 12 Kari Palmen Finland 7.51\n", - "12 13 Georgi Marin Bulgaria 7.51\n", - "13 14 Jesper Tørring Denmark 7.46\n", - "14 15 Milan Spasojević Yugoslavia 7.23\n", - "15 16 Salih Mercan Turkey 6.98\n", - "16 17 Henrik Kalocsai Hungary 5.67},\n", - " { 'answer': 'Belgium',\n", - " 'context': Rank Name Nationality Result\n", - "0 1 Hans Baumgartner West Germany 8.12\n", - "1 2 Igor Ter-Ovanesyan Soviet Union 7.91\n", - "2 3 Vasile Sărucan Romania 7.88\n", - "3 4 Valeriu Jurcă Romania 7.72\n", - "4 5 Philippe Housiaux Belgium 7.70\n", - "5 6 Andreas Gloerfeld West Germany 7.70\n", - "6 7 Jan Kobuszewski Poland 7.66\n", - "7 8 Jaroslav Brož Czechoslovakia 7.66\n", - "8 9 Alan Lerwill Great Britain 7.61\n", - "9 10 Mikhail Bariban Soviet Union 7.58\n", - "10 11 Valeriy Podluzhniy Soviet Union 7.54\n", - "11 12 Kari Palmen Finland 7.51\n", - "12 13 Georgi Marin Bulgaria 7.51\n", - "13 14 Jesper Tørring Denmark 7.46\n", - "14 15 Milan Spasojević Yugoslavia 7.23\n", - "15 16 Salih Mercan Turkey 6.98\n", - "16 17 Henrik Kalocsai Hungary 5.67},\n", - " { 'answer': 'Poland',\n", - " 'context': Rank Name Nationality Result\n", - "0 1 Hans Baumgartner West Germany 8.12\n", - "1 2 Igor Ter-Ovanesyan Soviet Union 7.91\n", - "2 3 Vasile Sărucan Romania 7.88\n", - "3 4 Valeriu Jurcă Romania 7.72\n", - "4 5 Philippe Housiaux Belgium 7.70\n", - "5 6 Andreas Gloerfeld West Germany 7.70\n", - "6 7 Jan Kobuszewski Poland 7.66\n", - "7 8 Jaroslav Brož Czechoslovakia 7.66\n", - "8 9 Alan Lerwill Great Britain 7.61\n", - "9 10 Mikhail Bariban Soviet Union 7.58\n", - "10 11 Valeriy Podluzhniy Soviet Union 7.54\n", - "11 12 Kari Palmen Finland 7.51\n", - "12 13 Georgi Marin Bulgaria 7.51\n", - "13 14 Jesper Tørring Denmark 7.46\n", - "14 15 Milan Spasojević Yugoslavia 7.23\n", - "15 16 Salih Mercan Turkey 6.98\n", - "16 17 Henrik Kalocsai Hungary 5.67},\n", - " { 'answer': 'Hafþór Júlíus Björnsson',\n", - " 'context': # Name Nationality Pts\n", - "0 1 Hafþór Júlíus Björnsson Iceland 31.5\n", - "1 2 Robert Oberst United States 29\n", - "2 3 Lauri Nami Estonia 24\n", - "3 4 Nick Best United States 14.5\n", - "4 5 Laurence Shahlaei UK 12\n", - "5 6 Wu Long China 6},\n", - " { 'answer': 'Estonia',\n", - " 'context': # Name Nationality Pts\n", - "0 1 Hafþór Júlíus Björnsson Iceland 31.5\n", - "1 2 Robert Oberst United States 29\n", - "2 3 Lauri Nami Estonia 24\n", - "3 4 Nick Best United States 14.5\n", - "4 5 Laurence Shahlaei UK 12\n", - "5 6 Wu Long China 6},\n", - " { 'answer': 'Iceland',\n", - " 'context': # Name Nationality Pts\n", - "0 1 Hafþór Júlíus Björnsson Iceland 31.5\n", - "1 2 Robert Oberst United States 29\n", - "2 3 Lauri Nami Estonia 24\n", - "3 4 Nick Best United States 14.5\n", - "4 5 Laurence Shahlaei UK 12\n", - "5 6 Wu Long China 6},\n", - " { 'answer': 'Egor Antropov ( born May 8 , 1992 ) is a Russian '\n", - " 'professional ice hockey defenceman',\n", - " 'context': 'Egor Antropov ( born May 8 , 1992 ) is a Russian '\n", - " 'professional ice hockey defenceman . He is currently '\n", - " 'playing with Piráti Chomutov of the Czech Extral'},\n", - " { 'answer': 'Zurab Magomedovich Yevloyev ( ; born February 20 , 1980 ) '\n", - " 'is a Russian professional football player',\n", - " 'context': 'Zurab Magomedovich Yevloyev ( ; born February 20 , 1980 ) '\n", - " 'is a Russian professional football player . In 2010 , he '\n", - " 'played for FC Angusht Nazran in the'}]\n" + "[ { 'answer': 'Italian',\n", + " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", + "0 Argentina The Official Story Spanish \n", + "1 Austria Malambo German \n", + "2 Belgium Dust French \n", + "3 Canada Jacques and November French \n", + "4 Czechoslovakia Scalpel , Please Czech \n", + "5 Denmark Twist and Shout Danish \n", + "6 France Three Men and a Cradle French \n", + "7 West Germany Angry Harvest German \n", + "8 Hungary Colonel Redl German \n", + "9 Iceland Deep Winter Icelandic \n", + "10 India Saagar Hindi \n", + "11 Israel When Night Falls Hebrew \n", + "12 Italy Macaroni Italian \n", + "13 Japan Gray Sunset Japanese \n", + "14 South Korea Eoudong Korean \n", + "15 Mexico Frida Still Life Spanish \n", + "16 Netherlands The Dream Dutch , West Frisian \n", + "17 Norway Wives - Ten Years After Norwegian \n", + "18 Peru The City and the Dogs Spanish \n", + "19 Philippines This Is My Country Tagalog \n", + "\n", + " Original title Director ( s ) \\\n", + "0 La Historia oficial Luis Puenzo \n", + "1 Malambo Milan Dor \n", + "2 Dust Marion Hänsel \n", + "3 Jacques et novembre Jean Beaudry and François Bouvier \n", + "4 Skalpel , prosím Jirí Svoboda \n", + "5 Tro , håb og kærlighed Bille August \n", + "6 Trois hommes et un couffin Coline Serreau \n", + "7 Bittere Ernte Agnieszka Holland \n", + "8 Oberst Redl István Szabó \n", + "9 Skammdegi Þráinn Bertelsson \n", + "10 सागर Ramesh Sippy \n", + "11 עד סוף הלילה Eitan Green \n", + "12 Maccheroni Ettore Scola \n", + "13 花いちもんめ Shunya Ito \n", + "14 어우동 Lee Jang-ho \n", + "15 Frida , naturaleza viva Paul Leduc \n", + "16 De Dream Pieter Verhoeff \n", + "17 Hustruer - ti år etter Anja Breien \n", + "18 La ciudad y los perros Francisco José Lombardi \n", + "19 Bayan ko : Kapit sa patalim Lino Brocka \n", + "\n", + " Result \n", + "0 Won Academy Award \n", + "1 Not Nominated \n", + "2 Not Nominated \n", + "3 Not Nominated \n", + "4 Not Nominated \n", + "5 Not Nominated \n", + "6 Nominated \n", + "7 Nominated \n", + "8 Nominated \n", + "9 Not Nominated \n", + "10 Not Nominated \n", + "11 Not Nominated \n", + "12 Not Nominated \n", + "13 Not Nominated \n", + "14 Not Nominated \n", + "15 Not Nominated \n", + "16 Not Nominated \n", + "17 Not Nominated \n", + "18 Not Nominated \n", + "19 Not Nominated },\n", + " { 'answer': 'Italian',\n", + " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", + "0 Argentina The Official Story Spanish \n", + "1 Austria Malambo German \n", + "2 Belgium Dust French \n", + "3 Canada Jacques and November French \n", + "4 Czechoslovakia Scalpel , Please Czech \n", + "5 Denmark Twist and Shout Danish \n", + "6 France Three Men and a Cradle French \n", + "7 West Germany Angry Harvest German \n", + "8 Hungary Colonel Redl German \n", + "9 Iceland Deep Winter Icelandic \n", + "10 India Saagar Hindi \n", + "11 Israel When Night Falls Hebrew \n", + "12 Italy Macaroni Italian \n", + "13 Japan Gray Sunset Japanese \n", + "14 South Korea Eoudong Korean \n", + "15 Mexico Frida Still Life Spanish \n", + "16 Netherlands The Dream Dutch , West Frisian \n", + "17 Norway Wives - Ten Years After Norwegian \n", + "18 Peru The City and the Dogs Spanish \n", + "19 Philippines This Is My Country Tagalog \n", + "\n", + " Original title Director ( s ) \\\n", + "0 La Historia oficial Luis Puenzo \n", + "1 Malambo Milan Dor \n", + "2 Dust Marion Hänsel \n", + "3 Jacques et novembre Jean Beaudry and François Bouvier \n", + "4 Skalpel , prosím Jirí Svoboda \n", + "5 Tro , håb og kærlighed Bille August \n", + "6 Trois hommes et un couffin Coline Serreau \n", + "7 Bittere Ernte Agnieszka Holland \n", + "8 Oberst Redl István Szabó \n", + "9 Skammdegi Þráinn Bertelsson \n", + "10 सागर Ramesh Sippy \n", + "11 עד סוף הלילה Eitan Green \n", + "12 Maccheroni Ettore Scola \n", + "13 花いちもんめ Shunya Ito \n", + "14 어우동 Lee Jang-ho \n", + "15 Frida , naturaleza viva Paul Leduc \n", + "16 De Dream Pieter Verhoeff \n", + "17 Hustruer - ti år etter Anja Breien \n", + "18 La ciudad y los perros Francisco José Lombardi \n", + "19 Bayan ko : Kapit sa patalim Lino Brocka \n", + "\n", + " Result \n", + "0 Won Academy Award \n", + "1 Not Nominated \n", + "2 Not Nominated \n", + "3 Not Nominated \n", + "4 Not Nominated \n", + "5 Not Nominated \n", + "6 Nominated \n", + "7 Nominated \n", + "8 Nominated \n", + "9 Not Nominated \n", + "10 Not Nominated \n", + "11 Not Nominated \n", + "12 Not Nominated \n", + "13 Not Nominated \n", + "14 Not Nominated \n", + "15 Not Nominated \n", + "16 Not Nominated \n", + "17 Not Nominated \n", + "18 Not Nominated \n", + "19 Not Nominated },\n", + " { 'answer': 'Icelandic',\n", + " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", + "0 Argentina The Official Story Spanish \n", + "1 Austria Malambo German \n", + "2 Belgium Dust French \n", + "3 Canada Jacques and November French \n", + "4 Czechoslovakia Scalpel , Please Czech \n", + "5 Denmark Twist and Shout Danish \n", + "6 France Three Men and a Cradle French \n", + "7 West Germany Angry Harvest German \n", + "8 Hungary Colonel Redl German \n", + "9 Iceland Deep Winter Icelandic \n", + "10 India Saagar Hindi \n", + "11 Israel When Night Falls Hebrew \n", + "12 Italy Macaroni Italian \n", + "13 Japan Gray Sunset Japanese \n", + "14 South Korea Eoudong Korean \n", + "15 Mexico Frida Still Life Spanish \n", + "16 Netherlands The Dream Dutch , West Frisian \n", + "17 Norway Wives - Ten Years After Norwegian \n", + "18 Peru The City and the Dogs Spanish \n", + "19 Philippines This Is My Country Tagalog \n", + "\n", + " Original title Director ( s ) \\\n", + "0 La Historia oficial Luis Puenzo \n", + "1 Malambo Milan Dor \n", + "2 Dust Marion Hänsel \n", + "3 Jacques et novembre Jean Beaudry and François Bouvier \n", + "4 Skalpel , prosím Jirí Svoboda \n", + "5 Tro , håb og kærlighed Bille August \n", + "6 Trois hommes et un couffin Coline Serreau \n", + "7 Bittere Ernte Agnieszka Holland \n", + "8 Oberst Redl István Szabó \n", + "9 Skammdegi Þráinn Bertelsson \n", + "10 सागर Ramesh Sippy \n", + "11 עד סוף הלילה Eitan Green \n", + "12 Maccheroni Ettore Scola \n", + "13 花いちもんめ Shunya Ito \n", + "14 어우동 Lee Jang-ho \n", + "15 Frida , naturaleza viva Paul Leduc \n", + "16 De Dream Pieter Verhoeff \n", + "17 Hustruer - ti år etter Anja Breien \n", + "18 La ciudad y los perros Francisco José Lombardi \n", + "19 Bayan ko : Kapit sa patalim Lino Brocka \n", + "\n", + " Result \n", + "0 Won Academy Award \n", + "1 Not Nominated \n", + "2 Not Nominated \n", + "3 Not Nominated \n", + "4 Not Nominated \n", + "5 Not Nominated \n", + "6 Nominated \n", + "7 Nominated \n", + "8 Nominated \n", + "9 Not Nominated \n", + "10 Not Nominated \n", + "11 Not Nominated \n", + "12 Not Nominated \n", + "13 Not Nominated \n", + "14 Not Nominated \n", + "15 Not Nominated \n", + "16 Not Nominated \n", + "17 Not Nominated \n", + "18 Not Nominated \n", + "19 Not Nominated },\n", + " { 'answer': 'Icelandic',\n", + " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", + "0 Argentina The Official Story Spanish \n", + "1 Austria Malambo German \n", + "2 Belgium Dust French \n", + "3 Canada Jacques and November French \n", + "4 Czechoslovakia Scalpel , Please Czech \n", + "5 Denmark Twist and Shout Danish \n", + "6 France Three Men and a Cradle French \n", + "7 West Germany Angry Harvest German \n", + "8 Hungary Colonel Redl German \n", + "9 Iceland Deep Winter Icelandic \n", + "10 India Saagar Hindi \n", + "11 Israel When Night Falls Hebrew \n", + "12 Italy Macaroni Italian \n", + "13 Japan Gray Sunset Japanese \n", + "14 South Korea Eoudong Korean \n", + "15 Mexico Frida Still Life Spanish \n", + "16 Netherlands The Dream Dutch , West Frisian \n", + "17 Norway Wives - Ten Years After Norwegian \n", + "18 Peru The City and the Dogs Spanish \n", + "19 Philippines This Is My Country Tagalog \n", + "\n", + " Original title Director ( s ) \\\n", + "0 La Historia oficial Luis Puenzo \n", + "1 Malambo Milan Dor \n", + "2 Dust Marion Hänsel \n", + "3 Jacques et novembre Jean Beaudry and François Bouvier \n", + "4 Skalpel , prosím Jirí Svoboda \n", + "5 Tro , håb og kærlighed Bille August \n", + "6 Trois hommes et un couffin Coline Serreau \n", + "7 Bittere Ernte Agnieszka Holland \n", + "8 Oberst Redl István Szabó \n", + "9 Skammdegi Þráinn Bertelsson \n", + "10 सागर Ramesh Sippy \n", + "11 עד סוף הלילה Eitan Green \n", + "12 Maccheroni Ettore Scola \n", + "13 花いちもんめ Shunya Ito \n", + "14 어우동 Lee Jang-ho \n", + "15 Frida , naturaleza viva Paul Leduc \n", + "16 De Dream Pieter Verhoeff \n", + "17 Hustruer - ti år etter Anja Breien \n", + "18 La ciudad y los perros Francisco José Lombardi \n", + "19 Bayan ko : Kapit sa patalim Lino Brocka \n", + "\n", + " Result \n", + "0 Won Academy Award \n", + "1 Not Nominated \n", + "2 Not Nominated \n", + "3 Not Nominated \n", + "4 Not Nominated \n", + "5 Not Nominated \n", + "6 Nominated \n", + "7 Nominated \n", + "8 Nominated \n", + "9 Not Nominated \n", + "10 Not Nominated \n", + "11 Not Nominated \n", + "12 Not Nominated \n", + "13 Not Nominated \n", + "14 Not Nominated \n", + "15 Not Nominated \n", + "16 Not Nominated \n", + "17 Not Nominated \n", + "18 Not Nominated \n", + "19 Not Nominated },\n", + " { 'answer': 'Rocco Mediate',\n", + " 'context': Place Player Country Score To par\n", + "0 1 Phil Mickelson United States 70-72-70=212 –4\n", + "1 T2 Chad Campbell United States 71-67-75=213 –3\n", + "2 T2 Fred Couples United States 71-70-72=213 –3\n", + "3 T4 Stephen Ames Canada 74-70-70=214 –2\n", + "4 T4 Tim Clark South Africa 70-72-72=214 –2\n", + "5 T4 Darren Clarke Northern Ireland 72-70-72=214 –2\n", + "6 T4 Rocco Mediate United States 68-73-73=214 –2\n", + "7 T4 Vijay Singh Fiji 67-74-73=214 –2\n", + "8 T4 Tiger Woods United States 72-71-71=214 –2\n", + "9 T10 Retief Goosen South Africa 70-73-72=215 –1\n", + "10 T10 Miguel Ángel Jiménez Spain 72-74-69=215 –1},\n", + " { 'answer': 'Ngangbam Soniya Chanu',\n", + " 'context': Medal Name \\\n", + "0 Silver Ngangbam Soniya Chanu \n", + "1 Silver Sukhen Dey \n", + "2 Silver Omkar Singh & Deepak Sharma \n", + "3 Silver Tejaswini Sawant & Lajjakumari Gauswami \n", + "4 Silver Nishan Singh Gill \n", + "5 Silver Abhinav Bindra \n", + "6 Silver Asher Noria & Ronjan Sodhi \n", + "7 Silver Manoj Kumar \n", + "8 Silver Ritul Chatterjee , Jignas Chittibomma & Chinna Raju Srither \n", + "9 Silver Ronjan Sodhi \n", + "10 Silver Nirmala Devi \n", + "11 Silver Ashish Kumar \n", + "12 Silver Manavjit Singh Sandhu & Mansher Singh \n", + "13 Silver Babita Kumari \n", + "14 Silver Mouma Das , Poulomi Ghatak & Shamini Kumaresan \n", + "15 Silver Badminton Mixed Team \n", + "16 Silver Sania Mirza \n", + "17 Silver Vijay Kumar \n", + "18 Silver Anuj Kumar \n", + "19 Silver Joginder Kumar \n", + "\n", + " Sport Event Date \n", + "0 Weightlifting Women 's 48kg 4 October \n", + "1 Weightlifting Men 's 56kg 4 October \n", + "2 Shooting Men 's 50m Pistol ( Pairs ) 5 October \n", + "3 Shooting Women 's 50m Rifle 3 Positions ( Pairs ) 5 October \n", + "4 Shooting Women 's 25m Pistol ( Single ) 6 October \n", + "5 Shooting Men 's 10m Air Rifle ( Singles ) 6 October \n", + "6 Shooting Men 's Double trap ( Pairs ) 6 October \n", + "7 Wrestling Men 's Greco-Roman 84 kg 6 October \n", + "8 Archery Men 's compound team 7 October \n", + "9 Shooting Men 's Double trap Individual 7 October \n", + "10 Wrestling Women 's freestyle 48 kg 7 October \n", + "11 Gymnastics Men 's Vault 8 October \n", + "12 Shooting Men 's Trap ( Pairs ) 8 October \n", + "13 Wrestling Women 's freestyle 51 kg 8 October \n", + "14 Table Tennis Women 's team 8 October \n", + "15 Badminton Mixed team 8 October \n", + "16 Tennis Women 's singles 9 October \n", + "17 Shooting Men 's 25m centre fire pistol Individual 10 October \n", + "18 Wrestling Men 's freestyle 84 kg 10 October \n", + "19 Wrestling Men 's freestyle 120 kg 10 October },\n", + " { 'answer': '79',\n", + " 'context': Player Ct Span\n", + "0 Suresh Raina (CSK, GL) 95 2008–2018\n", + "1 Rohit Sharma (DC, MI) 79 2008–2018\n", + "2 AB de Villiers (DD, RCB) 78 2008–2018\n", + "3 Kieron Pollard (MI) 74 2010–2018\n", + "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", + " { 'answer': '78',\n", + " 'context': Player Ct Span\n", + "0 Suresh Raina (CSK, GL) 95 2008–2018\n", + "1 Rohit Sharma (DC, MI) 79 2008–2018\n", + "2 AB de Villiers (DD, RCB) 78 2008–2018\n", + "3 Kieron Pollard (MI) 74 2010–2018\n", + "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", + " { 'answer': '74',\n", + " 'context': Player Ct Span\n", + "0 Suresh Raina (CSK, GL) 95 2008–2018\n", + "1 Rohit Sharma (DC, MI) 79 2008–2018\n", + "2 AB de Villiers (DD, RCB) 78 2008–2018\n", + "3 Kieron Pollard (MI) 74 2010–2018\n", + "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", + " { 'answer': 'Canada',\n", + " 'context': Place Player Country Score To par\n", + "0 1 Phil Mickelson United States 70-72-70=212 –4\n", + "1 T2 Chad Campbell United States 71-67-75=213 –3\n", + "2 T2 Fred Couples United States 71-70-72=213 –3\n", + "3 T4 Stephen Ames Canada 74-70-70=214 –2\n", + "4 T4 Tim Clark South Africa 70-72-72=214 –2\n", + "5 T4 Darren Clarke Northern Ireland 72-70-72=214 –2\n", + "6 T4 Rocco Mediate United States 68-73-73=214 –2\n", + "7 T4 Vijay Singh Fiji 67-74-73=214 –2\n", + "8 T4 Tiger Woods United States 72-71-71=214 –2\n", + "9 T10 Retief Goosen South Africa 70-73-72=215 –1\n", + "10 T10 Miguel Ángel Jiménez Spain 72-74-69=215 –1}]\n" ] } + ], + "source": [ + "# We can see both text passages and tables as contexts of the predicted answers.\n", + "print_answers(predictions, details=\"minimum\")" ] }, { "cell_type": "code", - "source": [ - "# Example query whose answer resides in a table\n", - "predictions = text_table_qa_pipeline.run(query=\"What is Cuba's national tree?\")" - ], + "execution_count": null, "metadata": { "id": "QYOHDSmLpzEg" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "# Example query whose answer resides in a table\n", + "predictions = text_table_qa_pipeline.run(query=\"Which country does the film Macaroni come from?\")" + ] }, { "cell_type": "code", - "source": [ - "# We can see both text passages and tables as contexts of the predicted answers.\n", - "print_answers(predictions, details=\"minimum\")" - ], + "execution_count": 26, "metadata": { - "id": "4kw53uWep3zj", - "outputId": "b332cc17-3cb8-4e20-d79d-bb4cf656f277", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "4kw53uWep3zj", + "outputId": "b332cc17-3cb8-4e20-d79d-bb4cf656f277" }, - "execution_count": 26, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "\n", "Query: What is Cuba's national tree?\n", @@ -1311,6 +2756,52 @@ " 'Maldonado , Tambopata , the Sacred Valley'}]\n" ] } + ], + "source": [ + "# We can see both text passages and tables as contexts of the predicted answers.\n", + "print_answers(predictions, details=\"minimum\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluation\n", + "To evaluate our pipeline, we can use haystack's evaluation feature. We just need to convert our labels into `MultiLabel` objects and the `eval` method will do the rest." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from haystack import Label, MultiLabel\n", + "\n", + "def read_labels(filename, tables):\n", + " processed_labels = []\n", + " with open(filename) as labels:\n", + " labels = json.load(labels)\n", + " for table in tables:\n", + " if table.id not in labels:\n", + " continue\n", + " label = labels[table.id]\n", + " label = Label(query=label[\"query\"], document=table, is_correct_answer=True, is_correct_document=True, answer=Answer(answer=label[\"answer\"]), origin=\"gold-label\")\n", + " processed_labels.append(MultiLabel(labels=[label]))\n", + " return processed_labels\n", + "\n", + "table_labels = read_labels(f\"{doc_dir}/labels.json\", tables)\n", + "passage_labels = read_labels(f\"{doc_dir}/labels.json\", passages)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={\"top_k\": 10})\n", + "text_table_qa_pipeline.print_eval_report(eval_results)" ] }, { @@ -1349,9 +2840,18 @@ "name": "python3" }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.9" } }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index b77e719deb..35cdc5b34c 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -23,14 +23,14 @@ def tutorial15_tableqa(): ## Add Tables to DocumentStore # Let's first fetch some tables that we want to query - # Here: 1000 tables from OTT-QA + # Here: 1000 tables + texts doc_dir = "data" - s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_tables_sample.json.zip" + s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip" fetch_archive_from_http(url=s3_url, output_dir=doc_dir) # Add the tables to the DocumentStore - def read_ottqa_tables(filename): + def read_tables(filename): processed_tables = [] with open(filename) as tables: tables = json.load(tables) @@ -38,19 +38,16 @@ def read_ottqa_tables(filename): current_columns = table["header"] current_rows = table["data"] current_df = pd.DataFrame(columns=current_columns, data=current_rows) - current_doc_title = table["title"] - current_section_title = table["section_title"] document = Document( content=current_df, content_type="table", - meta={"title": current_doc_title, "section_title": current_section_title}, id=key, ) processed_tables.append(document) return processed_tables - tables = read_ottqa_tables("data/ottqa_tables_sample.json") + tables = read_tables("data/ottqa_tables_sample.json") document_store.write_documents(tables, index="document") ### Retriever @@ -79,7 +76,7 @@ def read_ottqa_tables(filename): # Try the Retriever from haystack.utils import print_documents - retrieved_tables = retriever.retrieve("How many twin buildings are under construction?", top_k=5) + retrieved_tables = retriever.retrieve("Who won the Super Bowl?", top_k=5) # Get highest scored table print(retrieved_tables[0].content) @@ -95,10 +92,10 @@ def read_ottqa_tables(filename): # Try the TableReader on one Table (highest-scored retrieved table) - table_doc = document_store.get_document_by_id("List_of_tallest_twin_buildings_and_structures_in_the_world_1") + table_doc = document_store.get_document_by_id("36964e90-3735-4ba1-8e6a-bec236e88bb2") print(table_doc.content) - prediction = reader.predict(query="How many twin buildings are under construction?", documents=[table_doc]) + prediction = reader.predict(query="Who played Gregory House in the series House?", documents=[table_doc]) print_answers(prediction, details="minimum") ### Pipeline @@ -112,7 +109,7 @@ def read_ottqa_tables(filename): table_qa_pipeline.add_node(component=retriever, name="TableTextRetriever", inputs=["Query"]) table_qa_pipeline.add_node(component=reader, name="TableReader", inputs=["TableTextRetriever"]) - prediction = table_qa_pipeline.run("How many twin buildings are under construction?") + prediction = table_qa_pipeline.run("When was Guilty Gear Xrd : Sign released?") print_answers(prediction, details="minimum") ### Pipeline for QA on Combination of Text and Tables @@ -137,12 +134,12 @@ def read_ottqa_tables(filename): text_table_qa_pipeline.add_node(component=join_answers, name="JoinAnswers", inputs=["TextReader", "TableReader"]) # Example query whose answer resides in a text passage - predictions = text_table_qa_pipeline.run(query="Who is Aleksandar Trifunovic?") + predictions = text_table_qa_pipeline.run(query="Which country does the film Macaroni come from?") # We can see both text passages and tables as contexts of the predicted answers. print_answers(predictions, details="minimum") # Example query whose answer resides in a table - predictions = text_table_qa_pipeline.run(query="What is Cuba's national tree?") + predictions = text_table_qa_pipeline.run(query="What is the Senior Bowl?") # We can see both text passages and tables as contexts of the predicted answers. print_answers(predictions, details="minimum") From c942cd24ceadb38f6002877eaeb48ce139a0ba67 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:17:16 +0000 Subject: [PATCH 02/11] Update Documentation & Code Style --- docs/_src/tutorials/tutorials/15.md | 86 ++++++++++++++++++----------- tutorials/Tutorial15_TableQA.ipynb | 18 ++++-- tutorials/Tutorial15_TableQA.py | 6 +- 3 files changed, 67 insertions(+), 43 deletions(-) diff --git a/docs/_src/tutorials/tutorials/15.md b/docs/_src/tutorials/tutorials/15.md index b2c606c5f5..b244a4f388 100644 --- a/docs/_src/tutorials/tutorials/15.md +++ b/docs/_src/tutorials/tutorials/15.md @@ -84,7 +84,7 @@ document_store = ElasticsearchDocumentStore( ``` ## Add Tables to DocumentStore -To quickly demonstrate the capabilities of the `TableTextRetriever` and the `TableReader` we use a subset of 1000 tables of the [Open Table-and-Text Question Answering (OTT-QA) dataset](https://github.com/wenhuchen/OTT-QA). +To quickly demonstrate the capabilities of the `TableTextRetriever` and the `TableReader` we use a subset of 1000 tables and text documents from a dataset we have published in [this paper](https://arxiv.org/abs/2108.04049). Just as text passages, tables are represented as `Document` objects in Haystack. The content field, though, is a pandas DataFrame instead of a string. @@ -95,7 +95,7 @@ Just as text passages, tables are represented as `Document` objects in Haystack. from haystack.utils import fetch_archive_from_http doc_dir = "data" -s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_sample.zip" +s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip" fetch_archive_from_http(url=s3_url, output_dir=doc_dir) ``` @@ -108,7 +108,7 @@ from haystack import Document import pandas as pd -def read_ottqa_tables(filename): +def read_tables(filename): processed_tables = [] with open(filename) as tables: tables = json.load(tables) @@ -116,20 +116,13 @@ def read_ottqa_tables(filename): current_columns = table["header"] current_rows = table["data"] current_df = pd.DataFrame(columns=current_columns, data=current_rows) - current_doc_title = table["title"] - current_section_title = table["section_title"] - document = Document( - content=current_df, - content_type="table", - meta={"title": current_doc_title, "section_title": current_section_title}, - id=key, - ) + document = Document(content=current_df, content_type="table", id=key) processed_tables.append(document) return processed_tables -tables = read_ottqa_tables(f"{doc_dir}/ottqa_tables_sample.json") +tables = read_tables(f"{doc_dir}/tables.json") document_store.write_documents(tables, index=document_index) # Showing content field and meta field of one of the Documents of content_type 'table' @@ -183,7 +176,7 @@ document_store.update_embeddings(retriever=retriever) # Try the Retriever from haystack.utils import print_documents -retrieved_tables = retriever.retrieve("How many twin buildings are under construction?", top_k=5) +retrieved_tables = retriever.retrieve("Who won the Super Bowl?", top_k=5) # Get highest scored table print(retrieved_tables[0].content) ``` @@ -204,7 +197,7 @@ reader = TableReader(model_name_or_path="google/tapas-base-finetuned-wtq", max_s ```python # Try the TableReader on one Table (highest-scored retrieved table from previous section) -table_doc = document_store.get_document_by_id("List_of_tallest_twin_buildings_and_structures_in_the_world_1") +table_doc = document_store.get_document_by_id("36964e90-3735-4ba1-8e6a-bec236e88bb2") print(table_doc.content) ``` @@ -212,14 +205,12 @@ print(table_doc.content) ```python from haystack.utils import print_answers -prediction = reader.predict(query="How many twin buildings are under construction?", documents=[table_doc]) +prediction = reader.predict(query="Who played Gregory House in the series House?", documents=[table_doc]) print_answers(prediction, details="all") ``` The offsets in the `offsets_in_document` and `offsets_in_context` field indicate the table cells that the model predicts to be part of the answer. They need to be interpreted on the linearized table, i.e., a flat list containing all of the table cells. -In the `Answer`'s meta field, you can find the aggreagtion operator used to construct the answer (in this case `COUNT`) and the answer cells as strings. - ```python print(f"Predicted answer: {prediction['answers'][0].answer}") @@ -243,34 +234,27 @@ table_qa_pipeline.add_node(component=reader, name="TableReader", inputs=["TableT ```python -prediction = table_qa_pipeline.run("How many twin buildings are under construction?") +prediction = table_qa_pipeline.run("When was Guilty Gear Xrd : Sign released?", params={"top_k": 30}) print_answers(prediction, details="minimum") ``` -# Open-Domain QA on Text and Tables -With haystack, you not only have the possibility to do QA on texts or tables, solely, but you can also use both texts and tables as your source of information. - -To demonstrate this, we add 1,000 sample text passages from the OTT-QA dataset. - ```python -# Add 1,000 text passages from OTT-QA to our document store. +# Add 500 text passages to our document store. -def read_ottqa_texts(filename): +def read_texts(filename): processed_passages = [] with open(filename) as passages: passages = json.load(passages) - for title, content in passages.items(): - title = title[6:] - title = title.replace("_", " ") - document = Document(content=content, content_type="text", meta={"title": title}) + for key, content in passages.items(): + document = Document(content=content, content_type="text", id=key) processed_passages.append(document) return processed_passages -passages = read_ottqa_texts(f"{doc_dir}/ottqa_texts_sample.json") +passages = read_texts(f"{doc_dir}/texts.json") document_store.write_documents(passages, index=document_index) ``` @@ -321,7 +305,7 @@ display.Image("pipeline.png") ```python # Example query whose answer resides in a text passage -predictions = text_table_qa_pipeline.run(query="Who is Aleksandar Trifunovic?") +predictions = text_table_qa_pipeline.run(query="What is the Senior Bowl?") ``` @@ -333,7 +317,7 @@ print_answers(predictions, details="minimum") ```python # Example query whose answer resides in a table -predictions = text_table_qa_pipeline.run(query="What is Cuba's national tree?") +predictions = text_table_qa_pipeline.run(query="Which country does the film Macaroni come from?") ``` @@ -342,6 +326,44 @@ predictions = text_table_qa_pipeline.run(query="What is Cuba's national tree?") print_answers(predictions, details="minimum") ``` +## Evaluation +To evaluate our pipeline, we can use haystack's evaluation feature. We just need to convert our labels into `MultiLabel` objects and the `eval` method will do the rest. + + +```python +from haystack import Label, MultiLabel + + +def read_labels(filename, tables): + processed_labels = [] + with open(filename) as labels: + labels = json.load(labels) + for table in tables: + if table.id not in labels: + continue + label = labels[table.id] + label = Label( + query=label["query"], + document=table, + is_correct_answer=True, + is_correct_document=True, + answer=Answer(answer=label["answer"]), + origin="gold-label", + ) + processed_labels.append(MultiLabel(labels=[label])) + return processed_labels + + +table_labels = read_labels(f"{doc_dir}/labels.json", tables) +passage_labels = read_labels(f"{doc_dir}/labels.json", passages) +``` + + +```python +eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={"top_k": 10}) +text_table_qa_pipeline.print_eval_report(eval_results) +``` + ## About us This [Haystack](https://github.com/deepset-ai/haystack/) notebook was made with love by [deepset](https://deepset.ai/) in Berlin, Germany diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index 583d24d0d3..fd12bfd7b3 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -220,15 +220,12 @@ " current_columns = table[\"header\"]\n", " current_rows = table[\"data\"]\n", " current_df = pd.DataFrame(columns=current_columns, data=current_rows)\n", - " document = Document(\n", - " content=current_df,\n", - " content_type=\"table\",\n", - " id=key,\n", - " )\n", + " document = Document(content=current_df, content_type=\"table\", id=key)\n", " processed_tables.append(document)\n", "\n", " return processed_tables\n", "\n", + "\n", "tables = read_tables(f\"{doc_dir}/tables.json\")\n", "document_store.write_documents(tables, index=document_index)\n", "\n", @@ -2778,6 +2775,7 @@ "source": [ "from haystack import Label, MultiLabel\n", "\n", + "\n", "def read_labels(filename, tables):\n", " processed_labels = []\n", " with open(filename) as labels:\n", @@ -2786,10 +2784,18 @@ " if table.id not in labels:\n", " continue\n", " label = labels[table.id]\n", - " label = Label(query=label[\"query\"], document=table, is_correct_answer=True, is_correct_document=True, answer=Answer(answer=label[\"answer\"]), origin=\"gold-label\")\n", + " label = Label(\n", + " query=label[\"query\"],\n", + " document=table,\n", + " is_correct_answer=True,\n", + " is_correct_document=True,\n", + " answer=Answer(answer=label[\"answer\"]),\n", + " origin=\"gold-label\",\n", + " )\n", " processed_labels.append(MultiLabel(labels=[label]))\n", " return processed_labels\n", "\n", + "\n", "table_labels = read_labels(f\"{doc_dir}/labels.json\", tables)\n", "passage_labels = read_labels(f\"{doc_dir}/labels.json\", passages)" ] diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index 35cdc5b34c..ca53ad28b9 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -38,11 +38,7 @@ def read_tables(filename): current_columns = table["header"] current_rows = table["data"] current_df = pd.DataFrame(columns=current_columns, data=current_rows) - document = Document( - content=current_df, - content_type="table", - id=key, - ) + document = Document(content=current_df, content_type="table", id=key) processed_tables.append(document) return processed_tables From 6b87b96c2135862cf97db35ddab6b1b52f04fa60 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Mon, 28 Mar 2022 16:02:24 +0200 Subject: [PATCH 03/11] fix tutorial 15 --- tutorials/Tutorial15_TableQA.ipynb | 2405 +++------------------------- tutorials/Tutorial15_TableQA.py | 4 +- 2 files changed, 188 insertions(+), 2221 deletions(-) diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index 583d24d0d3..671f306c26 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "id": "S4PGj1A6wKWu" }, @@ -111,20 +111,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "id": "RmxepXZtwQ0E" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.document_stores.base - Numba not found, replacing njit() with no-op implementation. Enable it with 'pip install numba'.\n", - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n" - ] - } - ], + "outputs": [], "source": [ "# Connect to Elasticsearch\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", @@ -167,7 +158,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -175,35 +166,7 @@ "id": "SKjw2LuXxlGh", "outputId": "92c67d24-d6fb-413e-8dd7-53075141d508" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Opponent M W L T NR Win% First Last\n", - "0 Afghanistan 2 2 0 0 0 100.0 2012 2014\n", - "1 Australia 98 32 62 1 3 34.21 1975 2017\n", - "2 Bangladesh 35 31 4 0 0 88.57 1986 2015\n", - "3 Canada 2 2 0 0 0 100.0 1979 2011\n", - "4 England 82 31 49 0 2 38.75 1974 2017\n", - "5 Hong Kong 2 2 0 0 0 100.0 2004 2008\n", - "6 India 129 73 52 0 4 58.4 1978 2017\n", - "7 Ireland 7 5 1 1 0 78.57 2007 2016\n", - "8 Kenya 6 6 0 0 0 100.0 1996 2011\n", - "9 Namibia 1 1 0 0 0 100.0 2003 2003\n", - "10 Netherlands 3 3 0 0 0 100.0 1996 2003\n", - "11 New Zealand 103 53 47 1 2 52.97 1973 2018\n", - "12 Scotland 3 3 0 0 0 100.0 1999 2013\n", - "13 South Africa 73 25 47 0 1 34.72 1992 2017\n", - "14 Sri Lanka 153 90 58 1 4 60.73 1975 2017\n", - "15 United Arab Emirates 3 3 0 0 0 100.0 1994 2015\n", - "16 West Indies 133 60 70 3 0 46.24 1975 2017\n", - "17 Zimbabwe 59 52 4 1 2 92.1 1992 2018\n", - "18 Total[12] 894 474 394 8 18 54.56 1973 2018\n", - "{}\n" - ] - } - ], + "outputs": [], "source": [ "# Add the tables to the DocumentStore\n", "\n", @@ -260,41 +223,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "EY_qvdV6wyK5" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-question_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-question_encoder\n", - "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", - "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", - "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-passage_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-passage_encoder\n", - "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", - "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", - "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-table_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-table_encoder\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes.retriever import TableTextRetriever\n", "\n", @@ -302,27 +235,17 @@ " document_store=document_store,\n", " query_embedding_model=\"deepset/bert-small-mm_retrieval-question_encoder\",\n", " passage_embedding_model=\"deepset/bert-small-mm_retrieval-passage_encoder\",\n", - " table_embedding_model=\"deepset/bert-small-mm_retrieval-table_encoder\",\n", - " embed_meta_fields=[\"title\", \"section_title\"],\n", + " table_embedding_model=\"deepset/bert-small-mm_retrieval-table_encoder\"\n", ")" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "jasi1RM2zIJ7" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.document_stores.elasticsearch - Updating embeddings for all 437 docs ...\n", - "Updating embeddings: 10000 Docs [00:22, 449.16 Docs/s] \n" - ] - } - ], + "outputs": [], "source": [ "# Add table embeddings to the tables in DocumentStore\n", "document_store.update_embeddings(retriever=retriever)" @@ -330,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "id": "XM-ijy6Zz11L" }, @@ -343,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -351,27 +274,7 @@ "id": "YHfQWxVI0N2e", "outputId": "1d8dc4d2-a184-489e-defa-d445d76c458f" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Year Coach Super Bowl \\\n", - "0 1966 Vince Lombardi I \n", - "1 1967 Vince Lombardi II \n", - "2 1996 Mike Holmgren XXXI \n", - "3 2010 Mike McCarthy XLV \n", - "4 Total Super Bowls won: Total Super Bowls won: Total Super Bowls won: \n", - "\n", - " Location Opponent Score Record \n", - "0 Los Angeles, California Kansas City Chiefs 35–10 12–2 \n", - "1 Miami, Florida Oakland Raiders 33–14 9–4–1 \n", - "2 New Orleans, Louisiana New England Patriots 35–21 13–3 \n", - "3 Arlington, Texas Pittsburgh Steelers 31–25 10–6 \n", - "4 Total Super Bowls won: Total Super Bowls won: 4 4 \n" - ] - } - ], + "outputs": [], "source": [ "# Try the Retriever\n", "from haystack.utils import print_documents\n", @@ -395,20 +298,11 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "id": "4APcRoio2RxG" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes import TableReader\n", "\n", @@ -417,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -425,47 +319,7 @@ "id": "ILuAXkyN4F7x", "outputId": "4bd19dcb-df8e-4a4d-b9d2-d34650e9e5c2" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Name Program Role Salary Year \\\n", - "0 Simon Cowell The X Factor Judge $75 million 2012–13 \n", - "1 Britney Spears American Idol $25 million 2017–18 [15] \n", - "2 Jennifer Lopez $20 million 2011–12 [16] nan \n", - "3 Mariah Carey $18 million 2012–13 [17] nan \n", - "4 Hugh Laurie House Gregory House $15 million 2013 \n", - "5 Ryan Seacrest American Idol Host 2013–16 [14] \n", - "6 Katy Perry The X Factor Judge 2012 [17] \n", - "7 Miley Cyrus The Voice Coach $13 million 2016–17 \n", - "8 Adam Levine 2016–18 [18] nan nan \n", - "9 Blake Shelton 2016–18 [18] nan nan \n", - "10 Christina Aguilera $12.5 million 2013 [19] nan \n", - "11 Kelly Clarkson $12 million 2018 [20] nan \n", - "12 Shakira 2013 [19] nan nan \n", - "13 Gwen Stefani 2017 [21] nan nan \n", - "14 Nicki Minaj American Idol Judge 2012–13 [19] \n", - "\n", - " Ref. \n", - "0 [14] \n", - "1 nan \n", - "2 nan \n", - "3 nan \n", - "4 [14] \n", - "5 nan \n", - "6 nan \n", - "7 [18] \n", - "8 nan \n", - "9 nan \n", - "10 nan \n", - "11 nan \n", - "12 nan \n", - "13 nan \n", - "14 nan \n" - ] - } - ], + "outputs": [], "source": [ "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", "\n", @@ -475,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -483,50 +337,7 @@ "id": "ilbsecgA4vfN", "outputId": "f845f43e-43e8-48fe-d0ef-91b17a5eff0e" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Query: Who played Gregory House in the series House?\n", - "Answers:\n", - "[ ]\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.utils import print_answers\n", "\n", @@ -545,7 +356,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -553,16 +364,7 @@ "id": "It8XYT2ZTVJs", "outputId": "7d31af60-e04a-485d-f0ee-f29592b03928" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Predicted answer: Hugh Laurie\n", - "Meta field: {'aggregation_operator': 'NONE', 'answer_cells': ['Hugh Laurie']}\n" - ] - } - ], + "outputs": [], "source": [ "print(f\"Predicted answer: {prediction['answers'][0].answer}\")\n", "print(f\"Meta field: {prediction['answers'][0].meta}\")" @@ -582,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "id": "G-aZZvyv4-Mf" }, @@ -598,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -606,1296 +408,7 @@ "id": "m8evexnW6dev", "outputId": "40514084-f516-4f13-fb48-6a55cb578366" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/homebrew/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3440: RuntimeWarning: Mean of empty slice.\n", - " return _methods._mean(a, axis=axis, dtype=dtype,\n", - "/opt/homebrew/lib/python3.9/site-packages/numpy/core/_methods.py:189: RuntimeWarning: invalid value encountered in double_scalars\n", - " ret = ret.dtype.type(ret / rcount)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Query: When was Guilty Gear Xrd : Sign released?\n", - "Answers:\n", - "[ { 'answer': 'December 16 , 2014',\n", - " 'context': Title First release \\\n", - "0 Guilty Gear Xrd : Sign December 16 , 2014 \n", - "1 BlazBlue : Chrono Phantasma Extend June 30 , 2015 \n", - "2 Aegis of Earth : Protonovus Assault March 15 , 2016 \n", - "3 BlazBlue : Central Fiction October 6 , 2016 \n", - "4 Chronicles of Teddy : Harmony of Exidus March 29 , 2016 \n", - "5 Guilty Gear Xrd : Revelator June 7 , 2016 \n", - "6 Exist Archive : The Other Side of the Sky October 18 , 2016 \n", - "7 Guilty Gear Xrd : Rev 2 May 25 , 2017 \n", - "8 Under Night In-Birth Exe : Late [ st ] Late 2017 \n", - "9 School Girl/Zombie Hunter Late 2017 \n", - "10 Tokyo Xanadu eX+ 2017 \n", - "11 Code : Realize ~Bouquet of Rainbows~ 2018 \n", - "12 Death Mark 2018 \n", - "13 NG ( Visual Novel ) 2019 \n", - "\n", - " Developer ( s ) Platform ( s ) \n", - "0 Arc System Works PlayStation 4 \n", - "1 Arc System Works PlayStation 4 \n", - "2 Acquire PlayStation 4 \n", - "3 Arc System Works PlayStation 4 \n", - "4 LookAtMyGame PlayStation 4 ( PSN ) \n", - "5 Arc System Works PlayStation 4 \n", - "6 Spike Chunsoft , tri-Ace PlayStation 4 \n", - "7 Arc System Works PlayStation 4 \n", - "8 Ecole Software , French Bread PlayStation 4 \n", - "9 Tamsoft PlayStation 4 \n", - "10 Falcom PlayStation 4 \n", - "11 Otomate PlayStation 4 \n", - "12 Experience Inc PlayStation 4 \n", - "13 Experience Inc PlayStation 4 },\n", - " { 'answer': 'October 7 , 2008',\n", - " 'context': Title \\\n", - "0 Battle Fantasia \n", - "1 Guilty Gear 2 : Overture \n", - "2 BlazBlue : Calamity Trigger \n", - "3 0-D Beat Drop \n", - "4 Record of Agarest War \n", - "5 DeathSmiles \n", - "6 BlazBlue : Continuum Shift \n", - "7 Record of Agarest War Zero \n", - "8 Bit.Trip Presents ... Runner2 : Future Legend of Rhythm Alien \n", - "9 A.R.E.S : Extinction Agenda EX \n", - "\n", - " First release Developer ( s ) Platform ( s ) \n", - "0 September 16 , 2008 Arc System Works Xbox 360 \n", - "1 October 7 , 2008 Arc System Works Xbox 360 \n", - "2 June 30 , 2009 Arc System Works Xbox 360 \n", - "3 November 11 , 2009 Cyclone Zero Xbox 360 ( XBLA ) \n", - "4 April 27 , 2010 Compile Heart , Red Entertainment Xbox 360 \n", - "5 June 28 , 2010 Cave Xbox 360 \n", - "6 July 27 , 2010 Arc System Works Xbox 360 \n", - "7 June 14 , 2011 Compile Heart , Red Entertainment Xbox 360 \n", - "8 February 27 , 2013 Gaijin Games Xbox 360 ( XBLA ) \n", - "9 October 2 , 2013 Extend Studio Xbox 360 ( XBLA ) },\n", - " { 'answer': 'April 7 , 2009',\n", - " 'context': Title First release \\\n", - "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", - "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", - "2 Cho Aniki Zero March 25 , 2010 \n", - "3 Mimana Iyar Chronicle March 30 , 2010 \n", - "4 Gladiator Begins September 14 , 2010 \n", - "5 Blazing Souls Accelate October 19 , 2010 \n", - "6 Jikandia : The Timeless Land March 15 , 2011 \n", - "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", - "8 Fate/Extra November 1 , 2011 \n", - "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", - "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", - "11 Ragnarok Tactics February 19 , 2013 \n", - "12 Sweet Fuse : At Your Side August 27 , 2013 \n", - "\n", - " Developer ( s ) \\\n", - "0 Arc System Works \n", - "1 Arc System Works \n", - "2 extreme Co. , Ltd \n", - "3 Kogado Studio , Premium Agency \n", - "4 Goshow \n", - "5 Neverland \n", - "6 Opus Studio Inc \n", - "7 Arc System Works \n", - "8 Type-Moon \n", - "9 Idea Factory , Otomate \n", - "10 Idea Factory \n", - "11 GungHo Online Entertainment , Apollosoft , Chime \n", - "12 Idea Factory , Otomate , Comcept \n", - "\n", - " Platform ( s ) \n", - "0 PlayStation Portable \n", - "1 PlayStation Portable \n", - "2 PlayStation Portable ( PSN ) \n", - "3 PlayStation Portable \n", - "4 PlayStation Portable \n", - "5 PlayStation Portable \n", - "6 PlayStation Portable \n", - "7 PlayStation Portable \n", - "8 PlayStation Portable \n", - "9 PlayStation Portable \n", - "10 PlayStation Portable \n", - "11 PlayStation Portable \n", - "12 PlayStation Portable },\n", - " { 'answer': 'April 7 , 2009',\n", - " 'context': Title First release \\\n", - "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", - "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", - "2 Cho Aniki Zero March 25 , 2010 \n", - "3 Mimana Iyar Chronicle March 30 , 2010 \n", - "4 Gladiator Begins September 14 , 2010 \n", - "5 Blazing Souls Accelate October 19 , 2010 \n", - "6 Jikandia : The Timeless Land March 15 , 2011 \n", - "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", - "8 Fate/Extra November 1 , 2011 \n", - "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", - "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", - "11 Ragnarok Tactics February 19 , 2013 \n", - "12 Sweet Fuse : At Your Side August 27 , 2013 \n", - "\n", - " Developer ( s ) \\\n", - "0 Arc System Works \n", - "1 Arc System Works \n", - "2 extreme Co. , Ltd \n", - "3 Kogado Studio , Premium Agency \n", - "4 Goshow \n", - "5 Neverland \n", - "6 Opus Studio Inc \n", - "7 Arc System Works \n", - "8 Type-Moon \n", - "9 Idea Factory , Otomate \n", - "10 Idea Factory \n", - "11 GungHo Online Entertainment , Apollosoft , Chime \n", - "12 Idea Factory , Otomate , Comcept \n", - "\n", - " Platform ( s ) \n", - "0 PlayStation Portable \n", - "1 PlayStation Portable \n", - "2 PlayStation Portable ( PSN ) \n", - "3 PlayStation Portable \n", - "4 PlayStation Portable \n", - "5 PlayStation Portable \n", - "6 PlayStation Portable \n", - "7 PlayStation Portable \n", - "8 PlayStation Portable \n", - "9 PlayStation Portable \n", - "10 PlayStation Portable \n", - "11 PlayStation Portable \n", - "12 PlayStation Portable },\n", - " { 'answer': '2010',\n", - " 'context': Title Year Other artist ( s ) \\\n", - "0 Count on You 2010 Big Time Rush \n", - "1 You Got ta Want It 2011 nan \n", - "2 Chocolate Brown Eyes 2013 Salaam Remi \n", - "3 Vertigo 2013 Jason Derulo \n", - "4 Vertigo 2014 Jason Derulo \n", - "5 Playing With Fire 2015 Thomas Rhett \n", - "6 Too Late for Love 2016 DJ Antoine \n", - "7 Water Guns 2016 Todrick Hall \n", - "8 Chasing 2017 Danny Gokey \n", - "\n", - " Album \n", - "0 BTR \n", - "1 Official Gameday Music of the NFL \n", - "2 One in the Chamber \n", - "3 Tattoos \n", - "4 Talk Dirty \n", - "5 Tangled Up \n", - "6 Provocateur \n", - "7 Straight Outta Oz \n", - "8 Rise },\n", - " { 'answer': '2012',\n", - " 'context': Title Year \\\n", - "0 The American Scream 2012 \n", - "1 Dead Souls 2012 \n", - "2 Ghoul 2012 \n", - "3 Beneath 2013 \n", - "4 Chilling Visions : 5 Senses of Fear 2013 \n", - "5 The Monkey 's Paw 2013 \n", - "6 Animal 2014 \n", - "7 Deep in the Darkness 2014 \n", - "8 The Boy 2015 \n", - "9 SiREN 2016 \n", - "10 Camera Obscura 2017 \n", - "11 Dementia 13 2017 \n", - "\n", - " Production Co \n", - "0 Chiller Films Brainstorm Media \n", - "1 Chiller Films Synthetic Productions \n", - "2 Chiller Films Modernciné \n", - "3 Glass Eye Pix \n", - "4 Chiller Films Synthetic Cinema International \n", - "5 TMP Films \n", - "6 Flower Films Synthetic Cinema International \n", - "7 Chiller Films Synthetic Cinema International \n", - "8 SpectreVision \n", - "9 Studio71 \n", - "10 Chiller Films Hood River Entertainment Paper Street Pictures \n", - "11 Pipeline Entertainment Haloran LLC },\n", - " { 'answer': 'November 15 , 2007',\n", - " 'context': Title First release \\\n", - "0 Hooked ! Real Motion Fishing October 30 , 2007 \n", - "1 Guilty Gear XX Accent Core November 15 , 2007 \n", - "2 MiniCopter : Adventure Flight April 11 , 2008 \n", - "3 River City Ransom April 21 , 2008 \n", - "4 Double Dragon April 28 , 2008 \n", - "5 Renegade May 5 , 2008 \n", - "6 Castle of Shikigami III May 13 , 2008 \n", - "7 Family Table Tennis May 26 , 2008 \n", - "8 Super Dodge Ball September 22 , 2008 \n", - "9 Family Glide Hockey January 19 , 2009 \n", - "10 Bit.Trip Beat March 16 , 2009 \n", - "11 Family Pirate Party May 11 , 2009 \n", - "12 Guilty Gear XX Accent Core Plus May 12 , 2009 \n", - "13 Family Mini Golf June 22 , 2009 \n", - "14 Bit.Trip Core July 6 , 2009 \n", - "15 Family Slot Car Racing August 17 , 2009 \n", - "16 Crash ' n the Boys : Street Challenge September 14 , 2009 \n", - "17 Family Tennis September 21 , 2009 \n", - "18 Family Card Games November 2 , 2009 \n", - "19 Hooked ! Again : Real Motion Fishing November 3 , 2009 \n", - "\n", - " Developer ( s ) Platform ( s ) \n", - "0 SIMS Wii \n", - "1 Arc System Works Wii \n", - "2 Sonic Powered Wii \n", - "3 Technos Wii ( Virtual Console ) \n", - "4 Technos Wii ( Virtual Console ) \n", - "5 Technos Wii ( Virtual Console ) \n", - "6 Alfa System Wii \n", - "7 Arc System Works Wii ( WiiWare ) \n", - "8 Technos Wii ( Virtual Console ) \n", - "9 Arc System Works Wii ( WiiWare ) \n", - "10 Gaijin Games Wii ( WiiWare ) \n", - "11 Arc System Works Wii ( WiiWare ) \n", - "12 Arc System Works Wii \n", - "13 Arc System Works Wii ( WiiWare ) \n", - "14 Gaijin Games Wii ( WiiWare ) \n", - "15 Arc System Works Wii ( WiiWare ) \n", - "16 Technos Wii ( Virtual Console ) \n", - "17 Arc System Works Wii ( WiiWare ) \n", - "18 Arc System Works Wii ( WiiWare ) \n", - "19 SIMS Co. , Ltd Wii },\n", - " { 'answer': '',\n", - " 'context': Game Publisher Release Date \\\n", - "0 Super Mario 64 Nintendo September 26 , 1996 \n", - "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", - "2 Quake GT Interactive June 22 , 1996 \n", - "3 Civilization II MicroProse February 29 , 1996 \n", - "4 Tekken 2 Namco August 25 , 1996 \n", - "5 Wave Race 64 Nintendo November 1 , 1996 \n", - "6 Realms of the Haunting Interplay December 31 , 1996 \n", - "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", - "8 Resident Evil Capcom March 30 , 1996 \n", - "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", - "10 Dragon Force Sega November 30 , 1996 \n", - "11 Guardian Heroes Sega January 25 , 1996 \n", - "12 Super Mario RPG Nintendo March 9 , 1996 \n", - "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", - "14 NiGHTS into Dreams Sega July 5 , 1996 \n", - "15 Pilotwings 64 Nintendo September 26 , 1996 \n", - "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", - "\n", - " Platform ( s ) MC score GR score \n", - "0 Nintendo 64 94/100 96.41% \n", - "1 PlayStation 93/100 94.75% \n", - "2 DOS 94/100 93.22% \n", - "3 Microsoft Windows 94/100 91.29% \n", - "4 PlayStation 89/100 92.50% \n", - "5 Nintendo 64 92/100 90.67% \n", - "6 Microsoft Windows nan 91.86% \n", - "7 PlayStation 91/100 90.02% \n", - "8 PlayStation 91/100 87.23% \n", - "9 DOS 90/100 90.91% \n", - "10 Sega Saturn nan 89.64% \n", - "11 Sega Saturn nan 89.20% \n", - "12 SNES nan 89.12% \n", - "13 DOS 89/100 88.50% \n", - "14 Sega Saturn nan 88.56% \n", - "15 Nintendo 64 80/100 87.52% \n", - "16 Sega Saturn nan 87.50% },\n", - " { 'answer': '',\n", - " 'context': Game Publisher Release Date \\\n", - "0 Super Mario 64 Nintendo September 26 , 1996 \n", - "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", - "2 Quake GT Interactive June 22 , 1996 \n", - "3 Civilization II MicroProse February 29 , 1996 \n", - "4 Tekken 2 Namco August 25 , 1996 \n", - "5 Wave Race 64 Nintendo November 1 , 1996 \n", - "6 Realms of the Haunting Interplay December 31 , 1996 \n", - "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", - "8 Resident Evil Capcom March 30 , 1996 \n", - "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", - "10 Dragon Force Sega November 30 , 1996 \n", - "11 Guardian Heroes Sega January 25 , 1996 \n", - "12 Super Mario RPG Nintendo March 9 , 1996 \n", - "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", - "14 NiGHTS into Dreams Sega July 5 , 1996 \n", - "15 Pilotwings 64 Nintendo September 26 , 1996 \n", - "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", - "\n", - " Platform ( s ) MC score GR score \n", - "0 Nintendo 64 94/100 96.41% \n", - "1 PlayStation 93/100 94.75% \n", - "2 DOS 94/100 93.22% \n", - "3 Microsoft Windows 94/100 91.29% \n", - "4 PlayStation 89/100 92.50% \n", - "5 Nintendo 64 92/100 90.67% \n", - "6 Microsoft Windows nan 91.86% \n", - "7 PlayStation 91/100 90.02% \n", - "8 PlayStation 91/100 87.23% \n", - "9 DOS 90/100 90.91% \n", - "10 Sega Saturn nan 89.64% \n", - "11 Sega Saturn nan 89.20% \n", - "12 SNES nan 89.12% \n", - "13 DOS 89/100 88.50% \n", - "14 Sega Saturn nan 88.56% \n", - "15 Nintendo 64 80/100 87.52% \n", - "16 Sega Saturn nan 87.50% },\n", - " { 'answer': 'April\\xa026,\\xa02018',\n", - " 'context': No. overall No. in season Title Directed by \\\n", - "0 45 1 The Conscience Code\"\" Russell Lee Fine \n", - "1 46 2 Fear and Flesh\"\" Alexandra Kalymnios \n", - "2 47 3 Hell's Gate\"\" Constantine Makris \n", - "3 48 4 Spy Games\"\" Kevin Sullivan \n", - "4 49 5 The Blood of Romeo\"\" David McWhirter \n", - "5 50 6 The Heavens Fall\"\" Russell Lee Fine \n", - "6 51 7 Bullet Train\"[10]\" Rob Bowman \n", - "7 52 8 Deep Cover\"[10]\" Jim McKay \n", - "8 53 9 Fear Feargach\"[10]\" P. J. Pesce \n", - "9 54 10 No Place Is Home\"[10]\" Kenneth Fink \n", - "10 55 11 The Art of War\"[10]\" Jennifer Phang \n", - "11 56 12 Ghosts\"[10]\" Russell Lee Fine \n", - "12 57 13 Who Are You?\"[10]\" Russell Lee Fine \n", - "\n", - " Written by Original air date [3] \\\n", - "0 Michael Seitzman April 26, 2018 \n", - "1 Dave Kalstein May 3, 2018 \n", - "2 Tom Mularz May 10, 2018 \n", - "3 Julia Cohen May 25, 2018 \n", - "4 Adam Armus June 1, 2018 \n", - "5 Michael Brandon Guercio June 15, 2018 \n", - "6 Tom Mularz & Gideon Yago June 22, 2018 \n", - "7 Cole Maliska & Joe Webb June 29, 2018 \n", - "8 Dave Kalstein & Matthew Klam July 6, 2018 \n", - "9 Gisselle Legere & Julia Cohen July 13, 2018 \n", - "10 Adam Armus & Tom Mularz July 20, 2018 \n", - "11 Julia Cohen & Matthew Klam July 27, 2018 \n", - "12 Dave Kalstein & Michael Seitzman August 3, 2018 \n", - "\n", - " U.S. viewers (millions) \n", - "0 2.66[4] \n", - "1 2.15[5] \n", - "2 1.97[6] \n", - "3 2.62[7] \n", - "4 2.99[8] \n", - "5 2.56[9] \n", - "6 TBD \n", - "7 TBD \n", - "8 TBD \n", - "9 TBD \n", - "10 TBD \n", - "11 TBD \n", - "12 TBD },\n", - " { 'answer': \"Don't Push It\",\n", - " 'context': Position Name Rider Age Weight Starting price \\\n", - "0 1st Don't Push It Tony McCoy 10 11-05 10/1 JF \n", - "1 2nd Black Apalachi Denis O'Regan 11 11-06 14/1 \n", - "2 3rd State of Play Paul Moloney 10 10-11 16/1 \n", - "3 4th Big Fella Thanks Barry Geraghty 8 10-12 10/1 JF \n", - "4 5th Hello Bud Sam Twiston-Davies 12 10-06 20/1 \n", - "5 6th Snowy Morning David Casey 10 10-13 14/1 \n", - "6 7th Character Building Nina Carberry 10 10-11 16/1 \n", - "7 8th Cloudy Lane Jason Maguire 10 11-03 25/1 \n", - "8 9th Tricky Trickster Richard Johnson 7 11-04 16/1 \n", - "9 10th Joe Lively Joe Tizzard 11 11-06 33/1 \n", - "10 11th Cerium Davy Russell 9 10-06 50/1 \n", - "11 12th Comply or Die Timmy Murphy 11 10-05 12/1 \n", - "12 13th Piraya Johnny Farrelly 7 10-07 100/1 \n", - "\n", - " Distance Prize money \n", - "0 Winner by 5 lengths £521,052 \n", - "1 5 lengths £196,285 \n", - "2 20 lengths £98,235 \n", - "3 3 lengths £49,117 \n", - "4 7 lengths £24,605 \n", - "5 1½ lengths £12,302 \n", - "6 Neck £6,105 \n", - "7 12 lengths £3,145 \n", - "8 ¾ length Nil \n", - "9 Short head Nil \n", - "10 A distance Nil \n", - "11 8 lengths Nil \n", - "12 A distance Nil },\n", - " { 'answer': '5 June 2009',\n", - " 'context': Episode First broadcast Seans team \\\n", - "0 8x01 5 June 2009 Johnny Vegas and Alex Zane \n", - "1 8x02 12 June 2009 Jeremy Clarkson and James McQuillan \n", - "2 8x03 19 June 2009 Josie Long and Jamelia \n", - "3 8x04 26 June 2009 Tom Felton and Richard E. Grant \n", - "4 8x05 3 July 2009 Yvette Fielding and David Walliams \n", - "5 8x06 10 July 2009 Reginald D. Hunter and Kelly Osbourne \n", - "6 8x07 17 July 2009 Kevin Bridges and Patrick Kielty \n", - "\n", - " Jasons team Scores \n", - "0 Ulrika Jonsson and Jack Whitehall 5–5 \n", - "1 David Walliams and Holly Walsh 2–7 \n", - "2 Mark Watson and Claudia Winkleman 4–4 \n", - "3 Alan Cumming and Lauren Laverne 4–2 \n", - "4 Reginald D. Hunter and Phil Spencer 5–4 \n", - "5 Terry Christian and Isy Suttie 4–6 \n", - "6 Rhod Gilbert and Shappi Khorsandi 3–7 },\n", - " { 'answer': '2017',\n", - " 'context': Year Title Role \\\n", - "0 2017 Mass Effect : Andromeda Various \n", - "1 2017 Lone Echo Hera \n", - "2 2017 Madden NFL 18 : Longshot Various \n", - "3 2017 FIFA 18 Beatriz Villanova \n", - "4 2017 Puzzle Fighter Additional Voices \n", - "5 2017 Need for Speed Payback Additional Voices \n", - "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", - "7 2018 FIFA 19 Beatriz Villanova \n", - "8 2019 Crackdown 3 Additional Voices \n", - "9 2019 Anthem Princess Zhim \n", - "10 2019 FIFA 20 Beatriz Villanova \n", - "\n", - " Notes \n", - "0 Performance Capture Actor \n", - "1 Voice acting \n", - "2 Motion capture actor \n", - "3 Voice acting \n", - "4 nan \n", - "5 nan \n", - "6 Voice acting \n", - "7 Voice acting \n", - "8 nan \n", - "9 Voice acting \n", - "10 Voice acting },\n", - " { 'answer': '2017',\n", - " 'context': Year Title Role \\\n", - "0 2017 Mass Effect : Andromeda Various \n", - "1 2017 Lone Echo Hera \n", - "2 2017 Madden NFL 18 : Longshot Various \n", - "3 2017 FIFA 18 Beatriz Villanova \n", - "4 2017 Puzzle Fighter Additional Voices \n", - "5 2017 Need for Speed Payback Additional Voices \n", - "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", - "7 2018 FIFA 19 Beatriz Villanova \n", - "8 2019 Crackdown 3 Additional Voices \n", - "9 2019 Anthem Princess Zhim \n", - "10 2019 FIFA 20 Beatriz Villanova \n", - "\n", - " Notes \n", - "0 Performance Capture Actor \n", - "1 Voice acting \n", - "2 Motion capture actor \n", - "3 Voice acting \n", - "4 nan \n", - "5 nan \n", - "6 Voice acting \n", - "7 Voice acting \n", - "8 nan \n", - "9 Voice acting \n", - "10 Voice acting },\n", - " { 'answer': '7 May 2013 (hardcover)',\n", - " 'context': # Title Publisher \\\n", - "0 1 Dead Until Dark Ace Books \n", - "1 2 Living Dead in Dallas Ace Books \n", - "2 3 Club Dead Ace Books \n", - "3 4 Dead to the World Ace Hardcover \n", - "4 5 Dead as a Doornail Ace Hardcover \n", - "5 6 Definitely Dead Ace Hardcover \n", - "6 7 All Together Dead Ace Hardcover \n", - "7 8 From Dead to Worse Ace Hardcover \n", - "8 9 Dead and Gone Ace Hardcover \n", - "9 10 Dead in the Family Ace Hardcover \n", - "10 11 Dead Reckoning Ace Hardcover \n", - "11 12 Deadlocked Ace Hardcover \n", - "12 13 Dead Ever After Ace Hardcover \n", - "\n", - " Release Length \\\n", - "0 May 2001 (paperback) January 2008 (hardcover) 291 pp \n", - "1 April 2002 (paperback) January 2009 (hardcover) 291 pp \n", - "2 May 2003 (paperback) March 2010 (hardcover) 292 pp \n", - "3 May 2004 (hardcover) May 2005 (paperback) 291 pp \n", - "4 May 2005 (hardcover) April 2006 (paperback) 295 pp \n", - "5 May 2006 (hardcover) March 2007 (paperback) 324 pp \n", - "6 May 2007 (hardcover) March 2008 (paperback) 336 pp \n", - "7 May 2008 (hardcover) March 2009 (paperback) 359 pp \n", - "8 May 2009 (hardcover) April 2010 (paperback) 312 pp \n", - "9 May 2010 (hardcover) March 2011 (paperback) 311 pp \n", - "10 May 2011 (hardcover) March 2012 (paperback) 325 pp \n", - "11 May 2012 (hardcover) March 2013 (paperback) 336 pp \n", - "12 7 May 2013 (hardcover) 352 pp \n", - "\n", - " Hardcover Paperback \n", - "0 ISBN 0-441-01597-2 ISBN 0-441-00853-4 \n", - "1 ISBN 0-441-01673-1 ISBN 0-441-00923-9 \n", - "2 ISBN 0-441-01910-2 ISBN 0-441-01051-2 \n", - "3 ISBN 0-441-01167-5 ISBN 0-441-01218-3 \n", - "4 ISBN 0-441-01279-5 ISBN 0-441-01333-3 \n", - "5 ISBN 0-441-01400-3 ISBN 0-441-01491-7 \n", - "6 ISBN 0-441-01494-1 ISBN 0-441-01581-6 \n", - "7 ISBN 0-441-01589-1 ISBN 0-441-01701-0 \n", - "8 ISBN 0-441-01715-0 ISBN 0-441-01851-3 \n", - "9 ISBN 0-441-01864-5 ISBN 0-441-02015-1 \n", - "10 ISBN 0-441-02031-3 ISBN 0-441-02060-7 \n", - "11 ISBN 1-937007-44-8 ISBN 0-425-25638-3 \n", - "12 ISBN 193700788X ISBN n/a },\n", - " { 'answer': '2',\n", - " 'context': Pos Artist \\\n", - "0 1 Daniel Lavoie , Patrick Fiori & Garou \n", - "1 2 Manau \n", - "2 3 Céline Dion \n", - "3 4 Lââm \n", - "4 5 Nomads \n", - "5 6 Hermes House Band \n", - "6 7 Brandy & Monica \n", - "7 8 Ménélik & Imane D \n", - "8 9 Ricky Martin \n", - "9 10 Des'ree \n", - "\n", - " Title Sales* \n", - "0 Belle 2,221,000 \n", - "1 La Tribu de Dana 1,415,000 \n", - "2 My Heart Will Go On 1,197,000 \n", - "3 Chanter pour ceux qui sont loin de chez eux 963,000 \n", - "4 Yakalelo 846,000 \n", - "5 I Will Survive 812,000 \n", - "6 The Boy Is Mine 662,000 \n", - "7 Bye bye 613,000 \n", - "8 La Copa De La Vida 563,000 \n", - "9 Life 555,000 },\n", - " { 'answer': '2005',\n", - " 'context': Year Title \\\n", - "0 2005 Kiss Kiss Bang Bang \n", - "1 2006 Bambi II \n", - "2 2006 Curious George \n", - "3 2006 Ice Age: The Meltdown \n", - "4 2006 Over the Hedge \n", - "5 2006 Grilled \n", - "6 2008 One Missed Call \n", - "7 2008 Horton Hears a Who! \n", - "8 2008 Speed Racer \n", - "9 2009 Tales from the Catholic Church of Elvis! \n", - "10 2009 Final Fantasy VII: Advent Children Complete \n", - "11 2009 Life Is Hot in Cracktown \n", - "12 2009 Duress \n", - "13 2009 Opposite Day \n", - "14 2009 Cloudy with a Chance of Meatballs \n", - "15 2009 Afro Samurai: Resurrection \n", - "16 2010 Killers \n", - "17 2010 Nic & Tristan Go Mega Dega \n", - "18 2010 DC Showcase: Green Arrow \n", - "19 2011 Chaperone, TheThe Chaperone \n", - "20 2011 Phineas and Ferb: Across the 2nd Dimension \n", - "21 2011 Fred 2: Night of the Living Fred \n", - "22 2012 Excision \n", - "23 2012 ParaNorman \n", - "24 2012/13 Batman: The Dark Knight Returns – Parts 1 & 2 \n", - "25 2012 Sofia the First: Once Upon a Princess \n", - "26 2013 Dora the Explorer and the Destiny Medallion \n", - "27 2013 Scooby-Doo! Stage Fright \n", - "28 2013 Sofia the First: The Floating Palace \n", - "29 2013 Tad, The Lost Explorer \n", - "30 2014 Mr. Peabody & Sherman \n", - "31 2015 Safelight \n", - "32 2016 Elena and the Secret of Avalor \n", - "33 2017 Smurfs: The Lost Village \n", - "34 2017 The Last Movie Star \n", - "\n", - " Role \\\n", - "0 Young Harmony Faith Lane \n", - "1 Thumper's sister \n", - "2 Kid \n", - "3 Various characters \n", - "4 Additional voices \n", - "5 Dolly \n", - "6 Ellie Layton \n", - "7 Various characters \n", - "8 Young Trixie Shimura \n", - "9 Little girl \n", - "10 Marlene Wallace \n", - "11 Suzie \n", - "12 Sarah Barnett \n", - "13 Carla Benson \n", - "14 Various characters \n", - "15 Young Sio \n", - "16 Sadie \n", - "17 Lisa \n", - "18 Princess Perdita \n", - "19 Sally \n", - "20 Gretchen / Various characters \n", - "21 Talia \n", - "22 Grace \n", - "23 Blithe Hollow – kid \n", - "24 Carrie Kelley/Robin (voice) \n", - "25 Sofia \n", - "26 Dora \n", - "27 Chrissy Damon \n", - "28 Sofia \n", - "29 Sara Lavrof \n", - "30 Penny Peterson \n", - "31 Kate \n", - "32 Sofia \n", - "33 Smurf Lily \n", - "34 Lil \n", - "\n", - " Notes \n", - "0 nan \n", - "1 Voice role \n", - "2 Voice role \n", - "3 Voice role \n", - "4 Voice role \n", - "5 nan \n", - "6 nan \n", - "7 Voice role \n", - "8 nan \n", - "9 nan \n", - "10 Voice role \n", - "11 nan \n", - "12 nan \n", - "13 nan \n", - "14 Voice role \n", - "15 Voice role \n", - "16 nan \n", - "17 nan \n", - "18 Voice role \n", - "19 nan \n", - "20 Voice role \n", - "21 nan \n", - "22 nan \n", - "23 Voice role \n", - "24 Direct-to-video; originally released separately \n", - "25 Voice role \n", - "26 YouTube short film series by CollegeHumor \n", - "27 Voice role \n", - "28 Voice role \n", - "29 Voice role \n", - "30 Voice role \n", - "31 nan \n", - "32 Voice role \n", - "33 Voice role \n", - "34 nan },\n", - " { 'answer': '2',\n", - " 'context': Number Album Artist \\\n", - "0 1 Tha Carter IV Lil Wayne \n", - "1 2 Take Care Drake \n", - "2 3 Watch the Throne Jay-Z & Kanye West \n", - "3 4 Thug Motivation 103 : Hustlerz Ambition Young Jeezy \n", - "4 5 Cole World : The Sideline Story J. Cole \n", - "5 6 Lasers Lupe Fiasco \n", - "6 7 Rolling Papers Wiz Khalifa \n", - "7 8 Hell : The Sequel Bad Meets Evil \n", - "8 9 Ambition Wale \n", - "9 10 Blue Slide Park Mac Miller \n", - "\n", - " 1st-week sales 1st-week position \n", - "0 964,000 1 \n", - "1 631,000 1 \n", - "2 436,000 1 \n", - "3 233,000 3 \n", - "4 217,000 1 \n", - "5 204,000 1 \n", - "6 197,000 2 \n", - "7 171,000 1 \n", - "8 164,000 2 \n", - "9 144,000 1 },\n", - " { 'answer': '15 April 2005',\n", - " 'context': Release date Release title Country Publisher \\\n", - "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", - "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", - "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", - "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", - "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", - "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", - "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", - "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", - "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", - "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", - "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", - "\n", - " Format Language Subtitles Notes \n", - "0 NTSC English Traditional Chinese 1 VCD \n", - "1 NTSC English Traditional Chinese 1 VCD \n", - "2 NTSC English Traditional Chinese 1 VCD \n", - "3 NTSC English Traditional Chinese 1 VCD \n", - "4 NTSC English Traditional Chinese 1 VCD \n", - "5 NTSC English Traditional Chinese 1 VCD \n", - "6 NTSC English Traditional Chinese 1 VCD \n", - "7 NTSC English Traditional Chinese 1 VCD \n", - "8 NTSC English Traditional Chinese 1 VCD \n", - "9 NTSC English Traditional Chinese 1 VCD \n", - "10 NTSC English Traditional Chinese 10 VCD's },\n", - " { 'answer': '15 April 2005',\n", - " 'context': Release date Release title Country Publisher \\\n", - "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", - "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", - "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", - "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", - "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", - "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", - "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", - "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", - "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", - "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", - "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", - "\n", - " Format Language Subtitles Notes \n", - "0 NTSC English Traditional Chinese 1 VCD \n", - "1 NTSC English Traditional Chinese 1 VCD \n", - "2 NTSC English Traditional Chinese 1 VCD \n", - "3 NTSC English Traditional Chinese 1 VCD \n", - "4 NTSC English Traditional Chinese 1 VCD \n", - "5 NTSC English Traditional Chinese 1 VCD \n", - "6 NTSC English Traditional Chinese 1 VCD \n", - "7 NTSC English Traditional Chinese 1 VCD \n", - "8 NTSC English Traditional Chinese 1 VCD \n", - "9 NTSC English Traditional Chinese 1 VCD \n", - "10 NTSC English Traditional Chinese 10 VCD's },\n", - " { 'answer': '1991',\n", - " 'context': Year Film Song \\\n", - "0 1991 House Party 2 Ai n't Gon na Hurt Nobody \n", - "1 1991 Nothing But Trouble Same Song \n", - "2 1994 Above the Rim Regulate \n", - "3 1994 Street Fighter Something Kinda Funky \n", - "4 1995 Friday Keep Their Heads Ringin \n", - "5 1999 Office Space Shove This Jay-Oh-Bee \n", - "6 2001 The Wash Bad Intentions \n", - "7 2002 8 Mile Lose Yourself \n", - "8 2002 Like Mike Basketball \n", - "9 2002 Like Mike Take Ya Home \n", - "10 2003 2 Fast 2 Furious Act a Fool \n", - "\n", - " Artist \n", - "0 Kid ' n Play \n", - "1 Digital Underground ft. 2Pac \n", - "2 Warren G ft. Nate Dogg \n", - "3 Rally Ral \n", - "4 Dr. Dre \n", - "5 Canibus and Biz Markie \n", - "6 Dr. Dre ft. Knoc-turn'al \n", - "7 Eminem \n", - "8 Lil ' Bow Wow ft. Fundisha , Jermaine Dupri , and Fabolous \n", - "9 Lil ' Bow Wow \n", - "10 Ludacris },\n", - " { 'answer': '1987 1988 1989',\n", - " 'context': Title Year \\\n", - "0 Bomber King / RoboWarrior 1987 1988 1989 \n", - "1 Bomber King : Scenario 2 / Blaster Master Boy/Jr 1991 1992 \n", - "2 Bomberman : Panic Bomber 1994 1995 \n", - "3 Bomberman B-Daman 1996 \n", - "4 Atomic Bomberman 1997 \n", - "5 Bomberman Wars 1998 \n", - "6 Bomberman Fantasy Race 1998 1999 2000 \n", - "7 Bomberman B-Daman Bakugaiden : The Road to Victory 1999 \n", - "8 Bomberman B-Daman Bakugaiden V : Final Mega Tune 2000 \n", - "9 Bomberman Kart 2001 2003 \n", - "10 Bomberman Jetters : The Legendary Bomberman 2002 \n", - "11 Bomberman Jetters 2002 2004 \n", - "12 Bomberman Jetters Game Collection 2003 \n", - "13 DreamMix TV World Fighters 2003 \n", - "14 BoBomberman 2004 \n", - "15 Bomberman Battles / Bomberman Hardball 2004 2005 \n", - "16 Bomberman : Bakufuu Sentai Bombermen 2006 \n", - "17 Bomberman : Act Zero 2006 \n", - "18 Bomberman : Disney Stitch Edition 2010 \n", - "19 Bomberman : Chains 2011 \n", - "\n", - " Platforms \\\n", - "0 Famicom / NES , MSX \n", - "1 Game Boy \n", - "2 PC Engine CD , Neo Geo , Super Famicom , NEC PC-9821 , FM Towns , Sharp X680... \n", - "3 Super Famicom \n", - "4 PC ( Windows ) \n", - "5 PlayStation , Sega Saturn \n", - "6 PlayStation \n", - "7 Game Boy Color \n", - "8 Game Boy Color \n", - "9 PlayStation 2 \n", - "10 Game Boy Advance \n", - "11 GameCube , PlayStation 2 \n", - "12 Game Boy Advance \n", - "13 GameCube , PlayStation 2 \n", - "14 Game Boy Advance \n", - "15 PlayStation 2 \n", - "16 PlayStation Portable \n", - "17 Xbox 360 \n", - "18 Mobile Phone \n", - "19 iOS \n", - "\n", - " Notes \n", - "0 Released outside Japan under the name RoboWarrior ; Bomberman-like progressi... \n", - "1 Sequel to Bomber King ; slightly altered and released by Sunsoft in America ... \n", - "2 Puzzle game , similar to Puyo Puyo and Tetris ; all versions except for Neo ... \n", - "3 Japan-only , part of the B-Daman series \n", - "4 10-player support through IPX networking ; first Bomberman title for Windows... \n", - "5 Japan-only release ; tactical role-playing game ( TRPG ) \n", - "6 Racing game \n", - "7 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", - "8 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", - "9 Released in Japan and PAL regions only ; kart racing game \n", - "10 Japan-only release ; based on the anime series , Bomberman Jetters \n", - "11 PS2 release was Japan-only ; based on the Bomberman Jetters anime series \n", - "12 Japan-only release ; based on the anime series , Bomberman Jetters \n", - "13 Released in Japan only ; crossover fighting game featuring Bomberman as a pl... \n", - "14 Minigame based on the NES version of Bomberman , but using characters from t... \n", - "15 Released in Japan and PAL regions only ; sports and party game \n", - "16 Japan-only release \n", - "17 Realistic re-envisioning of the character \n", - "18 A Bomberman Game based on the anime Stitch ! \n", - "19 Puzzle game , similar to Bejeweled },\n", - " { 'answer': '2010',\n", - " 'context': Year Journalists \\\n", - "0 2010 Dwayne Grant ( Gold Coast Publications ) \n", - "1 2011 Leanne West ( Network Ten ) \n", - "2 2012 Stathi Paxinos ( Fairfax Media ) \n", - "3 2013 Mike Dalton ( Nine Network ) \n", - "4 2014 Emma Greenwood ( Gold Coast Bulletin ) \n", - "5 2015 Amanda Shalala ( ABC Radio Grandstand ) \n", - "6 2016 Seven Network \n", - "7 2017 Jim Callinan ( Sky News Australia ) \n", - "8 2018 Matt Carmichael ( Seven Network ) \n", - "9 2019 Australian Broadcasting Corporation \n", - "\n", - " Story Title \n", - "0 Never Say Never \n", - "1 David and Michelle \n", - "2 London Paralympic Games \n", - "3 Special Olympics Junior Games \n", - "4 He who dares lives \n", - "5 Grandstand para-sport profiles \n", - "6 ' Rio 2016 Paralympic Games ' \n", - "7 Oz Day 10K Wheelchair Road Race ' \n", - "8 2018 Winter Paralympics and 2018 Commonwealth Games \n", - "9 2018 Invictus Games },\n", - " { 'answer': 'January 31',\n", - " 'context': Release Title System \\\n", - "0 January 25 Guardian Heroes Sat \n", - "1 January 26 Mystaria : The Realms of Lore Sat \n", - "2 January 29 Duke Nukem 3D DOS \n", - "3 January 31 Mega Man X3 SNES \n", - "4 February 9 Bahamut Lagoon SNES \n", - "5 February 23 Front Mission : Gun Hazard SNES \n", - "6 February 27 Pokémon Red and Green GB \n", - "7 February 29 Civilization II Win \n", - "8 February 29 Ripper ( video game ) DOS \n", - "9 February 29 Rise 2 : Resurrection Win , Sat , PS1 \n", - "10 February 29 Terra Nova : Strike Force Centauri DOS \n", - "11 February 29 Zork : Nemesis Win \n", - "12 March 9 Super Mario RPG SNES \n", - "13 March 21 Kirby Super Star SNES \n", - "14 March 22 Resident Evil PS1 \n", - "15 March 22 Panzer Dragoon II Zwei Sat \n", - "16 March 29 Dragon Ball Z : Hyper Dimension SNES \n", - "17 April 20 Barbie Fashion Designer Win \n", - "18 April 26 Jumping Flash ! 2 PS1 \n", - "19 April 26 The Legend of Oasis Sat \n", - "\n", - " Developer / Publisher \\\n", - "0 Treasure / Sega \n", - "1 Micro Cabin / Sega \n", - "2 3D Realms / GT Interactive \n", - "3 Capcom \n", - "4 SquareSoft \n", - "5 SquareSoft \n", - "6 Nintendo \n", - "7 MicroProse \n", - "8 Take Two Interactive \n", - "9 Mirage / Acclaim \n", - "10 Looking Glass Studios \n", - "11 Activision \n", - "12 SquareSoft/Nintendo \n", - "13 HAL Labs / Nintendo \n", - "14 Capcom \n", - "15 Team Andromeda / Sega \n", - "16 TOSE / Bandai \n", - "17 Digital Domain / Mattel Media \n", - "18 Exact / SCEA \n", - "19 Sega / Ancient \n", - "\n", - " Notes \n", - "0 a beat-em-up game developed by Treasure \n", - "1 a tactical RPG \n", - "2 a popular first person shooter \n", - "3 third X installment in popular Mega Man franchise \n", - "4 Tactical RPG spin-off in the Final Fantasy series , before Final Fantasy Tac... \n", - "5 Sequel to strategy Super Famicom RPG Front Mission \n", - "6 launched a wildly popular game series \n", - "7 acclaimed sequel to the highly influential 1991 4X game \n", - "8 Interactive movie , Point-and-click adventure Single Player game \n", - "9 the sequel to the fighting game , Rise of the Robots \n", - "10 critically acclaimed FPS \n", - "11 11th game in the Zork series , employing 360-degree views of environment \n", - "12 beginning of the long-running series of Mario RPGs \n", - "13 considered to be one of the best games in the Kirby franchise \n", - "14 one of the foundational games in the survival horror genre , for a time it h... \n", - "15 an acclaimed rail shooter \n", - "16 the last Super Famicom game in the Dragon Ball Z franchise \n", - "17 The game 's strong sales sparked a renewed interest in developing games targ... \n", - "18 Sequel to the first true 3D platformer \n", - "19 Prequel to the Genesis Zelda-style action game Beyond Oasis },\n", - " { 'answer': '2009',\n", - " 'context': Song Title Album ( s ) / Single ( s ) \\\n", - "0 A Feast For Me Pipes & Flowers \n", - "1 A Little Over Zero Asile 's World / Dancing \n", - "2 A Prayer Lotus \n", - "3 Anche Se Non Trovi Le Parole Heart \n", - "4 And All I Need Heart \n", - "5 Asile 's World Asile 's World \n", - "6 Beautiful Night Lotus \n", - "7 Bitter Words Pearl Days \n", - "8 Broken Lotus / Dancing \n", - "9 Chameleon Asile 's World \n", - "10 City Lights Pearl Days / Dancing \n", - "11 Coincidences Heart \n", - "12 Come & Sit Asile 's World \n", - "13 Come Speak To Me Asile 's World \n", - "14 Creature Asile 's World \n", - "15 Cure Me Pipes & Flowers \n", - "16 Dancing Then Comes the Sun / Dancing \n", - "17 Dot in the Universe Heart \n", - "18 Eppure sentire ( Un senso di te ) Soundtrack '96-'06 \n", - "19 Electricity Lotus \n", - "\n", - " First Released \n", - "0 2002 \n", - "1 2000 \n", - "2 2003 \n", - "3 2009 \n", - "4 2009 \n", - "5 2000 \n", - "6 2003 \n", - "7 2004 \n", - "8 2003 \n", - "9 2000 \n", - "10 2004 \n", - "11 2009 \n", - "12 2000 \n", - "13 2001 \n", - "14 2000 \n", - "15 1997 \n", - "16 2002 \n", - "17 2009 \n", - "18 2006 \n", - "19 2003 },\n", - " { 'answer': 'Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS '\n", - " 'X:November 6, 2006',\n", - " 'context': Name \\\n", - "0 University \n", - "1 Nightlife \n", - "2 Open for Business \n", - "3 Pets \n", - "4 Seasons \n", - "5 Bon Voyage \n", - "6 FreeTime \n", - "7 Apartment Life \n", - "\n", - " Release date \\\n", - "0 Windows:NA: March 1, 2005 EU: March 2, 2005 Mac OS X:December 12, 2005 \n", - "1 Windows:NA: September 13, 2005 EU: September 13, 2005 Mac OS X:March 27, 2006 \n", - "2 Windows:NA: March 2, 2006 EU: March 2, 2006 Mac OS X:September 4, 2006 \n", - "3 Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS X:November 6, 2006 \n", - "4 Windows:NA: March 1, 2007 EU: March 2, 2007 Mac OS X:June 11, 2007 \n", - "5 Windows:NA: September 4, 2007 EU: September 7, 2007 Mac OS X:December 17, 2007 \n", - "6 Windows:NA: February 26, 2008 EU: February 22, 2008 \n", - "7 Windows:NA: August 27, 2008EU: August 29, 2008 \n", - "\n", - " Major Additions \\\n", - "0 Universities, Young Adult age group, Influence system \n", - "1 Dates, Groups system, Outings, Pleasure and Grilled Cheese aspiration, New r... \n", - "2 Businesses, talent badges \n", - "3 Ownable Pets \n", - "4 Weather system, Seasons, fishing, new talent badges,gardening \n", - "5 Vacations in different cultural areas \n", - "6 Hobby system, lifetime aspiration system, new talent badges. \n", - "7 Rentable apartments, reputation system, witchcraft system \n", - "\n", - " Neighborhoods \\\n", - "0 Campus:La Fiesta Tech,Sim State University,Académie Le Tour \n", - "1 Downtown:Downtown \n", - "2 Shopping District:Bluewater Village \n", - "3 None \n", - "4 Main:Riverblossom Hills \n", - "5 Vacation:Twikkii Island,Three Lakes,Takemizu Village \n", - "6 Main: Desiderata Valley Secret:Hobby \n", - "7 Main:Belladonna Cove[53]Secret:The Magical World \n", - "\n", - " New NPCs \\\n", - "0 Barista, Bartender,Cafeteria Worker,Cheerleader,Coach, Evil Mascot, Mascot,P... \n", - "1 Gypsy Matchmaker,Waiter, Chef,Bartender, DJ,Mrs. Crumplebottom,Vampires (Cou... \n", - "2 Reporters,Barbers \n", - "3 Animal Control Officers,Obedience Trainer,Wolves, Skunks \n", - "4 Garden Club Members,Penguins \n", - "5 Fire Dancers,Hotel Maids,Bellboys, Masseurs,Wise Old Man,Pirate, Tour Guides... \n", - "6 Hobby Members,Rod Humble,Hobby Leaders,Food Judge,Genie \n", - "7 Butler, Landlord,Roomies,Breakdancers,Street Performers,Social Group Sims,Hi... \n", - "\n", - " New Lifestate/Creature \\\n", - "0 Zombies (Also in FreeTime and Apartment Life) \n", - "1 Vampires \n", - "2 Servos (Robots) \n", - "3 Werewolves \n", - "4 PlantSims \n", - "5 Bigfoot \n", - "6 Genie (Only NPC) \n", - "7 Witches, Warlocks \n", - "\n", - " New Careers \n", - "0 Natural Scientist, Paranormal,Show Business, Artist \n", - "1 None \n", - "2 Shop Employees \n", - "3 Pet careers:Security,Showbiz,Service \n", - "4 Adventurer,Education,Gamer,Journalism,Law, Music \n", - "5 None \n", - "6 Oceanography,Intelligence,Entertainment,Dance,Architecture \n", - "7 None },\n", - " { 'answer': '2 December 1978',\n", - " 'context': Album \\\n", - "0 Please Please Me \n", - "1 With the Beatles \n", - "2 A Hard Day 's Night \n", - "3 Beatles for Sale \n", - "4 Help ! \n", - "5 Rubber Soul \n", - "6 Revolver \n", - "7 Sgt . Pepper 's Lonely Hearts Club Band \n", - "8 The Beatles ( White Album ) \n", - "9 Yellow Submarine \n", - "10 Abbey Road \n", - "11 Let It Be \n", - "12 Rarities \n", - "\n", - " Label \\\n", - "0 Parlophone Records PCS 3042 \n", - "1 Parlophone Records PCS 3045 \n", - "2 Parlophone Records PCS 3058 \n", - "3 Parlophone Records PCS 3062 \n", - "4 Parlophone Records PCS 3071 \n", - "5 Parlophone Records PCS 3075 \n", - "6 Parlophone Records PCS 7009 \n", - "7 Parlophone Records PCS 7027 \n", - "8 Apple Records PCS 7067/8 \n", - "9 Apple Records PCS 7070 \n", - "10 Apple Records PCS 7088 \n", - "11 Apple Records PCS 7096 \n", - "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", - "\n", - " Release date \n", - "0 22 March 1963 \n", - "1 22 November 1963 \n", - "2 10 July 1964 \n", - "3 4 December 1964 \n", - "4 6 August 1965 \n", - "5 3 December 1965 \n", - "6 5 August 1966 \n", - "7 1 June 1967 \n", - "8 22 November 1968 \n", - "9 17 January 1969 \n", - "10 26 September 1969 \n", - "11 8 May 1970 \n", - "12 2 December 1978 },\n", - " { 'answer': '2 December 1978',\n", - " 'context': Album \\\n", - "0 Please Please Me \n", - "1 With the Beatles \n", - "2 A Hard Day 's Night \n", - "3 Beatles for Sale \n", - "4 Help ! \n", - "5 Rubber Soul \n", - "6 Revolver \n", - "7 Sgt . Pepper 's Lonely Hearts Club Band \n", - "8 The Beatles ( White Album ) \n", - "9 Yellow Submarine \n", - "10 Abbey Road \n", - "11 Let It Be \n", - "12 Rarities \n", - "\n", - " Label \\\n", - "0 Parlophone Records PCS 3042 \n", - "1 Parlophone Records PCS 3045 \n", - "2 Parlophone Records PCS 3058 \n", - "3 Parlophone Records PCS 3062 \n", - "4 Parlophone Records PCS 3071 \n", - "5 Parlophone Records PCS 3075 \n", - "6 Parlophone Records PCS 7009 \n", - "7 Parlophone Records PCS 7027 \n", - "8 Apple Records PCS 7067/8 \n", - "9 Apple Records PCS 7070 \n", - "10 Apple Records PCS 7088 \n", - "11 Apple Records PCS 7096 \n", - "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", - "\n", - " Release date \n", - "0 22 March 1963 \n", - "1 22 November 1963 \n", - "2 10 July 1964 \n", - "3 4 December 1964 \n", - "4 6 August 1965 \n", - "5 3 December 1965 \n", - "6 5 August 1966 \n", - "7 1 June 1967 \n", - "8 22 November 1968 \n", - "9 17 January 1969 \n", - "10 26 September 1969 \n", - "11 8 May 1970 \n", - "12 2 December 1978 },\n", - " { 'answer': 'October22,2004',\n", - " 'context': Series # Season # Title Directed by \\\n", - "0 44 1 Psychic Eye for the Sloppy Guy Rich Correll \n", - "1 45 2 Stark Raven Mad Marc Warren \n", - "2 46 3 Opportunity Shocks Rich Correll \n", - "3 47 4 Taken to the Cleaners Rich Correll \n", - "4 48 5 Five Finger Discount Rich Correll \n", - "5 49 6 Sweeps Sean McNamara \n", - "6 50 7 Double Vision T'Keyah Crystal Keymáh \n", - "7 51 8 Bend It Like Baxter Rich Correll \n", - "8 52 9 The Big Buzz Eric Dean Seaton \n", - "9 53 10 True Colors Christopher B. Pearman \n", - "10 54 11 Dog Day Aftergroom KC Lynn De Stefano \n", - "11 55 12 Royal Treatment Christopher B. Pearman \n", - "12 56 13 Art Breaker Gregory Hobson \n", - "13 57 14 Boyz 'N Commotion Debbie Allen \n", - "14 58 15 Gettin' Outta Dodge Rich Correll \n", - "15 59 16 On Top of Old Oakey John Tracy \n", - "16 60 17 They Work Hard for His Honey Eric Dean Seaton \n", - "17 61 18 Mind Your Own Business Eric Dean Seaton \n", - "18 62 19 Hizzouse Party Rich Correll \n", - "19 63 20 Mismatch Maker Fred Savage \n", - "20 65 22 When in Dome Marc Warren \n", - "21 66 23 Too Much Pressure Rich Correll \n", - "22 67 24 Extreme Cory Rich Correll \n", - "23 68 25 The Grill Next Door Sean McNamara \n", - "24 69 26 Point of No Return Sean McNamara \n", - "25 72 29 Food for Thought Rich Correll \n", - "26 73 30 Mr. Perfect Rich Correll \n", - "27 74 31 Goin' Hollywood Rich Correll \n", - "28 75 32 Save the Last Dance Sean McNamara \n", - "29 76 33 Cake Fear Rondell Sheridan \n", - "30 77 34 Vision Impossible Marc Warren \n", - "\n", - " Written by Original air date Prod. code \\\n", - "0 Marc Warren October1,2004 301 \n", - "1 Sarah Jane Cunningham & Suzie V. Freeman October22,2004 304 \n", - "2 Dava Savel November5,2004 309 \n", - "3 Michael Feldman November19,2004 313 \n", - "4 Dennis Rinsler December3,2004 302 \n", - "5 Dennis Rinsler December11,2004 311 \n", - "6 Sarah Jane Cunningham & Suzie V. Freeman December17,2004 318 \n", - "7 Dava Savel January7,2005 315 \n", - "8 Marc Warren January28,2005 322 \n", - "9 Michael Carrington February4,2005 303 \n", - "10 Theresa Akana & Stacee Comage February11,2005 317 \n", - "11 Sarah Jane Cunningham & Suzie V. Freeman February18,2005 310 \n", - "12 Josh Lynn & Danny Warren February25,2005 308 \n", - "13 Theresa Akana & Stacee Comage March11,2005 306 \n", - "14 Edward C. Evans April8,2005 319 \n", - "15 Michael Feldman April22,2005 305 \n", - "16 Edward C. Evans April29,2005 307 \n", - "17 Dennis Rinsler May13,2005 327 \n", - "18 Michael Carrington June13,2005 312 \n", - "19 Edward C. Evans June14,2005 325 \n", - "20 Sarah Jane Cunningham & Suzie V. Freeman June16,2005 328 \n", - "21 Dava Savel June17,2005 323 \n", - "22 Theresa Akana & Stacee Comage July8,2005 326 \n", - "23 Michael Feldman July8,2005 324 \n", - "24 Edward C. Evans July23,2005 330 \n", - "25 Marc Warren September18,2005 316 \n", - "26 Michael Carrington October7,2005 329 \n", - "27 Dennis Rinsler & Marc Warren November4,2005 333 \n", - "28 Marc Warren November25,2005 334 \n", - "29 Theresa Akana & Stacee Comage December16,2005 332 \n", - "30 David Brookwell & Sean McNamara January6,2006 335 \n", - "\n", - " U.S. viewers (millions) \n", - "0 4.8 \n", - "1 4.5 \n", - "2 4.5 \n", - "3 3.7 \n", - "4 3.1 \n", - "5 2.6 \n", - "6 5.5 \n", - "7 4.0 \n", - "8 2.17 \n", - "9 3.3 \n", - "10 2.4 \n", - "11 2.7 \n", - "12 3.5 \n", - "13 4.8 \n", - "14 2.1 \n", - "15 2.3 \n", - "16 4.2 \n", - "17 4.4 \n", - "18 5.1 \n", - "19 4.3 \n", - "20 4.7 \n", - "21 4.4 \n", - "22 3.8 \n", - "23 4.23 \n", - "24 6.0 \n", - "25 3.4 \n", - "26 3.0 \n", - "27 3.7 \n", - "28 3.3 \n", - "29 3.6 \n", - "30 4.7 },\n", - " { 'answer': '1990',\n", - " 'context': Year Title \\\n", - "0 1990 Psycho IV : The Beginning \n", - "1 1992 A Taste for Killing \n", - "2 1995 Indictment : The McMartin Trial \n", - "3 1996 Riders of the Purple Sage \n", - "4 1998 Moby Dick \n", - "5 1999 Happy Face Murders \n", - "6 2005 Masters of Horror \n", - "7 2006 Stephen King 's Desperation \n", - "8 2006 Nightmares & Dreamscapes : From the Stories of Stephen King \n", - "9 2007-08 Without a Trace \n", - "10 2009 CSI : Crime Scene Investigation \n", - "11 2011 The Mentalist \n", - "12 2013-14 Betrayal \n", - "13 2015 Sons of Liberty \n", - "14 2016 Law & Order : Special Victims Unit \n", - "15 2017 Better Things \n", - "16 2018-present The Haunting of Hill House \n", - "17 2018 Girl in the Bunker \n", - "18 2020 FBI : Most Wanted \n", - "19 2020 Stargirl \n", - "\n", - " Role \\\n", - "0 Young Norman Bates \n", - "1 Cary Sloan \n", - "2 Ray Buckey \n", - "3 Bern Venters \n", - "4 Ishmael \n", - "5 Dylan McCarthy \n", - "6 Jamie \n", - "7 Peter Jackson \n", - "8 Robert Fornoy \n", - "9 Franklin Romar \n", - "10 Jeremy Kent \n", - "11 Thomas Lisbon \n", - "12 T.J. Karsten \n", - "13 John Adams \n", - "14 Sean Roberts \n", - "15 Robin \n", - "16 Young Hugh Crain ( season 1 ) TBA ( season 2 ) \n", - "17 Vinson Filyaw \n", - "18 Dr. Justin Brock \n", - "19 Charles McNider / Doctor Mid-Nite \n", - "\n", - " Notes \n", - "0 Television film \n", - "1 Television film \n", - "2 Television film \n", - "3 Television film \n", - "4 Miniseries \n", - "5 Television film \n", - "6 Episode : Chocolate \n", - "7 Television film \n", - "8 Episode : The End of the Whole Mess \n", - "9 2 episodes \n", - "10 Episode : If I Had a Hammer \n", - "11 Episode : Where in the World is Carmine O'Brien ? \n", - "12 13 episodes \n", - "13 Miniseries \n", - "14 Episode : Making a Rapist \n", - "15 4 episodes \n", - "16 Series regular , first and second season \n", - "17 Television film \n", - "18 Episode : Dopesick \n", - "19 Recurring role }]\n" - ] - } - ], + "outputs": [], "source": [ "prediction = table_qa_pipeline.run(\"When was Guilty Gear Xrd : Sign released?\", params={\"top_k\": 30})\n", "print_answers(prediction, details=\"minimum\")" @@ -1903,7 +416,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "id": "4CBcIjIq_uFx" }, @@ -1929,20 +442,11 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "id": "j1TaNF7SiKgH" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.document_stores.elasticsearch - Updating embeddings for 563 docs without embeddings ...\n", - "Updating embeddings: 10000 Docs [00:29, 343.41 Docs/s] \n" - ] - } - ], + "outputs": [], "source": [ "document_store.update_embeddings(retriever=retriever, update_existing_embeddings=False)" ] @@ -1963,88 +467,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "id": "Ej_j8Q3wlxXE" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/roberta-base-squad2 locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/roberta-base-squad2\n", - "INFO - haystack.modeling.logger - ML Logging is turned off. No parameters, metrics or artifacts will be logged to MLFlow.\n", - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.infer - Got ya 7 parallel workers to do inference ...\n", - "INFO - haystack.modeling.infer - 0 0 0 0 0 0 0 \n", - "INFO - haystack.modeling.infer - /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ \n", - "INFO - haystack.modeling.infer - /'\\ / \\ /'\\ /'\\ / \\ / \\ /'\\ \n", - "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n", - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes import FARMReader, RouteDocuments, JoinAnswers\n", "\n", @@ -2059,7 +486,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "id": "Zdq6JnF5m3aP" }, @@ -2095,46 +522,19 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "id": "strPNduPoBLe" }, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self, timeout)\u001b[0m\n", - "\u001b[0;31mIndexError\u001b[0m: pop from an empty deque", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/var/folders/yw/022rgvk17nz3rm_3gb8szmmw0000gn/T/ipykernel_7250/4210422198.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Example query whose answer resides in a text passage\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtext_table_qa_pipeline\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Which country does the film Macaroni come from?\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/pipelines/base.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, query, file_paths, labels, documents, meta, params, debug)\u001b[0m\n\u001b[1;32m 644\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[1;32m 645\u001b[0m \u001b[0mlogger\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdebug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Running node `{node_id}` with input `{node_input}`\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 646\u001b[0;31m \u001b[0mnode_output\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream_id\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnodes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnode_id\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"component\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dispatch_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mnode_input\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 647\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0mtb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat_exc\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~/Documents/internships/deepset/haystack/haystack/nodes/base.py\u001b[0m in \u001b[0;36m_dispatch_run\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 176\u001b[0m \u001b[0mrun_inputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 177\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 178\u001b[0;31m \u001b[0moutput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mrun_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mrun_params\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 179\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[0;31m# Collect debug information\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/base.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, query, documents, top_k, labels, add_isolated_node_eval)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0mpredict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtiming\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"query_time\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdocuments\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 83\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdocuments\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdocuments\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtop_k\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtop_k\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 84\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 85\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\"answers\"\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[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/base.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mattr_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0mtic\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mperf_counter\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--> 128\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\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 129\u001b[0m \u001b[0mtoc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mperf_counter\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 130\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mattr_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mtoc\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mtic\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/nodes/reader/farm.py\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, query, documents, top_k)\u001b[0m\n\u001b[1;32m 768\u001b[0m \u001b[0;31m# get answers from QA model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 769\u001b[0m \u001b[0;31m# TODO: Need fix in FARM's `to_dict` function of `QAInput` class\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 770\u001b[0;31m predictions = self.inferencer.inference_from_objects(\n\u001b[0m\u001b[1;32m 771\u001b[0m \u001b[0mobjects\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 772\u001b[0m )\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_objects\u001b[0;34m(self, objects, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 593\u001b[0m \u001b[0;31m# then we can and should use inference from (input) objects!\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 594\u001b[0m \u001b[0;31m# logger.warning(\"QAInferencer.inference_from_objects() will soon be deprecated. Use QAInferencer.inference_from_dicts() instead\")\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 595\u001b[0;31m return self.inference_from_dicts(\n\u001b[0m\u001b[1;32m 596\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_json\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m )\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_dicts\u001b[0;34m(self, dicts, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 575\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mList\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 576\u001b[0m ) -> List[QAPred]:\n\u001b[0;32m--> 577\u001b[0;31m return Inferencer.inference_from_dicts(\n\u001b[0m\u001b[1;32m 578\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreturn_json\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreturn_json\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmultiprocessing_chunksize\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 579\u001b[0m )\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36minference_from_dicts\u001b[0;34m(self, dicts, return_json, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;31m# cast the generator to a list if it isnt already a list.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlist\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[0;32mreturn\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\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;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mpredictions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Documents/internships/deepset/haystack/haystack/modeling/infer.py\u001b[0m in \u001b[0;36m_inference_with_multiprocessing\u001b[0;34m(self, dicts, return_json, aggregate_preds, multiprocessing_chunksize)\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[0;31m# Once a process spits out a preprocessed chunk. we feed this dataset directly to the model.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 414\u001b[0m \u001b[0;31m# So we don't need to wait until all preprocessing has finished before getting first predictions.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 415\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtensor_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbaskets\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mresults\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 416\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mproblematic_sample_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 417\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdataset\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self, timeout)\u001b[0m\n", - "\u001b[0;32m/opt/homebrew/Cellar/python@3.9/3.9.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self, timeout)\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], + "outputs": [], "source": [ "# Example query whose answer resides in a text passage\n", - "predictions = text_table_qa_pipeline.run(query=\"What is the Senior Bowl?\")" + "predictions = text_table_qa_pipeline.run(query=\"Who was Thomas Alva Edison?\")" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -2142,372 +542,7 @@ "id": "9YiK75tSoOGA", "outputId": "bd52f841-3846-441f-dd6f-53b02111691e" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Query: Which country does Vijay Singh come from?\n", - "Answers:\n", - "[ { 'answer': 'Italian',\n", - " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", - "0 Argentina The Official Story Spanish \n", - "1 Austria Malambo German \n", - "2 Belgium Dust French \n", - "3 Canada Jacques and November French \n", - "4 Czechoslovakia Scalpel , Please Czech \n", - "5 Denmark Twist and Shout Danish \n", - "6 France Three Men and a Cradle French \n", - "7 West Germany Angry Harvest German \n", - "8 Hungary Colonel Redl German \n", - "9 Iceland Deep Winter Icelandic \n", - "10 India Saagar Hindi \n", - "11 Israel When Night Falls Hebrew \n", - "12 Italy Macaroni Italian \n", - "13 Japan Gray Sunset Japanese \n", - "14 South Korea Eoudong Korean \n", - "15 Mexico Frida Still Life Spanish \n", - "16 Netherlands The Dream Dutch , West Frisian \n", - "17 Norway Wives - Ten Years After Norwegian \n", - "18 Peru The City and the Dogs Spanish \n", - "19 Philippines This Is My Country Tagalog \n", - "\n", - " Original title Director ( s ) \\\n", - "0 La Historia oficial Luis Puenzo \n", - "1 Malambo Milan Dor \n", - "2 Dust Marion Hänsel \n", - "3 Jacques et novembre Jean Beaudry and François Bouvier \n", - "4 Skalpel , prosím Jirí Svoboda \n", - "5 Tro , håb og kærlighed Bille August \n", - "6 Trois hommes et un couffin Coline Serreau \n", - "7 Bittere Ernte Agnieszka Holland \n", - "8 Oberst Redl István Szabó \n", - "9 Skammdegi Þráinn Bertelsson \n", - "10 सागर Ramesh Sippy \n", - "11 עד סוף הלילה Eitan Green \n", - "12 Maccheroni Ettore Scola \n", - "13 花いちもんめ Shunya Ito \n", - "14 어우동 Lee Jang-ho \n", - "15 Frida , naturaleza viva Paul Leduc \n", - "16 De Dream Pieter Verhoeff \n", - "17 Hustruer - ti år etter Anja Breien \n", - "18 La ciudad y los perros Francisco José Lombardi \n", - "19 Bayan ko : Kapit sa patalim Lino Brocka \n", - "\n", - " Result \n", - "0 Won Academy Award \n", - "1 Not Nominated \n", - "2 Not Nominated \n", - "3 Not Nominated \n", - "4 Not Nominated \n", - "5 Not Nominated \n", - "6 Nominated \n", - "7 Nominated \n", - "8 Nominated \n", - "9 Not Nominated \n", - "10 Not Nominated \n", - "11 Not Nominated \n", - "12 Not Nominated \n", - "13 Not Nominated \n", - "14 Not Nominated \n", - "15 Not Nominated \n", - "16 Not Nominated \n", - "17 Not Nominated \n", - "18 Not Nominated \n", - "19 Not Nominated },\n", - " { 'answer': 'Italian',\n", - " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", - "0 Argentina The Official Story Spanish \n", - "1 Austria Malambo German \n", - "2 Belgium Dust French \n", - "3 Canada Jacques and November French \n", - "4 Czechoslovakia Scalpel , Please Czech \n", - "5 Denmark Twist and Shout Danish \n", - "6 France Three Men and a Cradle French \n", - "7 West Germany Angry Harvest German \n", - "8 Hungary Colonel Redl German \n", - "9 Iceland Deep Winter Icelandic \n", - "10 India Saagar Hindi \n", - "11 Israel When Night Falls Hebrew \n", - "12 Italy Macaroni Italian \n", - "13 Japan Gray Sunset Japanese \n", - "14 South Korea Eoudong Korean \n", - "15 Mexico Frida Still Life Spanish \n", - "16 Netherlands The Dream Dutch , West Frisian \n", - "17 Norway Wives - Ten Years After Norwegian \n", - "18 Peru The City and the Dogs Spanish \n", - "19 Philippines This Is My Country Tagalog \n", - "\n", - " Original title Director ( s ) \\\n", - "0 La Historia oficial Luis Puenzo \n", - "1 Malambo Milan Dor \n", - "2 Dust Marion Hänsel \n", - "3 Jacques et novembre Jean Beaudry and François Bouvier \n", - "4 Skalpel , prosím Jirí Svoboda \n", - "5 Tro , håb og kærlighed Bille August \n", - "6 Trois hommes et un couffin Coline Serreau \n", - "7 Bittere Ernte Agnieszka Holland \n", - "8 Oberst Redl István Szabó \n", - "9 Skammdegi Þráinn Bertelsson \n", - "10 सागर Ramesh Sippy \n", - "11 עד סוף הלילה Eitan Green \n", - "12 Maccheroni Ettore Scola \n", - "13 花いちもんめ Shunya Ito \n", - "14 어우동 Lee Jang-ho \n", - "15 Frida , naturaleza viva Paul Leduc \n", - "16 De Dream Pieter Verhoeff \n", - "17 Hustruer - ti år etter Anja Breien \n", - "18 La ciudad y los perros Francisco José Lombardi \n", - "19 Bayan ko : Kapit sa patalim Lino Brocka \n", - "\n", - " Result \n", - "0 Won Academy Award \n", - "1 Not Nominated \n", - "2 Not Nominated \n", - "3 Not Nominated \n", - "4 Not Nominated \n", - "5 Not Nominated \n", - "6 Nominated \n", - "7 Nominated \n", - "8 Nominated \n", - "9 Not Nominated \n", - "10 Not Nominated \n", - "11 Not Nominated \n", - "12 Not Nominated \n", - "13 Not Nominated \n", - "14 Not Nominated \n", - "15 Not Nominated \n", - "16 Not Nominated \n", - "17 Not Nominated \n", - "18 Not Nominated \n", - "19 Not Nominated },\n", - " { 'answer': 'Icelandic',\n", - " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", - "0 Argentina The Official Story Spanish \n", - "1 Austria Malambo German \n", - "2 Belgium Dust French \n", - "3 Canada Jacques and November French \n", - "4 Czechoslovakia Scalpel , Please Czech \n", - "5 Denmark Twist and Shout Danish \n", - "6 France Three Men and a Cradle French \n", - "7 West Germany Angry Harvest German \n", - "8 Hungary Colonel Redl German \n", - "9 Iceland Deep Winter Icelandic \n", - "10 India Saagar Hindi \n", - "11 Israel When Night Falls Hebrew \n", - "12 Italy Macaroni Italian \n", - "13 Japan Gray Sunset Japanese \n", - "14 South Korea Eoudong Korean \n", - "15 Mexico Frida Still Life Spanish \n", - "16 Netherlands The Dream Dutch , West Frisian \n", - "17 Norway Wives - Ten Years After Norwegian \n", - "18 Peru The City and the Dogs Spanish \n", - "19 Philippines This Is My Country Tagalog \n", - "\n", - " Original title Director ( s ) \\\n", - "0 La Historia oficial Luis Puenzo \n", - "1 Malambo Milan Dor \n", - "2 Dust Marion Hänsel \n", - "3 Jacques et novembre Jean Beaudry and François Bouvier \n", - "4 Skalpel , prosím Jirí Svoboda \n", - "5 Tro , håb og kærlighed Bille August \n", - "6 Trois hommes et un couffin Coline Serreau \n", - "7 Bittere Ernte Agnieszka Holland \n", - "8 Oberst Redl István Szabó \n", - "9 Skammdegi Þráinn Bertelsson \n", - "10 सागर Ramesh Sippy \n", - "11 עד סוף הלילה Eitan Green \n", - "12 Maccheroni Ettore Scola \n", - "13 花いちもんめ Shunya Ito \n", - "14 어우동 Lee Jang-ho \n", - "15 Frida , naturaleza viva Paul Leduc \n", - "16 De Dream Pieter Verhoeff \n", - "17 Hustruer - ti år etter Anja Breien \n", - "18 La ciudad y los perros Francisco José Lombardi \n", - "19 Bayan ko : Kapit sa patalim Lino Brocka \n", - "\n", - " Result \n", - "0 Won Academy Award \n", - "1 Not Nominated \n", - "2 Not Nominated \n", - "3 Not Nominated \n", - "4 Not Nominated \n", - "5 Not Nominated \n", - "6 Nominated \n", - "7 Nominated \n", - "8 Nominated \n", - "9 Not Nominated \n", - "10 Not Nominated \n", - "11 Not Nominated \n", - "12 Not Nominated \n", - "13 Not Nominated \n", - "14 Not Nominated \n", - "15 Not Nominated \n", - "16 Not Nominated \n", - "17 Not Nominated \n", - "18 Not Nominated \n", - "19 Not Nominated },\n", - " { 'answer': 'Icelandic',\n", - " 'context': Submitting country Film title used in nomination Language ( s ) \\\n", - "0 Argentina The Official Story Spanish \n", - "1 Austria Malambo German \n", - "2 Belgium Dust French \n", - "3 Canada Jacques and November French \n", - "4 Czechoslovakia Scalpel , Please Czech \n", - "5 Denmark Twist and Shout Danish \n", - "6 France Three Men and a Cradle French \n", - "7 West Germany Angry Harvest German \n", - "8 Hungary Colonel Redl German \n", - "9 Iceland Deep Winter Icelandic \n", - "10 India Saagar Hindi \n", - "11 Israel When Night Falls Hebrew \n", - "12 Italy Macaroni Italian \n", - "13 Japan Gray Sunset Japanese \n", - "14 South Korea Eoudong Korean \n", - "15 Mexico Frida Still Life Spanish \n", - "16 Netherlands The Dream Dutch , West Frisian \n", - "17 Norway Wives - Ten Years After Norwegian \n", - "18 Peru The City and the Dogs Spanish \n", - "19 Philippines This Is My Country Tagalog \n", - "\n", - " Original title Director ( s ) \\\n", - "0 La Historia oficial Luis Puenzo \n", - "1 Malambo Milan Dor \n", - "2 Dust Marion Hänsel \n", - "3 Jacques et novembre Jean Beaudry and François Bouvier \n", - "4 Skalpel , prosím Jirí Svoboda \n", - "5 Tro , håb og kærlighed Bille August \n", - "6 Trois hommes et un couffin Coline Serreau \n", - "7 Bittere Ernte Agnieszka Holland \n", - "8 Oberst Redl István Szabó \n", - "9 Skammdegi Þráinn Bertelsson \n", - "10 सागर Ramesh Sippy \n", - "11 עד סוף הלילה Eitan Green \n", - "12 Maccheroni Ettore Scola \n", - "13 花いちもんめ Shunya Ito \n", - "14 어우동 Lee Jang-ho \n", - "15 Frida , naturaleza viva Paul Leduc \n", - "16 De Dream Pieter Verhoeff \n", - "17 Hustruer - ti år etter Anja Breien \n", - "18 La ciudad y los perros Francisco José Lombardi \n", - "19 Bayan ko : Kapit sa patalim Lino Brocka \n", - "\n", - " Result \n", - "0 Won Academy Award \n", - "1 Not Nominated \n", - "2 Not Nominated \n", - "3 Not Nominated \n", - "4 Not Nominated \n", - "5 Not Nominated \n", - "6 Nominated \n", - "7 Nominated \n", - "8 Nominated \n", - "9 Not Nominated \n", - "10 Not Nominated \n", - "11 Not Nominated \n", - "12 Not Nominated \n", - "13 Not Nominated \n", - "14 Not Nominated \n", - "15 Not Nominated \n", - "16 Not Nominated \n", - "17 Not Nominated \n", - "18 Not Nominated \n", - "19 Not Nominated },\n", - " { 'answer': 'Rocco Mediate',\n", - " 'context': Place Player Country Score To par\n", - "0 1 Phil Mickelson United States 70-72-70=212 –4\n", - "1 T2 Chad Campbell United States 71-67-75=213 –3\n", - "2 T2 Fred Couples United States 71-70-72=213 –3\n", - "3 T4 Stephen Ames Canada 74-70-70=214 –2\n", - "4 T4 Tim Clark South Africa 70-72-72=214 –2\n", - "5 T4 Darren Clarke Northern Ireland 72-70-72=214 –2\n", - "6 T4 Rocco Mediate United States 68-73-73=214 –2\n", - "7 T4 Vijay Singh Fiji 67-74-73=214 –2\n", - "8 T4 Tiger Woods United States 72-71-71=214 –2\n", - "9 T10 Retief Goosen South Africa 70-73-72=215 –1\n", - "10 T10 Miguel Ángel Jiménez Spain 72-74-69=215 –1},\n", - " { 'answer': 'Ngangbam Soniya Chanu',\n", - " 'context': Medal Name \\\n", - "0 Silver Ngangbam Soniya Chanu \n", - "1 Silver Sukhen Dey \n", - "2 Silver Omkar Singh & Deepak Sharma \n", - "3 Silver Tejaswini Sawant & Lajjakumari Gauswami \n", - "4 Silver Nishan Singh Gill \n", - "5 Silver Abhinav Bindra \n", - "6 Silver Asher Noria & Ronjan Sodhi \n", - "7 Silver Manoj Kumar \n", - "8 Silver Ritul Chatterjee , Jignas Chittibomma & Chinna Raju Srither \n", - "9 Silver Ronjan Sodhi \n", - "10 Silver Nirmala Devi \n", - "11 Silver Ashish Kumar \n", - "12 Silver Manavjit Singh Sandhu & Mansher Singh \n", - "13 Silver Babita Kumari \n", - "14 Silver Mouma Das , Poulomi Ghatak & Shamini Kumaresan \n", - "15 Silver Badminton Mixed Team \n", - "16 Silver Sania Mirza \n", - "17 Silver Vijay Kumar \n", - "18 Silver Anuj Kumar \n", - "19 Silver Joginder Kumar \n", - "\n", - " Sport Event Date \n", - "0 Weightlifting Women 's 48kg 4 October \n", - "1 Weightlifting Men 's 56kg 4 October \n", - "2 Shooting Men 's 50m Pistol ( Pairs ) 5 October \n", - "3 Shooting Women 's 50m Rifle 3 Positions ( Pairs ) 5 October \n", - "4 Shooting Women 's 25m Pistol ( Single ) 6 October \n", - "5 Shooting Men 's 10m Air Rifle ( Singles ) 6 October \n", - "6 Shooting Men 's Double trap ( Pairs ) 6 October \n", - "7 Wrestling Men 's Greco-Roman 84 kg 6 October \n", - "8 Archery Men 's compound team 7 October \n", - "9 Shooting Men 's Double trap Individual 7 October \n", - "10 Wrestling Women 's freestyle 48 kg 7 October \n", - "11 Gymnastics Men 's Vault 8 October \n", - "12 Shooting Men 's Trap ( Pairs ) 8 October \n", - "13 Wrestling Women 's freestyle 51 kg 8 October \n", - "14 Table Tennis Women 's team 8 October \n", - "15 Badminton Mixed team 8 October \n", - "16 Tennis Women 's singles 9 October \n", - "17 Shooting Men 's 25m centre fire pistol Individual 10 October \n", - "18 Wrestling Men 's freestyle 84 kg 10 October \n", - "19 Wrestling Men 's freestyle 120 kg 10 October },\n", - " { 'answer': '79',\n", - " 'context': Player Ct Span\n", - "0 Suresh Raina (CSK, GL) 95 2008–2018\n", - "1 Rohit Sharma (DC, MI) 79 2008–2018\n", - "2 AB de Villiers (DD, RCB) 78 2008–2018\n", - "3 Kieron Pollard (MI) 74 2010–2018\n", - "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", - " { 'answer': '78',\n", - " 'context': Player Ct Span\n", - "0 Suresh Raina (CSK, GL) 95 2008–2018\n", - "1 Rohit Sharma (DC, MI) 79 2008–2018\n", - "2 AB de Villiers (DD, RCB) 78 2008–2018\n", - "3 Kieron Pollard (MI) 74 2010–2018\n", - "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", - " { 'answer': '74',\n", - " 'context': Player Ct Span\n", - "0 Suresh Raina (CSK, GL) 95 2008–2018\n", - "1 Rohit Sharma (DC, MI) 79 2008–2018\n", - "2 AB de Villiers (DD, RCB) 78 2008–2018\n", - "3 Kieron Pollard (MI) 74 2010–2018\n", - "4 Dwayne Bravo (CSK, MI, Gujarat Lions) 69 2008–2018},\n", - " { 'answer': 'Canada',\n", - " 'context': Place Player Country Score To par\n", - "0 1 Phil Mickelson United States 70-72-70=212 –4\n", - "1 T2 Chad Campbell United States 71-67-75=213 –3\n", - "2 T2 Fred Couples United States 71-70-72=213 –3\n", - "3 T4 Stephen Ames Canada 74-70-70=214 –2\n", - "4 T4 Tim Clark South Africa 70-72-72=214 –2\n", - "5 T4 Darren Clarke Northern Ireland 72-70-72=214 –2\n", - "6 T4 Rocco Mediate United States 68-73-73=214 –2\n", - "7 T4 Vijay Singh Fiji 67-74-73=214 –2\n", - "8 T4 Tiger Woods United States 72-71-71=214 –2\n", - "9 T10 Retief Goosen South Africa 70-73-72=215 –1\n", - "10 T10 Miguel Ángel Jiménez Spain 72-74-69=215 –1}]\n" - ] - } - ], + "outputs": [], "source": [ "# We can see both text passages and tables as contexts of the predicted answers.\n", "print_answers(predictions, details=\"minimum\")" @@ -2527,7 +562,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -2537,223 +572,104 @@ }, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n", - "Query: What is Cuba's national tree?\n", - "Answers:\n", - "[ { 'answer': 'Cuban royal palm',\n", - " 'context': Country ... Scientific name\n", - "0 Afghanistan ... \n", - "1 Albania ... Olea europaea\n", - "2 Antigua and Barbuda ... Bucida buceras\n", - "3 Argentina ... Erythrina crista-galli , Schinopsis balansae\n", - "4 Australia ... Acacia pycnantha\n", - "5 Bahamas ... Guaiacum sanctum\n", - "6 Bangladesh ... Mangifera indica\n", - "7 Belize ... Swietenia macrophylla\n", - "8 Bhutan ... Cupressus cashmeriana\n", - "9 Brazil ... Caesalpinia echinata\n", - "10 Cambodia ... Borassus flabellifer\n", - "11 Canada ... Acer\n", - "12 Chile ... Araucaria araucana\n", - "13 Colombia ... Ceroxylon quindiuense\n", - "14 Costa Rica ... Enterolobium cyclocarpum\n", - "15 Croatia ... Quercus robur\n", - "16 Cuba ... Roystonea regia\n", - "17 Cyprus ... Quercus alnifolia\n", - "18 Czech Republic ... Tilia cordata\n", - "19 Denmark ... Fagus sylvatica\n", - "\n", - "[20 rows x 3 columns]},\n", - " { 'answer': 'Quercus sagraeana , the Cuban oak',\n", - " 'context': 'Quercus sagraeana , the Cuban oak , is a medium-sized '\n", - " 'evergreen tree native to western Cuba in the Cuban pine '\n", - " 'forests ecoregion .'},\n", - " { 'answer': \"Glenn O'Brien\",\n", - " 'context': Book title ... Notes\n", - "0 Sex ... The book contains erotica influenced photographs taken by Steven Meisel and ...\n", - "1 Madonna : The Girlie Show ... The photographs in the book showcased behind-the-scenes of the 1993 Girlie S...\n", - "2 The Making of Evita ... Featuring an introduction by Madonna , The Making of Evita chronicles the cr...\n", - "3 The Emperor 's New Clothes : An All-Star Retelling of the Classic Fairy Tale ... This fully illustrated retelling of the classic fairy tale by Hans Christian...\n", - "4 X-Static Process ... In 2002 , Madonna had collaborated with photographer Steven Klein for an art...\n", - "5 Nobody Knows Me ... Available for one month only via Madonna 's official website . Contained 52 ...\n", - "6 Madonna Confessions ... Behind-the-scenes and on-stage pictures from Madonna 's 2006 Confessions Tou...\n", - "7 I Am Because We Are ... The book contains excerpts from interviews with Malawian children , their bi...\n", - "8 Madonna : Sticky & Sweet ... Behind-the-scenes and on-stage photography from Madonna 's Sticky & Sweet To...\n", - "9 Tom Munro ... Munro 's self-titled first monograph book consists of photographs taken by h...\n", - "10 Mayumi 's Kitchen : Macrobiotic Cooking for Body and Soul ... Mayumi Nishimura worked as Madonna 's private chef for seven years , and she...\n", - "\n", - "[11 rows x 6 columns]},\n", - " { 'answer': 'Guy Oseary',\n", - " 'context': Book title ... Notes\n", - "0 Sex ... The book contains erotica influenced photographs taken by Steven Meisel and ...\n", - "1 Madonna : The Girlie Show ... The photographs in the book showcased behind-the-scenes of the 1993 Girlie S...\n", - "2 The Making of Evita ... Featuring an introduction by Madonna , The Making of Evita chronicles the cr...\n", - "3 The Emperor 's New Clothes : An All-Star Retelling of the Classic Fairy Tale ... This fully illustrated retelling of the classic fairy tale by Hans Christian...\n", - "4 X-Static Process ... In 2002 , Madonna had collaborated with photographer Steven Klein for an art...\n", - "5 Nobody Knows Me ... Available for one month only via Madonna 's official website . Contained 52 ...\n", - "6 Madonna Confessions ... Behind-the-scenes and on-stage pictures from Madonna 's 2006 Confessions Tou...\n", - "7 I Am Because We Are ... The book contains excerpts from interviews with Malawian children , their bi...\n", - "8 Madonna : Sticky & Sweet ... Behind-the-scenes and on-stage photography from Madonna 's Sticky & Sweet To...\n", - "9 Tom Munro ... Munro 's self-titled first monograph book consists of photographs taken by h...\n", - "10 Mayumi 's Kitchen : Macrobiotic Cooking for Body and Soul ... Mayumi Nishimura worked as Madonna 's private chef for seven years , and she...\n", - "\n", - "[11 rows x 6 columns]},\n", - " { 'answer': 'Guy Oseary',\n", - " 'context': Book title ... Notes\n", - "0 Sex ... The book contains erotica influenced photographs taken by Steven Meisel and ...\n", - "1 Madonna : The Girlie Show ... The photographs in the book showcased behind-the-scenes of the 1993 Girlie S...\n", - "2 The Making of Evita ... Featuring an introduction by Madonna , The Making of Evita chronicles the cr...\n", - "3 The Emperor 's New Clothes : An All-Star Retelling of the Classic Fairy Tale ... This fully illustrated retelling of the classic fairy tale by Hans Christian...\n", - "4 X-Static Process ... In 2002 , Madonna had collaborated with photographer Steven Klein for an art...\n", - "5 Nobody Knows Me ... Available for one month only via Madonna 's official website . Contained 52 ...\n", - "6 Madonna Confessions ... Behind-the-scenes and on-stage pictures from Madonna 's 2006 Confessions Tou...\n", - "7 I Am Because We Are ... The book contains excerpts from interviews with Malawian children , their bi...\n", - "8 Madonna : Sticky & Sweet ... Behind-the-scenes and on-stage photography from Madonna 's Sticky & Sweet To...\n", - "9 Tom Munro ... Munro 's self-titled first monograph book consists of photographs taken by h...\n", - "10 Mayumi 's Kitchen : Macrobiotic Cooking for Body and Soul ... Mayumi Nishimura worked as Madonna 's private chef for seven years , and she...\n", - "\n", - "[11 rows x 6 columns]},\n", - " { 'answer': 'Belize',\n", - " 'context': Country ... Scientific name\n", - "0 Afghanistan ... \n", - "1 Albania ... Olea europaea\n", - "2 Antigua and Barbuda ... Bucida buceras\n", - "3 Argentina ... Erythrina crista-galli , Schinopsis balansae\n", - "4 Australia ... Acacia pycnantha\n", - "5 Bahamas ... Guaiacum sanctum\n", - "6 Bangladesh ... Mangifera indica\n", - "7 Belize ... Swietenia macrophylla\n", - "8 Bhutan ... Cupressus cashmeriana\n", - "9 Brazil ... Caesalpinia echinata\n", - "10 Cambodia ... Borassus flabellifer\n", - "11 Canada ... Acer\n", - "12 Chile ... Araucaria araucana\n", - "13 Colombia ... Ceroxylon quindiuense\n", - "14 Costa Rica ... Enterolobium cyclocarpum\n", - "15 Croatia ... Quercus robur\n", - "16 Cuba ... Roystonea regia\n", - "17 Cyprus ... Quercus alnifolia\n", - "18 Czech Republic ... Tilia cordata\n", - "19 Denmark ... Fagus sylvatica\n", - "\n", - "[20 rows x 3 columns]},\n", - " { 'answer': 'Palmyra palm',\n", - " 'context': Country ... Scientific name\n", - "0 Afghanistan ... \n", - "1 Albania ... Olea europaea\n", - "2 Antigua and Barbuda ... Bucida buceras\n", - "3 Argentina ... Erythrina crista-galli , Schinopsis balansae\n", - "4 Australia ... Acacia pycnantha\n", - "5 Bahamas ... Guaiacum sanctum\n", - "6 Bangladesh ... Mangifera indica\n", - "7 Belize ... Swietenia macrophylla\n", - "8 Bhutan ... Cupressus cashmeriana\n", - "9 Brazil ... Caesalpinia echinata\n", - "10 Cambodia ... Borassus flabellifer\n", - "11 Canada ... Acer\n", - "12 Chile ... Araucaria araucana\n", - "13 Colombia ... Ceroxylon quindiuense\n", - "14 Costa Rica ... Enterolobium cyclocarpum\n", - "15 Croatia ... Quercus robur\n", - "16 Cuba ... Roystonea regia\n", - "17 Cyprus ... Quercus alnifolia\n", - "18 Czech Republic ... Tilia cordata\n", - "19 Denmark ... Fagus sylvatica\n", - "\n", - "[20 rows x 3 columns]},\n", - " { 'answer': 'Guadeloupe',\n", - " 'context': State ... Official Language ( s )\n", - "0 Antigua and Barbuda ... English\n", - "1 Dominica ... English\n", - "2 Grenada ... English\n", - "3 Montserrat ... English\n", - "4 Saint Kitts and Nevis ... English\n", - "5 Saint Lucia ... English\n", - "6 Saint Vincent and the Grenadines ... English\n", - "7 Anguilla ... English\n", - "8 British Virgin Islands ... English\n", - "9 Guadeloupe ... French\n", - "10 Martinique ... French\n", - "\n", - "[11 rows x 10 columns]},\n", - " { 'answer': 'Basse-Terre',\n", - " 'context': State ... Official Language ( s )\n", - "0 Antigua and Barbuda ... English\n", - "1 Dominica ... English\n", - "2 Grenada ... English\n", - "3 Montserrat ... English\n", - "4 Saint Kitts and Nevis ... English\n", - "5 Saint Lucia ... English\n", - "6 Saint Vincent and the Grenadines ... English\n", - "7 Anguilla ... English\n", - "8 British Virgin Islands ... English\n", - "9 Guadeloupe ... French\n", - "10 Martinique ... French\n", - "\n", - "[11 rows x 10 columns]},\n", - " { 'answer': 'East Caribbean dollar',\n", - " 'context': State ... Official Language ( s )\n", - "0 Antigua and Barbuda ... English\n", - "1 Dominica ... English\n", - "2 Grenada ... English\n", - "3 Montserrat ... English\n", - "4 Saint Kitts and Nevis ... English\n", - "5 Saint Lucia ... English\n", - "6 Saint Vincent and the Grenadines ... English\n", - "7 Anguilla ... English\n", - "8 British Virgin Islands ... English\n", - "9 Guadeloupe ... French\n", - "10 Martinique ... French\n", - "\n", - "[11 rows x 10 columns]},\n", - " { 'answer': 'Jenkins',\n", - " 'context': NRHP reference number ... County\n", - "0 72000402 ... Wilkes\n", - "1 ... Meriwether\n", - "2 ... Bartow\n", - "3 71000280 ... Jenkins\n", - "4 ... Chatham\n", - "5 89002015 ... Thomas\n", - "6 ... Glynn\n", - "7 75000615 ... Walton\n", - "8 84001156 ... Sumter\n", - "9 79000713 ... Cobb\n", - "10 82002491 ... Twiggs\n", - "11 74000703 ... Taliaferro\n", - "12 80001039 ... Floyd\n", - "13 90000805 ... Gwinnett\n", - "14 73000620 ... Decatur\n", - "15 79000731 ... Houston\n", - "16 95000741 ... Grady\n", - "17 97000559 ... Greene\n", - "18 74000662 ... Brooks\n", - "19 75000616 ... Washington\n", - "\n", - "[20 rows x 4 columns]},\n", - " { 'answer': \"Primula farinosa , the bird's-eye primrose\",\n", - " 'context': \"Primula farinosa , the bird's-eye primrose , is a small \"\n", - " 'perennial plant in the family Primulaceae , native to '\n", - " 'Northern Europe and northern Asia , and '},\n", - " { 'answer': 'Poospiza',\n", - " 'context': 'Poospiza is a genus of finch-like tanagers found in both '\n", - " 'the South American lowlands and the Andes mountains . '\n", - " 'Generally they are arboreal feeders in '},\n", - " { 'answer': 'golden-crowned sparrow',\n", - " 'context': 'The golden-crowned sparrow ( Zonotrichia atricapilla ) is '\n", - " 'a large American sparrow found in the western part of '\n", - " 'North America .'},\n", - " { 'answer': 'Banksia sessilis var . cordata is a variety of Banksia '\n", - " 'sessilis ( Parrot Bush',\n", - " 'context': 'Banksia sessilis var . cordata is a variety of Banksia '\n", - " 'sessilis ( Parrot Bush ) , with unusually large leaves and '\n", - " 'flower heads . It is a rare variety '},\n", - " { 'answer': 'rain',\n", - " 'context': 's and operates hotels at Machu Picchu Natural Reserve , '\n", - " 'the southeastern rain forest of the Amazon in Puerto '\n", - " 'Maldonado , Tambopata , the Sacred Valley'}]\n" + "Process SpawnPoolWorker-11:\n", + "Process SpawnPoolWorker-12:\n", + "Process SpawnPoolWorker-14:\n", + "Process SpawnPoolWorker-13:\n", + "Process SpawnPoolWorker-9:\n", + "Process SpawnPoolWorker-8:\n", + "Process SpawnPoolWorker-10:\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", + " with self._rlock:\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", + " return self._semlock.__enter__()\n", + "KeyboardInterrupt\n", + "Traceback (most recent call last):\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", + " self.run()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", + " task = get()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 366, in get\n", + " res = self._reader.recv_bytes()\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 221, in recv_bytes\n", + " buf = self._recv_bytes(maxlength)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 419, in _recv_bytes\n", + " buf = self._recv(4)\n", + " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 384, in _recv\n", + " chunk = read(handle, remaining)\n", + "KeyboardInterrupt\n" ] } ], @@ -2776,7 +692,7 @@ "metadata": {}, "outputs": [], "source": [ - "from haystack import Label, MultiLabel\n", + "from haystack import Label, MultiLabel, Answer\n", "\n", "def read_labels(filename, tables):\n", " processed_labels = []\n", @@ -2801,7 +717,58 @@ "outputs": [], "source": [ "eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={\"top_k\": 10})\n", - "text_table_qa_pipeline.print_eval_report(eval_results)" + "print(eval_results.calculate_metrics())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding tables from PDFs\n", + "It can sometimes be hard to provide your data in form of a pandas DataFrame. For this case, we provide the `ParsrConverter` wrapper that can help you to convert, for example, a PDF file into a document that you can index." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!docker run -p 3001:3001 axarev/parsr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!wget https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from haystack.nodes import ParsrConverter\n", + "\n", + "converter = ParsrConverter()\n", + "\n", + "docs = converter.convert(\"table.pdf\")\n", + "\n", + "tables = [doc for doc in docs if doc.content_type == \"table\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tables = [doc for doc in docs if doc[\"content_type\"] == \"table\"]\n", + "print(tables)" ] }, { @@ -2849,7 +816,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.9" + "version": "3.9.10" } }, "nbformat": 4, diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index 35cdc5b34c..e03c0f5733 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -47,7 +47,7 @@ def read_tables(filename): return processed_tables - tables = read_tables("data/ottqa_tables_sample.json") + tables = read_tables(f"{doc_dir}/tables.json") document_store.write_documents(tables, index="document") ### Retriever @@ -139,7 +139,7 @@ def read_tables(filename): print_answers(predictions, details="minimum") # Example query whose answer resides in a table - predictions = text_table_qa_pipeline.run(query="What is the Senior Bowl?") + predictions = text_table_qa_pipeline.run(query="Who was Thomas Alva Edison?") # We can see both text passages and tables as contexts of the predicted answers. print_answers(predictions, details="minimum") From d8ef34088bee95e0e73de035641486efe693d8f0 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Mon, 28 Mar 2022 16:07:53 +0200 Subject: [PATCH 04/11] update telemetry with tutorial changes --- haystack/telemetry.py | 2 +- tutorials/Tutorial15_TableQA.ipynb | 2 +- tutorials/Tutorial15_TableQA.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/haystack/telemetry.py b/haystack/telemetry.py index 317a95feb5..5471f25348 100644 --- a/haystack/telemetry.py +++ b/haystack/telemetry.py @@ -202,7 +202,7 @@ def send_tutorial_event(url: str): "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt12.zip": "12", # Tutorial 13: no dataset available yet "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/wiki_gameofthrones_txt14.zip": "14", - "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_sample.zip": "15", + "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip": "15", # "https://nlp.stanford.edu/data/glove.6B.zip": "16", "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/preprocessing_tutorial16.zip": "16", } diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index b5ef420574..7169e24bcf 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -152,7 +152,7 @@ "from haystack.utils import fetch_archive_from_http\n", "\n", "doc_dir = \"data/tutorial15\"\n", - "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_sample.zip\"\n", + "s3_url = \"https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip\"\n", "fetch_archive_from_http(url=s3_url, output_dir=doc_dir)" ] }, diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index e7bd1cdece..bbdd7c1c64 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -26,7 +26,7 @@ def tutorial15_tableqa(): # Here: 1000 tables + texts doc_dir = "data/tutorial15" - s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_tables_sample.json.zip" + s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip" fetch_archive_from_http(url=s3_url, output_dir=doc_dir) # Add the tables to the DocumentStore From f7d7a67efacccc7acc9b5431377b03437e2e71e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 14:18:35 +0000 Subject: [PATCH 05/11] Update Documentation & Code Style --- docs/_src/tutorials/tutorials/15.md | 39 +++++++++++++++++++++++++---- tutorials/Tutorial15_TableQA.ipynb | 2 +- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/docs/_src/tutorials/tutorials/15.md b/docs/_src/tutorials/tutorials/15.md index 2db992763b..4025643046 100644 --- a/docs/_src/tutorials/tutorials/15.md +++ b/docs/_src/tutorials/tutorials/15.md @@ -95,7 +95,7 @@ Just as text passages, tables are represented as `Document` objects in Haystack. from haystack.utils import fetch_archive_from_http doc_dir = "data/tutorial15" -s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/ottqa_sample.zip" +s3_url = "https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip" fetch_archive_from_http(url=s3_url, output_dir=doc_dir) ``` @@ -154,7 +154,6 @@ retriever = TableTextRetriever( query_embedding_model="deepset/bert-small-mm_retrieval-question_encoder", passage_embedding_model="deepset/bert-small-mm_retrieval-passage_encoder", table_embedding_model="deepset/bert-small-mm_retrieval-table_encoder", - embed_meta_fields=["title", "section_title"], ) ``` @@ -305,7 +304,7 @@ display.Image("pipeline.png") ```python # Example query whose answer resides in a text passage -predictions = text_table_qa_pipeline.run(query="What is the Senior Bowl?") +predictions = text_table_qa_pipeline.run(query="Who was Thomas Alva Edison?") ``` @@ -331,7 +330,7 @@ To evaluate our pipeline, we can use haystack's evaluation feature. We just need ```python -from haystack import Label, MultiLabel +from haystack import Label, MultiLabel, Answer def read_labels(filename, tables): @@ -361,7 +360,37 @@ passage_labels = read_labels(f"{doc_dir}/labels.json", passages) ```python eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={"top_k": 10}) -text_table_qa_pipeline.print_eval_report(eval_results) +print(eval_results.calculate_metrics()) +``` + +## Adding tables from PDFs +It can sometimes be hard to provide your data in form of a pandas DataFrame. For this case, we provide the `ParsrConverter` wrapper that can help you to convert, for example, a PDF file into a document that you can index. + + +```python +!docker run -p 3001:3001 axarev/parsr +``` + + +```python +!wget https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf +``` + + +```python +from haystack.nodes import ParsrConverter + +converter = ParsrConverter() + +docs = converter.convert("table.pdf") + +tables = [doc for doc in docs if doc.content_type == "table"] +``` + + +```python +tables = [doc for doc in docs if doc["content_type"] == "table"] +print(tables) ``` ## About us diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index 7169e24bcf..adc3933b8c 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -232,7 +232,7 @@ " document_store=document_store,\n", " query_embedding_model=\"deepset/bert-small-mm_retrieval-question_encoder\",\n", " passage_embedding_model=\"deepset/bert-small-mm_retrieval-passage_encoder\",\n", - " table_embedding_model=\"deepset/bert-small-mm_retrieval-table_encoder\"\n", + " table_embedding_model=\"deepset/bert-small-mm_retrieval-table_encoder\",\n", ")" ] }, From cfdb46fa248b2f2c5bc5d6410ea0d102cba4dca1 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Tue, 29 Mar 2022 14:04:54 +0200 Subject: [PATCH 06/11] remove error output --- tutorials/Tutorial15_TableQA.ipynb | 104 +---------------------------- 1 file changed, 1 insertion(+), 103 deletions(-) diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index 7169e24bcf..9475a54181 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -567,109 +567,7 @@ "id": "4kw53uWep3zj", "outputId": "b332cc17-3cb8-4e20-d79d-bb4cf656f277" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Process SpawnPoolWorker-11:\n", - "Process SpawnPoolWorker-12:\n", - "Process SpawnPoolWorker-14:\n", - "Process SpawnPoolWorker-13:\n", - "Process SpawnPoolWorker-9:\n", - "Process SpawnPoolWorker-8:\n", - "Process SpawnPoolWorker-10:\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 365, in get\n", - " with self._rlock:\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/synchronize.py\", line 95, in __enter__\n", - " return self._semlock.__enter__()\n", - "KeyboardInterrupt\n", - "Traceback (most recent call last):\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 315, in _bootstrap\n", - " self.run()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/process.py\", line 108, in run\n", - " self._target(*self._args, **self._kwargs)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py\", line 114, in worker\n", - " task = get()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/queues.py\", line 366, in get\n", - " res = self._reader.recv_bytes()\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 221, in recv_bytes\n", - " buf = self._recv_bytes(maxlength)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 419, in _recv_bytes\n", - " buf = self._recv(4)\n", - " File \"/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/connection.py\", line 384, in _recv\n", - " chunk = read(handle, remaining)\n", - "KeyboardInterrupt\n" - ] - } - ], + "outputs": [], "source": [ "# We can see both text passages and tables as contexts of the predicted answers.\n", "print_answers(predictions, details=\"minimum\")" From 2f9d137ef575b96590b45c738a272c3c623a33b7 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Tue, 29 Mar 2022 14:39:11 +0200 Subject: [PATCH 07/11] add output --- tutorials/Tutorial15_TableQA.ipynb | 3026 +++++++++++++++++++++++++++- 1 file changed, 2970 insertions(+), 56 deletions(-) diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index e7df08f7ad..5d73a4faae 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -74,11 +74,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "id": "frDqgzK7v2i1" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ef915e8e9fc887bed9c7545c8c63e8aa710ed6ec9596f2507f1d55502384b1dc\n" + ] + } + ], "source": [ "# Recommended: Start Elasticsearch using Docker via the Haystack utility function\n", "from haystack.utils import launch_es\n", @@ -111,11 +126,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "id": "RmxepXZtwQ0E" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.telemetry - Haystack sends anonymous usage data to understand the actual usage and steer dev efforts towards features that are most meaningful to users. You can opt-out at anytime by calling disable_telemetry() or by manually setting the environment variable HAYSTACK_TELEMETRY_ENABLED as described for different operating systems on the documentation page. More information at https://haystack.deepset.ai/guides/telemetry\n" + ] + } + ], "source": [ "# Connect to Elasticsearch\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", @@ -141,11 +164,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "nM63uwbd8zd6" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.utils.import_utils - Fetching from https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip to `data/tutorial15`\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Let's first fetch some tables that we want to query\n", "# Here: 1000 tables from OTT-QA\n", @@ -158,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -166,7 +207,35 @@ "id": "SKjw2LuXxlGh", "outputId": "92c67d24-d6fb-413e-8dd7-53075141d508" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Opponent M W L T NR Win% First Last\n", + "0 Afghanistan 2 2 0 0 0 100.0 2012 2014\n", + "1 Australia 98 32 62 1 3 34.21 1975 2017\n", + "2 Bangladesh 35 31 4 0 0 88.57 1986 2015\n", + "3 Canada 2 2 0 0 0 100.0 1979 2011\n", + "4 England 82 31 49 0 2 38.75 1974 2017\n", + "5 Hong Kong 2 2 0 0 0 100.0 2004 2008\n", + "6 India 129 73 52 0 4 58.4 1978 2017\n", + "7 Ireland 7 5 1 1 0 78.57 2007 2016\n", + "8 Kenya 6 6 0 0 0 100.0 1996 2011\n", + "9 Namibia 1 1 0 0 0 100.0 2003 2003\n", + "10 Netherlands 3 3 0 0 0 100.0 1996 2003\n", + "11 New Zealand 103 53 47 1 2 52.97 1973 2018\n", + "12 Scotland 3 3 0 0 0 100.0 1999 2013\n", + "13 South Africa 73 25 47 0 1 34.72 1992 2017\n", + "14 Sri Lanka 153 90 58 1 4 60.73 1975 2017\n", + "15 United Arab Emirates 3 3 0 0 0 100.0 1994 2015\n", + "16 West Indies 133 60 70 3 0 46.24 1975 2017\n", + "17 Zimbabwe 59 52 4 1 2 92.1 1992 2018\n", + "18 Total[12] 894 474 394 8 18 54.56 1973 2018\n", + "{}\n" + ] + } + ], "source": [ "# Add the tables to the DocumentStore\n", "\n", @@ -220,11 +289,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "id": "EY_qvdV6wyK5" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-question_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-question_encoder\n", + "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", + "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", + "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-passage_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-passage_encoder\n", + "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", + "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", + "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-table_encoder locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-table_encoder\n" + ] + } + ], "source": [ "from haystack.nodes.retriever import TableTextRetriever\n", "\n", @@ -238,11 +337,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "id": "jasi1RM2zIJ7" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.document_stores.elasticsearch - Updating embeddings for all 437 docs ...\n", + "Updating embeddings: 10000 Docs [00:22, 435.12 Docs/s] \n" + ] + } + ], "source": [ "# Add table embeddings to the tables in DocumentStore\n", "document_store.update_embeddings(retriever=retriever)" @@ -263,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -271,7 +379,27 @@ "id": "YHfQWxVI0N2e", "outputId": "1d8dc4d2-a184-489e-defa-d445d76c458f" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Year Coach Super Bowl \\\n", + "0 1966 Vince Lombardi I \n", + "1 1967 Vince Lombardi II \n", + "2 1996 Mike Holmgren XXXI \n", + "3 2010 Mike McCarthy XLV \n", + "4 Total Super Bowls won: Total Super Bowls won: Total Super Bowls won: \n", + "\n", + " Location Opponent Score Record \n", + "0 Los Angeles, California Kansas City Chiefs 35–10 12–2 \n", + "1 Miami, Florida Oakland Raiders 33–14 9–4–1 \n", + "2 New Orleans, Louisiana New England Patriots 35–21 13–3 \n", + "3 Arlington, Texas Pittsburgh Steelers 31–25 10–6 \n", + "4 Total Super Bowls won: Total Super Bowls won: 4 4 \n" + ] + } + ], "source": [ "# Try the Retriever\n", "from haystack.utils import print_documents\n", @@ -295,11 +423,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "id": "4APcRoio2RxG" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + } + ], "source": [ "from haystack.nodes import TableReader\n", "\n", @@ -308,7 +445,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -316,7 +453,47 @@ "id": "ILuAXkyN4F7x", "outputId": "4bd19dcb-df8e-4a4d-b9d2-d34650e9e5c2" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Name Program Role Salary Year \\\n", + "0 Simon Cowell The X Factor Judge $75 million 2012–13 \n", + "1 Britney Spears American Idol $25 million 2017–18 [15] \n", + "2 Jennifer Lopez $20 million 2011–12 [16] nan \n", + "3 Mariah Carey $18 million 2012–13 [17] nan \n", + "4 Hugh Laurie House Gregory House $15 million 2013 \n", + "5 Ryan Seacrest American Idol Host 2013–16 [14] \n", + "6 Katy Perry The X Factor Judge 2012 [17] \n", + "7 Miley Cyrus The Voice Coach $13 million 2016–17 \n", + "8 Adam Levine 2016–18 [18] nan nan \n", + "9 Blake Shelton 2016–18 [18] nan nan \n", + "10 Christina Aguilera $12.5 million 2013 [19] nan \n", + "11 Kelly Clarkson $12 million 2018 [20] nan \n", + "12 Shakira 2013 [19] nan nan \n", + "13 Gwen Stefani 2017 [21] nan nan \n", + "14 Nicki Minaj American Idol Judge 2012–13 [19] \n", + "\n", + " Ref. \n", + "0 [14] \n", + "1 nan \n", + "2 nan \n", + "3 nan \n", + "4 [14] \n", + "5 nan \n", + "6 nan \n", + "7 [18] \n", + "8 nan \n", + "9 nan \n", + "10 nan \n", + "11 nan \n", + "12 nan \n", + "13 nan \n", + "14 nan \n" + ] + } + ], "source": [ "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", "\n", @@ -326,7 +503,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -334,7 +511,50 @@ "id": "ilbsecgA4vfN", "outputId": "f845f43e-43e8-48fe-d0ef-91b17a5eff0e" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Query: Who played Gregory House in the series House?\n", + "Answers:\n", + "[ ]\n" + ] + } + ], "source": [ "from haystack.utils import print_answers\n", "\n", @@ -353,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -361,7 +581,16 @@ "id": "It8XYT2ZTVJs", "outputId": "7d31af60-e04a-485d-f0ee-f29592b03928" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted answer: Hugh Laurie\n", + "Meta field: {'aggregation_operator': 'NONE', 'answer_cells': ['Hugh Laurie']}\n" + ] + } + ], "source": [ "print(f\"Predicted answer: {prediction['answers'][0].answer}\")\n", "print(f\"Meta field: {prediction['answers'][0].meta}\")" @@ -381,7 +610,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": { "id": "G-aZZvyv4-Mf" }, @@ -397,7 +626,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -405,7 +634,1296 @@ "id": "m8evexnW6dev", "outputId": "40514084-f516-4f13-fb48-6a55cb578366" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/homebrew/lib/python3.9/site-packages/numpy/core/fromnumeric.py:3440: RuntimeWarning: Mean of empty slice.\n", + " return _methods._mean(a, axis=axis, dtype=dtype,\n", + "/opt/homebrew/lib/python3.9/site-packages/numpy/core/_methods.py:189: RuntimeWarning: invalid value encountered in double_scalars\n", + " ret = ret.dtype.type(ret / rcount)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Query: When was Guilty Gear Xrd : Sign released?\n", + "Answers:\n", + "[ { 'answer': 'December 16 , 2014',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear Xrd : Sign December 16 , 2014 \n", + "1 BlazBlue : Chrono Phantasma Extend June 30 , 2015 \n", + "2 Aegis of Earth : Protonovus Assault March 15 , 2016 \n", + "3 BlazBlue : Central Fiction October 6 , 2016 \n", + "4 Chronicles of Teddy : Harmony of Exidus March 29 , 2016 \n", + "5 Guilty Gear Xrd : Revelator June 7 , 2016 \n", + "6 Exist Archive : The Other Side of the Sky October 18 , 2016 \n", + "7 Guilty Gear Xrd : Rev 2 May 25 , 2017 \n", + "8 Under Night In-Birth Exe : Late [ st ] Late 2017 \n", + "9 School Girl/Zombie Hunter Late 2017 \n", + "10 Tokyo Xanadu eX+ 2017 \n", + "11 Code : Realize ~Bouquet of Rainbows~ 2018 \n", + "12 Death Mark 2018 \n", + "13 NG ( Visual Novel ) 2019 \n", + "\n", + " Developer ( s ) Platform ( s ) \n", + "0 Arc System Works PlayStation 4 \n", + "1 Arc System Works PlayStation 4 \n", + "2 Acquire PlayStation 4 \n", + "3 Arc System Works PlayStation 4 \n", + "4 LookAtMyGame PlayStation 4 ( PSN ) \n", + "5 Arc System Works PlayStation 4 \n", + "6 Spike Chunsoft , tri-Ace PlayStation 4 \n", + "7 Arc System Works PlayStation 4 \n", + "8 Ecole Software , French Bread PlayStation 4 \n", + "9 Tamsoft PlayStation 4 \n", + "10 Falcom PlayStation 4 \n", + "11 Otomate PlayStation 4 \n", + "12 Experience Inc PlayStation 4 \n", + "13 Experience Inc PlayStation 4 },\n", + " { 'answer': 'October 7 , 2008',\n", + " 'context': Title \\\n", + "0 Battle Fantasia \n", + "1 Guilty Gear 2 : Overture \n", + "2 BlazBlue : Calamity Trigger \n", + "3 0-D Beat Drop \n", + "4 Record of Agarest War \n", + "5 DeathSmiles \n", + "6 BlazBlue : Continuum Shift \n", + "7 Record of Agarest War Zero \n", + "8 Bit.Trip Presents ... Runner2 : Future Legend of Rhythm Alien \n", + "9 A.R.E.S : Extinction Agenda EX \n", + "\n", + " First release Developer ( s ) Platform ( s ) \n", + "0 September 16 , 2008 Arc System Works Xbox 360 \n", + "1 October 7 , 2008 Arc System Works Xbox 360 \n", + "2 June 30 , 2009 Arc System Works Xbox 360 \n", + "3 November 11 , 2009 Cyclone Zero Xbox 360 ( XBLA ) \n", + "4 April 27 , 2010 Compile Heart , Red Entertainment Xbox 360 \n", + "5 June 28 , 2010 Cave Xbox 360 \n", + "6 July 27 , 2010 Arc System Works Xbox 360 \n", + "7 June 14 , 2011 Compile Heart , Red Entertainment Xbox 360 \n", + "8 February 27 , 2013 Gaijin Games Xbox 360 ( XBLA ) \n", + "9 October 2 , 2013 Extend Studio Xbox 360 ( XBLA ) },\n", + " { 'answer': 'April 7 , 2009',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", + "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", + "2 Cho Aniki Zero March 25 , 2010 \n", + "3 Mimana Iyar Chronicle March 30 , 2010 \n", + "4 Gladiator Begins September 14 , 2010 \n", + "5 Blazing Souls Accelate October 19 , 2010 \n", + "6 Jikandia : The Timeless Land March 15 , 2011 \n", + "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", + "8 Fate/Extra November 1 , 2011 \n", + "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", + "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", + "11 Ragnarok Tactics February 19 , 2013 \n", + "12 Sweet Fuse : At Your Side August 27 , 2013 \n", + "\n", + " Developer ( s ) \\\n", + "0 Arc System Works \n", + "1 Arc System Works \n", + "2 extreme Co. , Ltd \n", + "3 Kogado Studio , Premium Agency \n", + "4 Goshow \n", + "5 Neverland \n", + "6 Opus Studio Inc \n", + "7 Arc System Works \n", + "8 Type-Moon \n", + "9 Idea Factory , Otomate \n", + "10 Idea Factory \n", + "11 GungHo Online Entertainment , Apollosoft , Chime \n", + "12 Idea Factory , Otomate , Comcept \n", + "\n", + " Platform ( s ) \n", + "0 PlayStation Portable \n", + "1 PlayStation Portable \n", + "2 PlayStation Portable ( PSN ) \n", + "3 PlayStation Portable \n", + "4 PlayStation Portable \n", + "5 PlayStation Portable \n", + "6 PlayStation Portable \n", + "7 PlayStation Portable \n", + "8 PlayStation Portable \n", + "9 PlayStation Portable \n", + "10 PlayStation Portable \n", + "11 PlayStation Portable \n", + "12 PlayStation Portable },\n", + " { 'answer': 'April 7 , 2009',\n", + " 'context': Title First release \\\n", + "0 Guilty Gear XX Accent Core Plus April 7 , 2009 \n", + "1 BlazBlue : Calamity Trigger Portable February 25 , 2010 \n", + "2 Cho Aniki Zero March 25 , 2010 \n", + "3 Mimana Iyar Chronicle March 30 , 2010 \n", + "4 Gladiator Begins September 14 , 2010 \n", + "5 Blazing Souls Accelate October 19 , 2010 \n", + "6 Jikandia : The Timeless Land March 15 , 2011 \n", + "7 BlazBlue : Continuum Shift II May 31 , 2011 \n", + "8 Fate/Extra November 1 , 2011 \n", + "9 Hakuoki : Demon of the Fleeting Blossom February 14 , 2012 \n", + "10 Hakuoki : Warriors of the Shinsengumi November 6 , 2012 \n", + "11 Ragnarok Tactics February 19 , 2013 \n", + "12 Sweet Fuse : At Your Side August 27 , 2013 \n", + "\n", + " Developer ( s ) \\\n", + "0 Arc System Works \n", + "1 Arc System Works \n", + "2 extreme Co. , Ltd \n", + "3 Kogado Studio , Premium Agency \n", + "4 Goshow \n", + "5 Neverland \n", + "6 Opus Studio Inc \n", + "7 Arc System Works \n", + "8 Type-Moon \n", + "9 Idea Factory , Otomate \n", + "10 Idea Factory \n", + "11 GungHo Online Entertainment , Apollosoft , Chime \n", + "12 Idea Factory , Otomate , Comcept \n", + "\n", + " Platform ( s ) \n", + "0 PlayStation Portable \n", + "1 PlayStation Portable \n", + "2 PlayStation Portable ( PSN ) \n", + "3 PlayStation Portable \n", + "4 PlayStation Portable \n", + "5 PlayStation Portable \n", + "6 PlayStation Portable \n", + "7 PlayStation Portable \n", + "8 PlayStation Portable \n", + "9 PlayStation Portable \n", + "10 PlayStation Portable \n", + "11 PlayStation Portable \n", + "12 PlayStation Portable },\n", + " { 'answer': '2010',\n", + " 'context': Title Year Other artist ( s ) \\\n", + "0 Count on You 2010 Big Time Rush \n", + "1 You Got ta Want It 2011 nan \n", + "2 Chocolate Brown Eyes 2013 Salaam Remi \n", + "3 Vertigo 2013 Jason Derulo \n", + "4 Vertigo 2014 Jason Derulo \n", + "5 Playing With Fire 2015 Thomas Rhett \n", + "6 Too Late for Love 2016 DJ Antoine \n", + "7 Water Guns 2016 Todrick Hall \n", + "8 Chasing 2017 Danny Gokey \n", + "\n", + " Album \n", + "0 BTR \n", + "1 Official Gameday Music of the NFL \n", + "2 One in the Chamber \n", + "3 Tattoos \n", + "4 Talk Dirty \n", + "5 Tangled Up \n", + "6 Provocateur \n", + "7 Straight Outta Oz \n", + "8 Rise },\n", + " { 'answer': '2012',\n", + " 'context': Title Year \\\n", + "0 The American Scream 2012 \n", + "1 Dead Souls 2012 \n", + "2 Ghoul 2012 \n", + "3 Beneath 2013 \n", + "4 Chilling Visions : 5 Senses of Fear 2013 \n", + "5 The Monkey 's Paw 2013 \n", + "6 Animal 2014 \n", + "7 Deep in the Darkness 2014 \n", + "8 The Boy 2015 \n", + "9 SiREN 2016 \n", + "10 Camera Obscura 2017 \n", + "11 Dementia 13 2017 \n", + "\n", + " Production Co \n", + "0 Chiller Films Brainstorm Media \n", + "1 Chiller Films Synthetic Productions \n", + "2 Chiller Films Modernciné \n", + "3 Glass Eye Pix \n", + "4 Chiller Films Synthetic Cinema International \n", + "5 TMP Films \n", + "6 Flower Films Synthetic Cinema International \n", + "7 Chiller Films Synthetic Cinema International \n", + "8 SpectreVision \n", + "9 Studio71 \n", + "10 Chiller Films Hood River Entertainment Paper Street Pictures \n", + "11 Pipeline Entertainment Haloran LLC },\n", + " { 'answer': 'November 15 , 2007',\n", + " 'context': Title First release \\\n", + "0 Hooked ! Real Motion Fishing October 30 , 2007 \n", + "1 Guilty Gear XX Accent Core November 15 , 2007 \n", + "2 MiniCopter : Adventure Flight April 11 , 2008 \n", + "3 River City Ransom April 21 , 2008 \n", + "4 Double Dragon April 28 , 2008 \n", + "5 Renegade May 5 , 2008 \n", + "6 Castle of Shikigami III May 13 , 2008 \n", + "7 Family Table Tennis May 26 , 2008 \n", + "8 Super Dodge Ball September 22 , 2008 \n", + "9 Family Glide Hockey January 19 , 2009 \n", + "10 Bit.Trip Beat March 16 , 2009 \n", + "11 Family Pirate Party May 11 , 2009 \n", + "12 Guilty Gear XX Accent Core Plus May 12 , 2009 \n", + "13 Family Mini Golf June 22 , 2009 \n", + "14 Bit.Trip Core July 6 , 2009 \n", + "15 Family Slot Car Racing August 17 , 2009 \n", + "16 Crash ' n the Boys : Street Challenge September 14 , 2009 \n", + "17 Family Tennis September 21 , 2009 \n", + "18 Family Card Games November 2 , 2009 \n", + "19 Hooked ! Again : Real Motion Fishing November 3 , 2009 \n", + "\n", + " Developer ( s ) Platform ( s ) \n", + "0 SIMS Wii \n", + "1 Arc System Works Wii \n", + "2 Sonic Powered Wii \n", + "3 Technos Wii ( Virtual Console ) \n", + "4 Technos Wii ( Virtual Console ) \n", + "5 Technos Wii ( Virtual Console ) \n", + "6 Alfa System Wii \n", + "7 Arc System Works Wii ( WiiWare ) \n", + "8 Technos Wii ( Virtual Console ) \n", + "9 Arc System Works Wii ( WiiWare ) \n", + "10 Gaijin Games Wii ( WiiWare ) \n", + "11 Arc System Works Wii ( WiiWare ) \n", + "12 Arc System Works Wii \n", + "13 Arc System Works Wii ( WiiWare ) \n", + "14 Gaijin Games Wii ( WiiWare ) \n", + "15 Arc System Works Wii ( WiiWare ) \n", + "16 Technos Wii ( Virtual Console ) \n", + "17 Arc System Works Wii ( WiiWare ) \n", + "18 Arc System Works Wii ( WiiWare ) \n", + "19 SIMS Co. , Ltd Wii },\n", + " { 'answer': '',\n", + " 'context': Game Publisher Release Date \\\n", + "0 Super Mario 64 Nintendo September 26 , 1996 \n", + "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", + "2 Quake GT Interactive June 22 , 1996 \n", + "3 Civilization II MicroProse February 29 , 1996 \n", + "4 Tekken 2 Namco August 25 , 1996 \n", + "5 Wave Race 64 Nintendo November 1 , 1996 \n", + "6 Realms of the Haunting Interplay December 31 , 1996 \n", + "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", + "8 Resident Evil Capcom March 30 , 1996 \n", + "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", + "10 Dragon Force Sega November 30 , 1996 \n", + "11 Guardian Heroes Sega January 25 , 1996 \n", + "12 Super Mario RPG Nintendo March 9 , 1996 \n", + "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", + "14 NiGHTS into Dreams Sega July 5 , 1996 \n", + "15 Pilotwings 64 Nintendo September 26 , 1996 \n", + "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", + "\n", + " Platform ( s ) MC score GR score \n", + "0 Nintendo 64 94/100 96.41% \n", + "1 PlayStation 93/100 94.75% \n", + "2 DOS 94/100 93.22% \n", + "3 Microsoft Windows 94/100 91.29% \n", + "4 PlayStation 89/100 92.50% \n", + "5 Nintendo 64 92/100 90.67% \n", + "6 Microsoft Windows nan 91.86% \n", + "7 PlayStation 91/100 90.02% \n", + "8 PlayStation 91/100 87.23% \n", + "9 DOS 90/100 90.91% \n", + "10 Sega Saturn nan 89.64% \n", + "11 Sega Saturn nan 89.20% \n", + "12 SNES nan 89.12% \n", + "13 DOS 89/100 88.50% \n", + "14 Sega Saturn nan 88.56% \n", + "15 Nintendo 64 80/100 87.52% \n", + "16 Sega Saturn nan 87.50% },\n", + " { 'answer': '',\n", + " 'context': Game Publisher Release Date \\\n", + "0 Super Mario 64 Nintendo September 26 , 1996 \n", + "1 Wipeout XL/2097 Psygnosis September 30 , 1996 \n", + "2 Quake GT Interactive June 22 , 1996 \n", + "3 Civilization II MicroProse February 29 , 1996 \n", + "4 Tekken 2 Namco August 25 , 1996 \n", + "5 Wave Race 64 Nintendo November 1 , 1996 \n", + "6 Realms of the Haunting Interplay December 31 , 1996 \n", + "7 Tomb Raider Eidos Interactive October 25 , 1996 \n", + "8 Resident Evil Capcom March 30 , 1996 \n", + "9 Command & Conquer : Red Alert Virgin November 22 , 1996 \n", + "10 Dragon Force Sega November 30 , 1996 \n", + "11 Guardian Heroes Sega January 25 , 1996 \n", + "12 Super Mario RPG Nintendo March 9 , 1996 \n", + "13 Duke Nukem 3D GT Interactive January 29 , 1996 \n", + "14 NiGHTS into Dreams Sega July 5 , 1996 \n", + "15 Pilotwings 64 Nintendo September 26 , 1996 \n", + "16 Panzer Dragoon II Zwei Sega March 22 , 1996 \n", + "\n", + " Platform ( s ) MC score GR score \n", + "0 Nintendo 64 94/100 96.41% \n", + "1 PlayStation 93/100 94.75% \n", + "2 DOS 94/100 93.22% \n", + "3 Microsoft Windows 94/100 91.29% \n", + "4 PlayStation 89/100 92.50% \n", + "5 Nintendo 64 92/100 90.67% \n", + "6 Microsoft Windows nan 91.86% \n", + "7 PlayStation 91/100 90.02% \n", + "8 PlayStation 91/100 87.23% \n", + "9 DOS 90/100 90.91% \n", + "10 Sega Saturn nan 89.64% \n", + "11 Sega Saturn nan 89.20% \n", + "12 SNES nan 89.12% \n", + "13 DOS 89/100 88.50% \n", + "14 Sega Saturn nan 88.56% \n", + "15 Nintendo 64 80/100 87.52% \n", + "16 Sega Saturn nan 87.50% },\n", + " { 'answer': 'April\\xa026,\\xa02018',\n", + " 'context': No. overall No. in season Title Directed by \\\n", + "0 45 1 The Conscience Code\"\" Russell Lee Fine \n", + "1 46 2 Fear and Flesh\"\" Alexandra Kalymnios \n", + "2 47 3 Hell's Gate\"\" Constantine Makris \n", + "3 48 4 Spy Games\"\" Kevin Sullivan \n", + "4 49 5 The Blood of Romeo\"\" David McWhirter \n", + "5 50 6 The Heavens Fall\"\" Russell Lee Fine \n", + "6 51 7 Bullet Train\"[10]\" Rob Bowman \n", + "7 52 8 Deep Cover\"[10]\" Jim McKay \n", + "8 53 9 Fear Feargach\"[10]\" P. J. Pesce \n", + "9 54 10 No Place Is Home\"[10]\" Kenneth Fink \n", + "10 55 11 The Art of War\"[10]\" Jennifer Phang \n", + "11 56 12 Ghosts\"[10]\" Russell Lee Fine \n", + "12 57 13 Who Are You?\"[10]\" Russell Lee Fine \n", + "\n", + " Written by Original air date [3] \\\n", + "0 Michael Seitzman April 26, 2018 \n", + "1 Dave Kalstein May 3, 2018 \n", + "2 Tom Mularz May 10, 2018 \n", + "3 Julia Cohen May 25, 2018 \n", + "4 Adam Armus June 1, 2018 \n", + "5 Michael Brandon Guercio June 15, 2018 \n", + "6 Tom Mularz & Gideon Yago June 22, 2018 \n", + "7 Cole Maliska & Joe Webb June 29, 2018 \n", + "8 Dave Kalstein & Matthew Klam July 6, 2018 \n", + "9 Gisselle Legere & Julia Cohen July 13, 2018 \n", + "10 Adam Armus & Tom Mularz July 20, 2018 \n", + "11 Julia Cohen & Matthew Klam July 27, 2018 \n", + "12 Dave Kalstein & Michael Seitzman August 3, 2018 \n", + "\n", + " U.S. viewers (millions) \n", + "0 2.66[4] \n", + "1 2.15[5] \n", + "2 1.97[6] \n", + "3 2.62[7] \n", + "4 2.99[8] \n", + "5 2.56[9] \n", + "6 TBD \n", + "7 TBD \n", + "8 TBD \n", + "9 TBD \n", + "10 TBD \n", + "11 TBD \n", + "12 TBD },\n", + " { 'answer': \"Don't Push It\",\n", + " 'context': Position Name Rider Age Weight Starting price \\\n", + "0 1st Don't Push It Tony McCoy 10 11-05 10/1 JF \n", + "1 2nd Black Apalachi Denis O'Regan 11 11-06 14/1 \n", + "2 3rd State of Play Paul Moloney 10 10-11 16/1 \n", + "3 4th Big Fella Thanks Barry Geraghty 8 10-12 10/1 JF \n", + "4 5th Hello Bud Sam Twiston-Davies 12 10-06 20/1 \n", + "5 6th Snowy Morning David Casey 10 10-13 14/1 \n", + "6 7th Character Building Nina Carberry 10 10-11 16/1 \n", + "7 8th Cloudy Lane Jason Maguire 10 11-03 25/1 \n", + "8 9th Tricky Trickster Richard Johnson 7 11-04 16/1 \n", + "9 10th Joe Lively Joe Tizzard 11 11-06 33/1 \n", + "10 11th Cerium Davy Russell 9 10-06 50/1 \n", + "11 12th Comply or Die Timmy Murphy 11 10-05 12/1 \n", + "12 13th Piraya Johnny Farrelly 7 10-07 100/1 \n", + "\n", + " Distance Prize money \n", + "0 Winner by 5 lengths £521,052 \n", + "1 5 lengths £196,285 \n", + "2 20 lengths £98,235 \n", + "3 3 lengths £49,117 \n", + "4 7 lengths £24,605 \n", + "5 1½ lengths £12,302 \n", + "6 Neck £6,105 \n", + "7 12 lengths £3,145 \n", + "8 ¾ length Nil \n", + "9 Short head Nil \n", + "10 A distance Nil \n", + "11 8 lengths Nil \n", + "12 A distance Nil },\n", + " { 'answer': '5 June 2009',\n", + " 'context': Episode First broadcast Seans team \\\n", + "0 8x01 5 June 2009 Johnny Vegas and Alex Zane \n", + "1 8x02 12 June 2009 Jeremy Clarkson and James McQuillan \n", + "2 8x03 19 June 2009 Josie Long and Jamelia \n", + "3 8x04 26 June 2009 Tom Felton and Richard E. Grant \n", + "4 8x05 3 July 2009 Yvette Fielding and David Walliams \n", + "5 8x06 10 July 2009 Reginald D. Hunter and Kelly Osbourne \n", + "6 8x07 17 July 2009 Kevin Bridges and Patrick Kielty \n", + "\n", + " Jasons team Scores \n", + "0 Ulrika Jonsson and Jack Whitehall 5–5 \n", + "1 David Walliams and Holly Walsh 2–7 \n", + "2 Mark Watson and Claudia Winkleman 4–4 \n", + "3 Alan Cumming and Lauren Laverne 4–2 \n", + "4 Reginald D. Hunter and Phil Spencer 5–4 \n", + "5 Terry Christian and Isy Suttie 4–6 \n", + "6 Rhod Gilbert and Shappi Khorsandi 3–7 },\n", + " { 'answer': '2017',\n", + " 'context': Year Title Role \\\n", + "0 2017 Mass Effect : Andromeda Various \n", + "1 2017 Lone Echo Hera \n", + "2 2017 Madden NFL 18 : Longshot Various \n", + "3 2017 FIFA 18 Beatriz Villanova \n", + "4 2017 Puzzle Fighter Additional Voices \n", + "5 2017 Need for Speed Payback Additional Voices \n", + "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", + "7 2018 FIFA 19 Beatriz Villanova \n", + "8 2019 Crackdown 3 Additional Voices \n", + "9 2019 Anthem Princess Zhim \n", + "10 2019 FIFA 20 Beatriz Villanova \n", + "\n", + " Notes \n", + "0 Performance Capture Actor \n", + "1 Voice acting \n", + "2 Motion capture actor \n", + "3 Voice acting \n", + "4 nan \n", + "5 nan \n", + "6 Voice acting \n", + "7 Voice acting \n", + "8 nan \n", + "9 Voice acting \n", + "10 Voice acting },\n", + " { 'answer': '2017',\n", + " 'context': Year Title Role \\\n", + "0 2017 Mass Effect : Andromeda Various \n", + "1 2017 Lone Echo Hera \n", + "2 2017 Madden NFL 18 : Longshot Various \n", + "3 2017 FIFA 18 Beatriz Villanova \n", + "4 2017 Puzzle Fighter Additional Voices \n", + "5 2017 Need for Speed Payback Additional Voices \n", + "6 2018 Dragalia Lost Corsaint Phoenix / Kristy \n", + "7 2018 FIFA 19 Beatriz Villanova \n", + "8 2019 Crackdown 3 Additional Voices \n", + "9 2019 Anthem Princess Zhim \n", + "10 2019 FIFA 20 Beatriz Villanova \n", + "\n", + " Notes \n", + "0 Performance Capture Actor \n", + "1 Voice acting \n", + "2 Motion capture actor \n", + "3 Voice acting \n", + "4 nan \n", + "5 nan \n", + "6 Voice acting \n", + "7 Voice acting \n", + "8 nan \n", + "9 Voice acting \n", + "10 Voice acting },\n", + " { 'answer': '7 May 2013 (hardcover)',\n", + " 'context': # Title Publisher \\\n", + "0 1 Dead Until Dark Ace Books \n", + "1 2 Living Dead in Dallas Ace Books \n", + "2 3 Club Dead Ace Books \n", + "3 4 Dead to the World Ace Hardcover \n", + "4 5 Dead as a Doornail Ace Hardcover \n", + "5 6 Definitely Dead Ace Hardcover \n", + "6 7 All Together Dead Ace Hardcover \n", + "7 8 From Dead to Worse Ace Hardcover \n", + "8 9 Dead and Gone Ace Hardcover \n", + "9 10 Dead in the Family Ace Hardcover \n", + "10 11 Dead Reckoning Ace Hardcover \n", + "11 12 Deadlocked Ace Hardcover \n", + "12 13 Dead Ever After Ace Hardcover \n", + "\n", + " Release Length \\\n", + "0 May 2001 (paperback) January 2008 (hardcover) 291 pp \n", + "1 April 2002 (paperback) January 2009 (hardcover) 291 pp \n", + "2 May 2003 (paperback) March 2010 (hardcover) 292 pp \n", + "3 May 2004 (hardcover) May 2005 (paperback) 291 pp \n", + "4 May 2005 (hardcover) April 2006 (paperback) 295 pp \n", + "5 May 2006 (hardcover) March 2007 (paperback) 324 pp \n", + "6 May 2007 (hardcover) March 2008 (paperback) 336 pp \n", + "7 May 2008 (hardcover) March 2009 (paperback) 359 pp \n", + "8 May 2009 (hardcover) April 2010 (paperback) 312 pp \n", + "9 May 2010 (hardcover) March 2011 (paperback) 311 pp \n", + "10 May 2011 (hardcover) March 2012 (paperback) 325 pp \n", + "11 May 2012 (hardcover) March 2013 (paperback) 336 pp \n", + "12 7 May 2013 (hardcover) 352 pp \n", + "\n", + " Hardcover Paperback \n", + "0 ISBN 0-441-01597-2 ISBN 0-441-00853-4 \n", + "1 ISBN 0-441-01673-1 ISBN 0-441-00923-9 \n", + "2 ISBN 0-441-01910-2 ISBN 0-441-01051-2 \n", + "3 ISBN 0-441-01167-5 ISBN 0-441-01218-3 \n", + "4 ISBN 0-441-01279-5 ISBN 0-441-01333-3 \n", + "5 ISBN 0-441-01400-3 ISBN 0-441-01491-7 \n", + "6 ISBN 0-441-01494-1 ISBN 0-441-01581-6 \n", + "7 ISBN 0-441-01589-1 ISBN 0-441-01701-0 \n", + "8 ISBN 0-441-01715-0 ISBN 0-441-01851-3 \n", + "9 ISBN 0-441-01864-5 ISBN 0-441-02015-1 \n", + "10 ISBN 0-441-02031-3 ISBN 0-441-02060-7 \n", + "11 ISBN 1-937007-44-8 ISBN 0-425-25638-3 \n", + "12 ISBN 193700788X ISBN n/a },\n", + " { 'answer': '2',\n", + " 'context': Pos Artist \\\n", + "0 1 Daniel Lavoie , Patrick Fiori & Garou \n", + "1 2 Manau \n", + "2 3 Céline Dion \n", + "3 4 Lââm \n", + "4 5 Nomads \n", + "5 6 Hermes House Band \n", + "6 7 Brandy & Monica \n", + "7 8 Ménélik & Imane D \n", + "8 9 Ricky Martin \n", + "9 10 Des'ree \n", + "\n", + " Title Sales* \n", + "0 Belle 2,221,000 \n", + "1 La Tribu de Dana 1,415,000 \n", + "2 My Heart Will Go On 1,197,000 \n", + "3 Chanter pour ceux qui sont loin de chez eux 963,000 \n", + "4 Yakalelo 846,000 \n", + "5 I Will Survive 812,000 \n", + "6 The Boy Is Mine 662,000 \n", + "7 Bye bye 613,000 \n", + "8 La Copa De La Vida 563,000 \n", + "9 Life 555,000 },\n", + " { 'answer': '2005',\n", + " 'context': Year Title \\\n", + "0 2005 Kiss Kiss Bang Bang \n", + "1 2006 Bambi II \n", + "2 2006 Curious George \n", + "3 2006 Ice Age: The Meltdown \n", + "4 2006 Over the Hedge \n", + "5 2006 Grilled \n", + "6 2008 One Missed Call \n", + "7 2008 Horton Hears a Who! \n", + "8 2008 Speed Racer \n", + "9 2009 Tales from the Catholic Church of Elvis! \n", + "10 2009 Final Fantasy VII: Advent Children Complete \n", + "11 2009 Life Is Hot in Cracktown \n", + "12 2009 Duress \n", + "13 2009 Opposite Day \n", + "14 2009 Cloudy with a Chance of Meatballs \n", + "15 2009 Afro Samurai: Resurrection \n", + "16 2010 Killers \n", + "17 2010 Nic & Tristan Go Mega Dega \n", + "18 2010 DC Showcase: Green Arrow \n", + "19 2011 Chaperone, TheThe Chaperone \n", + "20 2011 Phineas and Ferb: Across the 2nd Dimension \n", + "21 2011 Fred 2: Night of the Living Fred \n", + "22 2012 Excision \n", + "23 2012 ParaNorman \n", + "24 2012/13 Batman: The Dark Knight Returns – Parts 1 & 2 \n", + "25 2012 Sofia the First: Once Upon a Princess \n", + "26 2013 Dora the Explorer and the Destiny Medallion \n", + "27 2013 Scooby-Doo! Stage Fright \n", + "28 2013 Sofia the First: The Floating Palace \n", + "29 2013 Tad, The Lost Explorer \n", + "30 2014 Mr. Peabody & Sherman \n", + "31 2015 Safelight \n", + "32 2016 Elena and the Secret of Avalor \n", + "33 2017 Smurfs: The Lost Village \n", + "34 2017 The Last Movie Star \n", + "\n", + " Role \\\n", + "0 Young Harmony Faith Lane \n", + "1 Thumper's sister \n", + "2 Kid \n", + "3 Various characters \n", + "4 Additional voices \n", + "5 Dolly \n", + "6 Ellie Layton \n", + "7 Various characters \n", + "8 Young Trixie Shimura \n", + "9 Little girl \n", + "10 Marlene Wallace \n", + "11 Suzie \n", + "12 Sarah Barnett \n", + "13 Carla Benson \n", + "14 Various characters \n", + "15 Young Sio \n", + "16 Sadie \n", + "17 Lisa \n", + "18 Princess Perdita \n", + "19 Sally \n", + "20 Gretchen / Various characters \n", + "21 Talia \n", + "22 Grace \n", + "23 Blithe Hollow – kid \n", + "24 Carrie Kelley/Robin (voice) \n", + "25 Sofia \n", + "26 Dora \n", + "27 Chrissy Damon \n", + "28 Sofia \n", + "29 Sara Lavrof \n", + "30 Penny Peterson \n", + "31 Kate \n", + "32 Sofia \n", + "33 Smurf Lily \n", + "34 Lil \n", + "\n", + " Notes \n", + "0 nan \n", + "1 Voice role \n", + "2 Voice role \n", + "3 Voice role \n", + "4 Voice role \n", + "5 nan \n", + "6 nan \n", + "7 Voice role \n", + "8 nan \n", + "9 nan \n", + "10 Voice role \n", + "11 nan \n", + "12 nan \n", + "13 nan \n", + "14 Voice role \n", + "15 Voice role \n", + "16 nan \n", + "17 nan \n", + "18 Voice role \n", + "19 nan \n", + "20 Voice role \n", + "21 nan \n", + "22 nan \n", + "23 Voice role \n", + "24 Direct-to-video; originally released separately \n", + "25 Voice role \n", + "26 YouTube short film series by CollegeHumor \n", + "27 Voice role \n", + "28 Voice role \n", + "29 Voice role \n", + "30 Voice role \n", + "31 nan \n", + "32 Voice role \n", + "33 Voice role \n", + "34 nan },\n", + " { 'answer': '2',\n", + " 'context': Number Album Artist \\\n", + "0 1 Tha Carter IV Lil Wayne \n", + "1 2 Take Care Drake \n", + "2 3 Watch the Throne Jay-Z & Kanye West \n", + "3 4 Thug Motivation 103 : Hustlerz Ambition Young Jeezy \n", + "4 5 Cole World : The Sideline Story J. Cole \n", + "5 6 Lasers Lupe Fiasco \n", + "6 7 Rolling Papers Wiz Khalifa \n", + "7 8 Hell : The Sequel Bad Meets Evil \n", + "8 9 Ambition Wale \n", + "9 10 Blue Slide Park Mac Miller \n", + "\n", + " 1st-week sales 1st-week position \n", + "0 964,000 1 \n", + "1 631,000 1 \n", + "2 436,000 1 \n", + "3 233,000 3 \n", + "4 217,000 1 \n", + "5 204,000 1 \n", + "6 197,000 2 \n", + "7 171,000 1 \n", + "8 164,000 2 \n", + "9 144,000 1 },\n", + " { 'answer': '15 April 2005',\n", + " 'context': Release date Release title Country Publisher \\\n", + "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", + "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", + "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", + "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", + "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", + "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", + "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", + "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", + "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", + "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", + "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", + "\n", + " Format Language Subtitles Notes \n", + "0 NTSC English Traditional Chinese 1 VCD \n", + "1 NTSC English Traditional Chinese 1 VCD \n", + "2 NTSC English Traditional Chinese 1 VCD \n", + "3 NTSC English Traditional Chinese 1 VCD \n", + "4 NTSC English Traditional Chinese 1 VCD \n", + "5 NTSC English Traditional Chinese 1 VCD \n", + "6 NTSC English Traditional Chinese 1 VCD \n", + "7 NTSC English Traditional Chinese 1 VCD \n", + "8 NTSC English Traditional Chinese 1 VCD \n", + "9 NTSC English Traditional Chinese 1 VCD \n", + "10 NTSC English Traditional Chinese 10 VCD's },\n", + " { 'answer': '15 April 2005',\n", + " 'context': Release date Release title Country Publisher \\\n", + "0 1 January 2000 Martial Law: Shanghai Express Hong Kong Deltamac (HK) \n", + "1 15 April 2005 Martial Law: Diamond Fever Hong Kong Deltamac (HK) \n", + "2 15 April 2005 Martial Law: Dead Ringers Hong Kong Deltamac (HK) \n", + "3 15 April 2005 Martial Law: Funny Money Hong Kong Deltamac (HK) \n", + "4 15 April 2005 Martial Law: Extreme Mesures Hong Kong Deltamac (HK) \n", + "5 15 April 2005 Martial Law: Trackdown Hong Kong Deltamac (HK) \n", + "6 15 April 2005 Martial Law: Take Out Hong Kong Deltamac (HK) \n", + "7 15 April 2005 Martial Law: Lock-Up Hong Kong Deltamac (HK) \n", + "8 15 April 2005 Martial Law: Substitutes Hong Kong Deltamac (HK) \n", + "9 15 April 2005 Martial Law: Trifecta Hong Kong Deltamac (HK) \n", + "10 15 April 2005 Martial Law Collection Hong Kong Deltamac (HK) \n", + "\n", + " Format Language Subtitles Notes \n", + "0 NTSC English Traditional Chinese 1 VCD \n", + "1 NTSC English Traditional Chinese 1 VCD \n", + "2 NTSC English Traditional Chinese 1 VCD \n", + "3 NTSC English Traditional Chinese 1 VCD \n", + "4 NTSC English Traditional Chinese 1 VCD \n", + "5 NTSC English Traditional Chinese 1 VCD \n", + "6 NTSC English Traditional Chinese 1 VCD \n", + "7 NTSC English Traditional Chinese 1 VCD \n", + "8 NTSC English Traditional Chinese 1 VCD \n", + "9 NTSC English Traditional Chinese 1 VCD \n", + "10 NTSC English Traditional Chinese 10 VCD's },\n", + " { 'answer': '1991',\n", + " 'context': Year Film Song \\\n", + "0 1991 House Party 2 Ai n't Gon na Hurt Nobody \n", + "1 1991 Nothing But Trouble Same Song \n", + "2 1994 Above the Rim Regulate \n", + "3 1994 Street Fighter Something Kinda Funky \n", + "4 1995 Friday Keep Their Heads Ringin \n", + "5 1999 Office Space Shove This Jay-Oh-Bee \n", + "6 2001 The Wash Bad Intentions \n", + "7 2002 8 Mile Lose Yourself \n", + "8 2002 Like Mike Basketball \n", + "9 2002 Like Mike Take Ya Home \n", + "10 2003 2 Fast 2 Furious Act a Fool \n", + "\n", + " Artist \n", + "0 Kid ' n Play \n", + "1 Digital Underground ft. 2Pac \n", + "2 Warren G ft. Nate Dogg \n", + "3 Rally Ral \n", + "4 Dr. Dre \n", + "5 Canibus and Biz Markie \n", + "6 Dr. Dre ft. Knoc-turn'al \n", + "7 Eminem \n", + "8 Lil ' Bow Wow ft. Fundisha , Jermaine Dupri , and Fabolous \n", + "9 Lil ' Bow Wow \n", + "10 Ludacris },\n", + " { 'answer': '1987 1988 1989',\n", + " 'context': Title Year \\\n", + "0 Bomber King / RoboWarrior 1987 1988 1989 \n", + "1 Bomber King : Scenario 2 / Blaster Master Boy/Jr 1991 1992 \n", + "2 Bomberman : Panic Bomber 1994 1995 \n", + "3 Bomberman B-Daman 1996 \n", + "4 Atomic Bomberman 1997 \n", + "5 Bomberman Wars 1998 \n", + "6 Bomberman Fantasy Race 1998 1999 2000 \n", + "7 Bomberman B-Daman Bakugaiden : The Road to Victory 1999 \n", + "8 Bomberman B-Daman Bakugaiden V : Final Mega Tune 2000 \n", + "9 Bomberman Kart 2001 2003 \n", + "10 Bomberman Jetters : The Legendary Bomberman 2002 \n", + "11 Bomberman Jetters 2002 2004 \n", + "12 Bomberman Jetters Game Collection 2003 \n", + "13 DreamMix TV World Fighters 2003 \n", + "14 BoBomberman 2004 \n", + "15 Bomberman Battles / Bomberman Hardball 2004 2005 \n", + "16 Bomberman : Bakufuu Sentai Bombermen 2006 \n", + "17 Bomberman : Act Zero 2006 \n", + "18 Bomberman : Disney Stitch Edition 2010 \n", + "19 Bomberman : Chains 2011 \n", + "\n", + " Platforms \\\n", + "0 Famicom / NES , MSX \n", + "1 Game Boy \n", + "2 PC Engine CD , Neo Geo , Super Famicom , NEC PC-9821 , FM Towns , Sharp X680... \n", + "3 Super Famicom \n", + "4 PC ( Windows ) \n", + "5 PlayStation , Sega Saturn \n", + "6 PlayStation \n", + "7 Game Boy Color \n", + "8 Game Boy Color \n", + "9 PlayStation 2 \n", + "10 Game Boy Advance \n", + "11 GameCube , PlayStation 2 \n", + "12 Game Boy Advance \n", + "13 GameCube , PlayStation 2 \n", + "14 Game Boy Advance \n", + "15 PlayStation 2 \n", + "16 PlayStation Portable \n", + "17 Xbox 360 \n", + "18 Mobile Phone \n", + "19 iOS \n", + "\n", + " Notes \n", + "0 Released outside Japan under the name RoboWarrior ; Bomberman-like progressi... \n", + "1 Sequel to Bomber King ; slightly altered and released by Sunsoft in America ... \n", + "2 Puzzle game , similar to Puyo Puyo and Tetris ; all versions except for Neo ... \n", + "3 Japan-only , part of the B-Daman series \n", + "4 10-player support through IPX networking ; first Bomberman title for Windows... \n", + "5 Japan-only release ; tactical role-playing game ( TRPG ) \n", + "6 Racing game \n", + "7 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", + "8 Japan-only release ; based on the anime series , Bomberman B-Daman Bakugaide... \n", + "9 Released in Japan and PAL regions only ; kart racing game \n", + "10 Japan-only release ; based on the anime series , Bomberman Jetters \n", + "11 PS2 release was Japan-only ; based on the Bomberman Jetters anime series \n", + "12 Japan-only release ; based on the anime series , Bomberman Jetters \n", + "13 Released in Japan only ; crossover fighting game featuring Bomberman as a pl... \n", + "14 Minigame based on the NES version of Bomberman , but using characters from t... \n", + "15 Released in Japan and PAL regions only ; sports and party game \n", + "16 Japan-only release \n", + "17 Realistic re-envisioning of the character \n", + "18 A Bomberman Game based on the anime Stitch ! \n", + "19 Puzzle game , similar to Bejeweled },\n", + " { 'answer': '2010',\n", + " 'context': Year Journalists \\\n", + "0 2010 Dwayne Grant ( Gold Coast Publications ) \n", + "1 2011 Leanne West ( Network Ten ) \n", + "2 2012 Stathi Paxinos ( Fairfax Media ) \n", + "3 2013 Mike Dalton ( Nine Network ) \n", + "4 2014 Emma Greenwood ( Gold Coast Bulletin ) \n", + "5 2015 Amanda Shalala ( ABC Radio Grandstand ) \n", + "6 2016 Seven Network \n", + "7 2017 Jim Callinan ( Sky News Australia ) \n", + "8 2018 Matt Carmichael ( Seven Network ) \n", + "9 2019 Australian Broadcasting Corporation \n", + "\n", + " Story Title \n", + "0 Never Say Never \n", + "1 David and Michelle \n", + "2 London Paralympic Games \n", + "3 Special Olympics Junior Games \n", + "4 He who dares lives \n", + "5 Grandstand para-sport profiles \n", + "6 ' Rio 2016 Paralympic Games ' \n", + "7 Oz Day 10K Wheelchair Road Race ' \n", + "8 2018 Winter Paralympics and 2018 Commonwealth Games \n", + "9 2018 Invictus Games },\n", + " { 'answer': 'January 31',\n", + " 'context': Release Title System \\\n", + "0 January 25 Guardian Heroes Sat \n", + "1 January 26 Mystaria : The Realms of Lore Sat \n", + "2 January 29 Duke Nukem 3D DOS \n", + "3 January 31 Mega Man X3 SNES \n", + "4 February 9 Bahamut Lagoon SNES \n", + "5 February 23 Front Mission : Gun Hazard SNES \n", + "6 February 27 Pokémon Red and Green GB \n", + "7 February 29 Civilization II Win \n", + "8 February 29 Ripper ( video game ) DOS \n", + "9 February 29 Rise 2 : Resurrection Win , Sat , PS1 \n", + "10 February 29 Terra Nova : Strike Force Centauri DOS \n", + "11 February 29 Zork : Nemesis Win \n", + "12 March 9 Super Mario RPG SNES \n", + "13 March 21 Kirby Super Star SNES \n", + "14 March 22 Resident Evil PS1 \n", + "15 March 22 Panzer Dragoon II Zwei Sat \n", + "16 March 29 Dragon Ball Z : Hyper Dimension SNES \n", + "17 April 20 Barbie Fashion Designer Win \n", + "18 April 26 Jumping Flash ! 2 PS1 \n", + "19 April 26 The Legend of Oasis Sat \n", + "\n", + " Developer / Publisher \\\n", + "0 Treasure / Sega \n", + "1 Micro Cabin / Sega \n", + "2 3D Realms / GT Interactive \n", + "3 Capcom \n", + "4 SquareSoft \n", + "5 SquareSoft \n", + "6 Nintendo \n", + "7 MicroProse \n", + "8 Take Two Interactive \n", + "9 Mirage / Acclaim \n", + "10 Looking Glass Studios \n", + "11 Activision \n", + "12 SquareSoft/Nintendo \n", + "13 HAL Labs / Nintendo \n", + "14 Capcom \n", + "15 Team Andromeda / Sega \n", + "16 TOSE / Bandai \n", + "17 Digital Domain / Mattel Media \n", + "18 Exact / SCEA \n", + "19 Sega / Ancient \n", + "\n", + " Notes \n", + "0 a beat-em-up game developed by Treasure \n", + "1 a tactical RPG \n", + "2 a popular first person shooter \n", + "3 third X installment in popular Mega Man franchise \n", + "4 Tactical RPG spin-off in the Final Fantasy series , before Final Fantasy Tac... \n", + "5 Sequel to strategy Super Famicom RPG Front Mission \n", + "6 launched a wildly popular game series \n", + "7 acclaimed sequel to the highly influential 1991 4X game \n", + "8 Interactive movie , Point-and-click adventure Single Player game \n", + "9 the sequel to the fighting game , Rise of the Robots \n", + "10 critically acclaimed FPS \n", + "11 11th game in the Zork series , employing 360-degree views of environment \n", + "12 beginning of the long-running series of Mario RPGs \n", + "13 considered to be one of the best games in the Kirby franchise \n", + "14 one of the foundational games in the survival horror genre , for a time it h... \n", + "15 an acclaimed rail shooter \n", + "16 the last Super Famicom game in the Dragon Ball Z franchise \n", + "17 The game 's strong sales sparked a renewed interest in developing games targ... \n", + "18 Sequel to the first true 3D platformer \n", + "19 Prequel to the Genesis Zelda-style action game Beyond Oasis },\n", + " { 'answer': '2009',\n", + " 'context': Song Title Album ( s ) / Single ( s ) \\\n", + "0 A Feast For Me Pipes & Flowers \n", + "1 A Little Over Zero Asile 's World / Dancing \n", + "2 A Prayer Lotus \n", + "3 Anche Se Non Trovi Le Parole Heart \n", + "4 And All I Need Heart \n", + "5 Asile 's World Asile 's World \n", + "6 Beautiful Night Lotus \n", + "7 Bitter Words Pearl Days \n", + "8 Broken Lotus / Dancing \n", + "9 Chameleon Asile 's World \n", + "10 City Lights Pearl Days / Dancing \n", + "11 Coincidences Heart \n", + "12 Come & Sit Asile 's World \n", + "13 Come Speak To Me Asile 's World \n", + "14 Creature Asile 's World \n", + "15 Cure Me Pipes & Flowers \n", + "16 Dancing Then Comes the Sun / Dancing \n", + "17 Dot in the Universe Heart \n", + "18 Eppure sentire ( Un senso di te ) Soundtrack '96-'06 \n", + "19 Electricity Lotus \n", + "\n", + " First Released \n", + "0 2002 \n", + "1 2000 \n", + "2 2003 \n", + "3 2009 \n", + "4 2009 \n", + "5 2000 \n", + "6 2003 \n", + "7 2004 \n", + "8 2003 \n", + "9 2000 \n", + "10 2004 \n", + "11 2009 \n", + "12 2000 \n", + "13 2001 \n", + "14 2000 \n", + "15 1997 \n", + "16 2002 \n", + "17 2009 \n", + "18 2006 \n", + "19 2003 },\n", + " { 'answer': 'Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS '\n", + " 'X:November 6, 2006',\n", + " 'context': Name \\\n", + "0 University \n", + "1 Nightlife \n", + "2 Open for Business \n", + "3 Pets \n", + "4 Seasons \n", + "5 Bon Voyage \n", + "6 FreeTime \n", + "7 Apartment Life \n", + "\n", + " Release date \\\n", + "0 Windows:NA: March 1, 2005 EU: March 2, 2005 Mac OS X:December 12, 2005 \n", + "1 Windows:NA: September 13, 2005 EU: September 13, 2005 Mac OS X:March 27, 2006 \n", + "2 Windows:NA: March 2, 2006 EU: March 2, 2006 Mac OS X:September 4, 2006 \n", + "3 Windows:NA: October 17, 2006 EU: October 20, 2006 Mac OS X:November 6, 2006 \n", + "4 Windows:NA: March 1, 2007 EU: March 2, 2007 Mac OS X:June 11, 2007 \n", + "5 Windows:NA: September 4, 2007 EU: September 7, 2007 Mac OS X:December 17, 2007 \n", + "6 Windows:NA: February 26, 2008 EU: February 22, 2008 \n", + "7 Windows:NA: August 27, 2008EU: August 29, 2008 \n", + "\n", + " Major Additions \\\n", + "0 Universities, Young Adult age group, Influence system \n", + "1 Dates, Groups system, Outings, Pleasure and Grilled Cheese aspiration, New r... \n", + "2 Businesses, talent badges \n", + "3 Ownable Pets \n", + "4 Weather system, Seasons, fishing, new talent badges,gardening \n", + "5 Vacations in different cultural areas \n", + "6 Hobby system, lifetime aspiration system, new talent badges. \n", + "7 Rentable apartments, reputation system, witchcraft system \n", + "\n", + " Neighborhoods \\\n", + "0 Campus:La Fiesta Tech,Sim State University,Académie Le Tour \n", + "1 Downtown:Downtown \n", + "2 Shopping District:Bluewater Village \n", + "3 None \n", + "4 Main:Riverblossom Hills \n", + "5 Vacation:Twikkii Island,Three Lakes,Takemizu Village \n", + "6 Main: Desiderata Valley Secret:Hobby \n", + "7 Main:Belladonna Cove[53]Secret:The Magical World \n", + "\n", + " New NPCs \\\n", + "0 Barista, Bartender,Cafeteria Worker,Cheerleader,Coach, Evil Mascot, Mascot,P... \n", + "1 Gypsy Matchmaker,Waiter, Chef,Bartender, DJ,Mrs. Crumplebottom,Vampires (Cou... \n", + "2 Reporters,Barbers \n", + "3 Animal Control Officers,Obedience Trainer,Wolves, Skunks \n", + "4 Garden Club Members,Penguins \n", + "5 Fire Dancers,Hotel Maids,Bellboys, Masseurs,Wise Old Man,Pirate, Tour Guides... \n", + "6 Hobby Members,Rod Humble,Hobby Leaders,Food Judge,Genie \n", + "7 Butler, Landlord,Roomies,Breakdancers,Street Performers,Social Group Sims,Hi... \n", + "\n", + " New Lifestate/Creature \\\n", + "0 Zombies (Also in FreeTime and Apartment Life) \n", + "1 Vampires \n", + "2 Servos (Robots) \n", + "3 Werewolves \n", + "4 PlantSims \n", + "5 Bigfoot \n", + "6 Genie (Only NPC) \n", + "7 Witches, Warlocks \n", + "\n", + " New Careers \n", + "0 Natural Scientist, Paranormal,Show Business, Artist \n", + "1 None \n", + "2 Shop Employees \n", + "3 Pet careers:Security,Showbiz,Service \n", + "4 Adventurer,Education,Gamer,Journalism,Law, Music \n", + "5 None \n", + "6 Oceanography,Intelligence,Entertainment,Dance,Architecture \n", + "7 None },\n", + " { 'answer': '2 December 1978',\n", + " 'context': Album \\\n", + "0 Please Please Me \n", + "1 With the Beatles \n", + "2 A Hard Day 's Night \n", + "3 Beatles for Sale \n", + "4 Help ! \n", + "5 Rubber Soul \n", + "6 Revolver \n", + "7 Sgt . Pepper 's Lonely Hearts Club Band \n", + "8 The Beatles ( White Album ) \n", + "9 Yellow Submarine \n", + "10 Abbey Road \n", + "11 Let It Be \n", + "12 Rarities \n", + "\n", + " Label \\\n", + "0 Parlophone Records PCS 3042 \n", + "1 Parlophone Records PCS 3045 \n", + "2 Parlophone Records PCS 3058 \n", + "3 Parlophone Records PCS 3062 \n", + "4 Parlophone Records PCS 3071 \n", + "5 Parlophone Records PCS 3075 \n", + "6 Parlophone Records PCS 7009 \n", + "7 Parlophone Records PCS 7027 \n", + "8 Apple Records PCS 7067/8 \n", + "9 Apple Records PCS 7070 \n", + "10 Apple Records PCS 7088 \n", + "11 Apple Records PCS 7096 \n", + "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", + "\n", + " Release date \n", + "0 22 March 1963 \n", + "1 22 November 1963 \n", + "2 10 July 1964 \n", + "3 4 December 1964 \n", + "4 6 August 1965 \n", + "5 3 December 1965 \n", + "6 5 August 1966 \n", + "7 1 June 1967 \n", + "8 22 November 1968 \n", + "9 17 January 1969 \n", + "10 26 September 1969 \n", + "11 8 May 1970 \n", + "12 2 December 1978 },\n", + " { 'answer': '2 December 1978',\n", + " 'context': Album \\\n", + "0 Please Please Me \n", + "1 With the Beatles \n", + "2 A Hard Day 's Night \n", + "3 Beatles for Sale \n", + "4 Help ! \n", + "5 Rubber Soul \n", + "6 Revolver \n", + "7 Sgt . Pepper 's Lonely Hearts Club Band \n", + "8 The Beatles ( White Album ) \n", + "9 Yellow Submarine \n", + "10 Abbey Road \n", + "11 Let It Be \n", + "12 Rarities \n", + "\n", + " Label \\\n", + "0 Parlophone Records PCS 3042 \n", + "1 Parlophone Records PCS 3045 \n", + "2 Parlophone Records PCS 3058 \n", + "3 Parlophone Records PCS 3062 \n", + "4 Parlophone Records PCS 3071 \n", + "5 Parlophone Records PCS 3075 \n", + "6 Parlophone Records PCS 7009 \n", + "7 Parlophone Records PCS 7027 \n", + "8 Apple Records PCS 7067/8 \n", + "9 Apple Records PCS 7070 \n", + "10 Apple Records PCS 7088 \n", + "11 Apple Records PCS 7096 \n", + "12 Parlophone Records PSLP 261 ( British editions ) Capitol SPRO-8969 ( US edit... \n", + "\n", + " Release date \n", + "0 22 March 1963 \n", + "1 22 November 1963 \n", + "2 10 July 1964 \n", + "3 4 December 1964 \n", + "4 6 August 1965 \n", + "5 3 December 1965 \n", + "6 5 August 1966 \n", + "7 1 June 1967 \n", + "8 22 November 1968 \n", + "9 17 January 1969 \n", + "10 26 September 1969 \n", + "11 8 May 1970 \n", + "12 2 December 1978 },\n", + " { 'answer': 'October22,2004',\n", + " 'context': Series # Season # Title Directed by \\\n", + "0 44 1 Psychic Eye for the Sloppy Guy Rich Correll \n", + "1 45 2 Stark Raven Mad Marc Warren \n", + "2 46 3 Opportunity Shocks Rich Correll \n", + "3 47 4 Taken to the Cleaners Rich Correll \n", + "4 48 5 Five Finger Discount Rich Correll \n", + "5 49 6 Sweeps Sean McNamara \n", + "6 50 7 Double Vision T'Keyah Crystal Keymáh \n", + "7 51 8 Bend It Like Baxter Rich Correll \n", + "8 52 9 The Big Buzz Eric Dean Seaton \n", + "9 53 10 True Colors Christopher B. Pearman \n", + "10 54 11 Dog Day Aftergroom KC Lynn De Stefano \n", + "11 55 12 Royal Treatment Christopher B. Pearman \n", + "12 56 13 Art Breaker Gregory Hobson \n", + "13 57 14 Boyz 'N Commotion Debbie Allen \n", + "14 58 15 Gettin' Outta Dodge Rich Correll \n", + "15 59 16 On Top of Old Oakey John Tracy \n", + "16 60 17 They Work Hard for His Honey Eric Dean Seaton \n", + "17 61 18 Mind Your Own Business Eric Dean Seaton \n", + "18 62 19 Hizzouse Party Rich Correll \n", + "19 63 20 Mismatch Maker Fred Savage \n", + "20 65 22 When in Dome Marc Warren \n", + "21 66 23 Too Much Pressure Rich Correll \n", + "22 67 24 Extreme Cory Rich Correll \n", + "23 68 25 The Grill Next Door Sean McNamara \n", + "24 69 26 Point of No Return Sean McNamara \n", + "25 72 29 Food for Thought Rich Correll \n", + "26 73 30 Mr. Perfect Rich Correll \n", + "27 74 31 Goin' Hollywood Rich Correll \n", + "28 75 32 Save the Last Dance Sean McNamara \n", + "29 76 33 Cake Fear Rondell Sheridan \n", + "30 77 34 Vision Impossible Marc Warren \n", + "\n", + " Written by Original air date Prod. code \\\n", + "0 Marc Warren October1,2004 301 \n", + "1 Sarah Jane Cunningham & Suzie V. Freeman October22,2004 304 \n", + "2 Dava Savel November5,2004 309 \n", + "3 Michael Feldman November19,2004 313 \n", + "4 Dennis Rinsler December3,2004 302 \n", + "5 Dennis Rinsler December11,2004 311 \n", + "6 Sarah Jane Cunningham & Suzie V. Freeman December17,2004 318 \n", + "7 Dava Savel January7,2005 315 \n", + "8 Marc Warren January28,2005 322 \n", + "9 Michael Carrington February4,2005 303 \n", + "10 Theresa Akana & Stacee Comage February11,2005 317 \n", + "11 Sarah Jane Cunningham & Suzie V. Freeman February18,2005 310 \n", + "12 Josh Lynn & Danny Warren February25,2005 308 \n", + "13 Theresa Akana & Stacee Comage March11,2005 306 \n", + "14 Edward C. Evans April8,2005 319 \n", + "15 Michael Feldman April22,2005 305 \n", + "16 Edward C. Evans April29,2005 307 \n", + "17 Dennis Rinsler May13,2005 327 \n", + "18 Michael Carrington June13,2005 312 \n", + "19 Edward C. Evans June14,2005 325 \n", + "20 Sarah Jane Cunningham & Suzie V. Freeman June16,2005 328 \n", + "21 Dava Savel June17,2005 323 \n", + "22 Theresa Akana & Stacee Comage July8,2005 326 \n", + "23 Michael Feldman July8,2005 324 \n", + "24 Edward C. Evans July23,2005 330 \n", + "25 Marc Warren September18,2005 316 \n", + "26 Michael Carrington October7,2005 329 \n", + "27 Dennis Rinsler & Marc Warren November4,2005 333 \n", + "28 Marc Warren November25,2005 334 \n", + "29 Theresa Akana & Stacee Comage December16,2005 332 \n", + "30 David Brookwell & Sean McNamara January6,2006 335 \n", + "\n", + " U.S. viewers (millions) \n", + "0 4.8 \n", + "1 4.5 \n", + "2 4.5 \n", + "3 3.7 \n", + "4 3.1 \n", + "5 2.6 \n", + "6 5.5 \n", + "7 4.0 \n", + "8 2.17 \n", + "9 3.3 \n", + "10 2.4 \n", + "11 2.7 \n", + "12 3.5 \n", + "13 4.8 \n", + "14 2.1 \n", + "15 2.3 \n", + "16 4.2 \n", + "17 4.4 \n", + "18 5.1 \n", + "19 4.3 \n", + "20 4.7 \n", + "21 4.4 \n", + "22 3.8 \n", + "23 4.23 \n", + "24 6.0 \n", + "25 3.4 \n", + "26 3.0 \n", + "27 3.7 \n", + "28 3.3 \n", + "29 3.6 \n", + "30 4.7 },\n", + " { 'answer': '1990',\n", + " 'context': Year Title \\\n", + "0 1990 Psycho IV : The Beginning \n", + "1 1992 A Taste for Killing \n", + "2 1995 Indictment : The McMartin Trial \n", + "3 1996 Riders of the Purple Sage \n", + "4 1998 Moby Dick \n", + "5 1999 Happy Face Murders \n", + "6 2005 Masters of Horror \n", + "7 2006 Stephen King 's Desperation \n", + "8 2006 Nightmares & Dreamscapes : From the Stories of Stephen King \n", + "9 2007-08 Without a Trace \n", + "10 2009 CSI : Crime Scene Investigation \n", + "11 2011 The Mentalist \n", + "12 2013-14 Betrayal \n", + "13 2015 Sons of Liberty \n", + "14 2016 Law & Order : Special Victims Unit \n", + "15 2017 Better Things \n", + "16 2018-present The Haunting of Hill House \n", + "17 2018 Girl in the Bunker \n", + "18 2020 FBI : Most Wanted \n", + "19 2020 Stargirl \n", + "\n", + " Role \\\n", + "0 Young Norman Bates \n", + "1 Cary Sloan \n", + "2 Ray Buckey \n", + "3 Bern Venters \n", + "4 Ishmael \n", + "5 Dylan McCarthy \n", + "6 Jamie \n", + "7 Peter Jackson \n", + "8 Robert Fornoy \n", + "9 Franklin Romar \n", + "10 Jeremy Kent \n", + "11 Thomas Lisbon \n", + "12 T.J. Karsten \n", + "13 John Adams \n", + "14 Sean Roberts \n", + "15 Robin \n", + "16 Young Hugh Crain ( season 1 ) TBA ( season 2 ) \n", + "17 Vinson Filyaw \n", + "18 Dr. Justin Brock \n", + "19 Charles McNider / Doctor Mid-Nite \n", + "\n", + " Notes \n", + "0 Television film \n", + "1 Television film \n", + "2 Television film \n", + "3 Television film \n", + "4 Miniseries \n", + "5 Television film \n", + "6 Episode : Chocolate \n", + "7 Television film \n", + "8 Episode : The End of the Whole Mess \n", + "9 2 episodes \n", + "10 Episode : If I Had a Hammer \n", + "11 Episode : Where in the World is Carmine O'Brien ? \n", + "12 13 episodes \n", + "13 Miniseries \n", + "14 Episode : Making a Rapist \n", + "15 4 episodes \n", + "16 Series regular , first and second season \n", + "17 Television film \n", + "18 Episode : Dopesick \n", + "19 Recurring role }]\n" + ] + } + ], "source": [ "prediction = table_qa_pipeline.run(\"When was Guilty Gear Xrd : Sign released?\", params={\"top_k\": 30})\n", "print_answers(prediction, details=\"minimum\")" @@ -413,7 +1931,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "id": "4CBcIjIq_uFx" }, @@ -439,11 +1957,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "id": "j1TaNF7SiKgH" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.document_stores.elasticsearch - Updating embeddings for 563 docs without embeddings ...\n", + "Updating embeddings: 10000 Docs [00:29, 343.20 Docs/s] \n" + ] + } + ], "source": [ "document_store.update_embeddings(retriever=retriever, update_existing_embeddings=False)" ] @@ -464,11 +1991,88 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "id": "Ej_j8Q3wlxXE" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n", + "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", + "INFO - haystack.modeling.model.language_model - =============\n", + "INFO - haystack.modeling.model.language_model - Could not find deepset/roberta-base-squad2 locally.\n", + "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", + "INFO - haystack.modeling.model.language_model - Loaded deepset/roberta-base-squad2\n", + "INFO - haystack.modeling.logger - ML Logging is turned off. No parameters, metrics or artifacts will be logged to MLFlow.\n", + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.infer - Got ya 7 parallel workers to do inference ...\n", + "INFO - haystack.modeling.infer - 0 0 0 0 0 0 0 \n", + "INFO - haystack.modeling.infer - /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ \n", + "INFO - haystack.modeling.infer - /'\\ / \\ /'\\ /'\\ / \\ / \\ /'\\ \n", + "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n", + "INFO - haystack.modeling.utils - Using devices: CPU\n", + "INFO - haystack.modeling.utils - Number of GPUs: 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n" + ] + } + ], "source": [ "from haystack.nodes import FARMReader, RouteDocuments, JoinAnswers\n", "\n", @@ -483,7 +2087,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "id": "Zdq6JnF5m3aP" }, @@ -499,7 +2103,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -508,7 +2112,19 @@ "id": "K4vH1ZEnniut", "outputId": "85aa17a8-227d-40e4-c8c0-5d0532faa47a" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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hre3N4KDgxEfH4/Fixc3+srp4+ODvXv3YvPmzfD29m60etLS0rB9+3Zs27YN7du3b7R6nlffdfFV3zGPx1P1cnTmzBmEhYXB2dkZH330kdo8tXndulUbtq7WxOPxsHXrVnTp0gXbt2+vvZ21tv1Ca2tr+uabbxpv3/QVajvsqJaUlETvvfcenT17lmJjY6l79+7UqVMnKigooPz8fJo5cyYBoKlTpxIRUUZGBunr69PJkydJqVTSlStXaMqUKQSATp48SWfPnlWV3bp1a7XDCoVCQRMmTCAAdPTo0TrHQUS0YMECGjhwIOXl5VFISAjxeDxau3at6v2FhYU0fPhw8vb2pqdPn9KePXtIR0dH7bDiVXXs2bOHWrduTQBo9+7d5OzsTADo2rVrDfMlvMayZctee3j3try9valNmzacXnL1qnXxdd/x9OnTydbWlr799lvq16+fqpeT6nWT6NmtpHjhEPh16xYRW1fra968eeTo6FjbSzUvg3n48GGTB/i8V610I0aMUPuCg4ODCQB99913RPTs2rUBAwaQRCKh9PR0+vLLL+nIkSNqZfj4+BCAGleNt27dmtq1a0e7d++m1atXk6OjI/Xt25cOHjxY7ziMjY1pzZo1qtcdHR2pX79+queff/45jR8/Xq3McePGqa1Ur6tj5cqVqpWKiOjevXtN1sXVlStXCECjdlXk4eFBc+bMabTy6+JV6+LrvuPp06eTRCKhiIgIInp2Y7+npycBoJCQECKqPQG+7nsnYutqfZ07d44A1NYVX1CNQ+D79+8DeNYeokmysrIQGhqKXr16qQaTLikpgaurK0pLSwE8a5v4888/4eTkhPfeew+jR4/GhAkT6lyHSCRC586dceLECcTHx+PUqVM1LneoSxynTp1C165dAQAREREgItXZuZycHPj5+WHTpk1q5fbs2RPBwcF1rqO6l+ePP/4YAGBvb1/nz/m2qteN+/fv13rI1RASExMxefLkRim7IbzqO65mbm4ONzc3AICuri7mzJmjGv5hxIgRNcqsy/deja2rdVd9Bcu9e/dqXCpUIwFWB21gYNAEodVddWJetmzZK8cIsbOzww8//IAFCxZgyZIl9apDX18fHh4e6NatG6KiovDJJ58gLi5ObYS5usTh4eGBo0eP4siRIxg1ahRsbW3x6NEjAMDt27chl8trjFr3fHtQXerg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", + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Let's have a look on the structure of the combined Table an Text QA pipeline.\n", "from IPython import display\n", @@ -519,11 +2135,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "id": "strPNduPoBLe" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", + "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", + "Inferencing Samples: 0%| | 0/1 [00:00] 65,32K 243KB/s in 0,3s \n", + "\n", + "2022-03-29 14:36:47 (243 KB/s) - »table.pdf« gespeichert [66887/66887]\n", + "\n" + ] + } + ], "source": [ "!wget https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -662,16 +3569,23 @@ "\n", "docs = converter.convert(\"table.pdf\")\n", "\n", - "tables = [doc for doc in docs if doc.content_type == \"table\"]" + "tables = [doc for doc in docs if doc[\"content_type\"] == \"table\"]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'content': [['Disability\\nCategory', 'Participants', 'Ballots\\nCompleted', 'Ballots\\nIncomplete/\\nTerminated', 'Results', 'Results'], ['Disability\\nCategory', 'Participants', 'Ballots\\nCompleted', 'Ballots\\nIncomplete/\\nTerminated', 'Accuracy', 'Time to\\ncomplete'], ['Blind', '5', '1', '4', '34.5%, n=1', '1199 sec, n=1'], ['Low Vision', '5', '2', '3', '98.3% n=2\\n(97.7%, n=3)', '1716 sec, n=3\\n(1934 sec, n=2)'], ['Dexterity', '5', '4', '1', '98.3%, n=4', '1672.1 sec, n=4'], ['Mobility', '3', '3', '0', '95.4%, n=3', '1416 sec, n=3']], 'content_type': 'table', 'meta': {'preceding_context': 'Example table\\nThis is an example of a data table.', 'following_context': ''}}]\n" + ] + } + ], "source": [ - "tables = [doc for doc in docs if doc[\"content_type\"] == \"table\"]\n", "print(tables)" ] }, @@ -720,7 +3634,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.10" + "version": "3.9.12" } }, "nbformat": 4, From ee28686b33bdaa6296119845be54cba86200be60 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Tue, 29 Mar 2022 14:45:41 +0200 Subject: [PATCH 08/11] update non-notebook tutorial 15 --- tutorials/Tutorial15_TableQA.py | 63 ++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index bbdd7c1c64..6e9dabe850 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -1,12 +1,15 @@ +import os import json import pandas as pd +from haystack import Label, MultiLabel, Answer from haystack.utils import launch_es, fetch_archive_from_http, print_answers from haystack.document_stores import ElasticsearchDocumentStore from haystack import Document, Pipeline from haystack.nodes.retriever import TableTextRetriever -from haystack.nodes import TableReader, FARMReader, RouteDocuments, JoinAnswers +from haystack.nodes import TableReader, FARMReader, RouteDocuments, JoinAnswers, ParsrConverter + def tutorial15_tableqa(): @@ -129,6 +132,21 @@ def read_tables(filename): text_table_qa_pipeline.add_node(component=table_reader, name="TableReader", inputs=["RouteDocuments.output_2"]) text_table_qa_pipeline.add_node(component=join_answers, name="JoinAnswers", inputs=["TextReader", "TableReader"]) + # Add texts to the document store + def read_texts(filename): + processed_passages = [] + with open(filename) as passages: + passages = json.load(passages) + for key, content in passages.items(): + document = Document(content=content, content_type="text", id=key) + processed_passages.append(document) + + return processed_passages + + + passages = read_texts(f"{doc_dir}/texts.json") + document_store.write_documents(passages) + # Example query whose answer resides in a text passage predictions = text_table_qa_pipeline.run(query="Which country does the film Macaroni come from?") # We can see both text passages and tables as contexts of the predicted answers. @@ -139,6 +157,49 @@ def read_tables(filename): # We can see both text passages and tables as contexts of the predicted answers. print_answers(predictions, details="minimum") + ### Evaluation + # To evaluate our pipeline, we can use haystack's evaluation feature. We just need to convert our labels into `MultiLabel` objects and the `eval` method will do the rest. + + def read_labels(filename, tables): + processed_labels = [] + with open(filename) as labels: + labels = json.load(labels) + for table in tables: + if table.id not in labels: + continue + label = labels[table.id] + label = Label( + query=label["query"], + document=table, + is_correct_answer=True, + is_correct_document=True, + answer=Answer(answer=label["answer"]), + origin="gold-label", + ) + processed_labels.append(MultiLabel(labels=[label])) + return processed_labels + + + table_labels = read_labels(f"{doc_dir}/labels.json", tables) + passage_labels = read_labels(f"{doc_dir}/labels.json", passages) + + eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={"top_k": 10}) + + # Calculating and printing the evaluation metrics + print(eval_results.calculate_metrics()) + + ## Adding tables from PDFs + # It can sometimes be hard to provide your data in form of a pandas DataFrame. + # For this case, we provide the `ParsrConverter` wrapper that can help you to convert, for example, a PDF file into a document that you can index. + os.system("docker run -d -p 3001:3001 axarev/parsr") + os.system("wget https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf") + + converter = ParsrConverter() + docs = converter.convert("table.pdf") + tables = [doc for doc in docs if doc["content_type"] == "table"] + + print(tables) + if __name__ == "__main__": tutorial15_tableqa() From 38bf99b8613e78e52405ce2f1e5cfb04d644a4e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Mar 2022 12:47:40 +0000 Subject: [PATCH 09/11] Update Documentation & Code Style --- docs/_src/tutorials/tutorials/15.md | 10 +++++++--- tutorials/Tutorial15_TableQA.py | 3 --- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/_src/tutorials/tutorials/15.md b/docs/_src/tutorials/tutorials/15.md index 4025643046..b6f3b88417 100644 --- a/docs/_src/tutorials/tutorials/15.md +++ b/docs/_src/tutorials/tutorials/15.md @@ -360,6 +360,11 @@ passage_labels = read_labels(f"{doc_dir}/labels.json", passages) ```python eval_results = text_table_qa_pipeline.eval(table_labels + passage_labels, params={"top_k": 10}) +``` + + +```python +# Calculating and printing the evaluation metrics print(eval_results.calculate_metrics()) ``` @@ -368,7 +373,7 @@ It can sometimes be hard to provide your data in form of a pandas DataFrame. For ```python -!docker run -p 3001:3001 axarev/parsr +!docker run -d -p 3001:3001 axarev/parsr ``` @@ -384,12 +389,11 @@ converter = ParsrConverter() docs = converter.convert("table.pdf") -tables = [doc for doc in docs if doc.content_type == "table"] +tables = [doc for doc in docs if doc["content_type"] == "table"] ``` ```python -tables = [doc for doc in docs if doc["content_type"] == "table"] print(tables) ``` diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index 6e9dabe850..c4966ca2d7 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -11,7 +11,6 @@ from haystack.nodes import TableReader, FARMReader, RouteDocuments, JoinAnswers, ParsrConverter - def tutorial15_tableqa(): # Recommended: Start Elasticsearch using Docker via the Haystack utility function @@ -143,7 +142,6 @@ def read_texts(filename): return processed_passages - passages = read_texts(f"{doc_dir}/texts.json") document_store.write_documents(passages) @@ -179,7 +177,6 @@ def read_labels(filename, tables): processed_labels.append(MultiLabel(labels=[label])) return processed_labels - table_labels = read_labels(f"{doc_dir}/labels.json", tables) passage_labels = read_labels(f"{doc_dir}/labels.json", passages) From 06bfc7972bca5d85819370eaae80e4becf184116 Mon Sep 17 00:00:00 2001 From: Michel Bartels Date: Tue, 29 Mar 2022 15:16:30 +0200 Subject: [PATCH 10/11] delete distracting output from tutorial 15 notebook --- tutorials/Tutorial15_TableQA.ipynb | 455 ++--------------------------- tutorials/Tutorial15_TableQA.py | 2 +- 2 files changed, 28 insertions(+), 429 deletions(-) diff --git a/tutorials/Tutorial15_TableQA.ipynb b/tutorials/Tutorial15_TableQA.ipynb index 5d73a4faae..5df021fb28 100644 --- a/tutorials/Tutorial15_TableQA.ipynb +++ b/tutorials/Tutorial15_TableQA.ipynb @@ -74,26 +74,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "id": "frDqgzK7v2i1" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ef915e8e9fc887bed9c7545c8c63e8aa710ed6ec9596f2507f1d55502384b1dc\n" - ] - } - ], + "outputs": [], "source": [ "# Recommended: Start Elasticsearch using Docker via the Haystack utility function\n", "from haystack.utils import launch_es\n", @@ -126,19 +111,11 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "RmxepXZtwQ0E" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.telemetry - Haystack sends anonymous usage data to understand the actual usage and steer dev efforts towards features that are most meaningful to users. You can opt-out at anytime by calling disable_telemetry() or by manually setting the environment variable HAYSTACK_TELEMETRY_ENABLED as described for different operating systems on the documentation page. More information at https://haystack.deepset.ai/guides/telemetry\n" - ] - } - ], + "outputs": [], "source": [ "# Connect to Elasticsearch\n", "from haystack.document_stores import ElasticsearchDocumentStore\n", @@ -164,29 +141,11 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "id": "nM63uwbd8zd6" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.utils.import_utils - Fetching from https://s3.eu-central-1.amazonaws.com/deepset.ai-farm-qa/datasets/documents/table_text_dataset.zip to `data/tutorial15`\n" - ] - }, - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Let's first fetch some tables that we want to query\n", "# Here: 1000 tables from OTT-QA\n", @@ -289,41 +248,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "EY_qvdV6wyK5" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-question_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-question_encoder\n", - "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", - "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", - "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-passage_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-passage_encoder\n", - "The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. \n", - "The tokenizer class you load from this checkpoint is 'DPRQuestionEncoderTokenizer'. \n", - "The class this function is called from is 'DPRContextEncoderTokenizerFast'.\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/bert-small-mm_retrieval-table_encoder locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/bert-small-mm_retrieval-table_encoder\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes.retriever import TableTextRetriever\n", "\n", @@ -337,20 +266,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "jasi1RM2zIJ7" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.document_stores.elasticsearch - Updating embeddings for all 437 docs ...\n", - "Updating embeddings: 10000 Docs [00:22, 435.12 Docs/s] \n" - ] - } - ], + "outputs": [], "source": [ "# Add table embeddings to the tables in DocumentStore\n", "document_store.update_embeddings(retriever=retriever)" @@ -423,20 +343,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "id": "4APcRoio2RxG" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes import TableReader\n", "\n", @@ -495,7 +406,7 @@ } ], "source": [ - "# Try the TableReader on one Table (highest-scored retrieved table from previous section)\n", + "# Try the TableReader on one Table\n", "\n", "table_doc = document_store.get_document_by_id(\"36964e90-3735-4ba1-8e6a-bec236e88bb2\")\n", "print(table_doc.content)" @@ -1957,20 +1868,11 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "id": "j1TaNF7SiKgH" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.document_stores.elasticsearch - Updating embeddings for 563 docs without embeddings ...\n", - "Updating embeddings: 10000 Docs [00:29, 343.20 Docs/s] \n" - ] - } - ], + "outputs": [], "source": [ "document_store.update_embeddings(retriever=retriever, update_existing_embeddings=False)" ] @@ -1991,88 +1893,11 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "id": "Ej_j8Q3wlxXE" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n", - "INFO - haystack.modeling.model.language_model - LOADING MODEL\n", - "INFO - haystack.modeling.model.language_model - =============\n", - "INFO - haystack.modeling.model.language_model - Could not find deepset/roberta-base-squad2 locally.\n", - "INFO - haystack.modeling.model.language_model - Looking on Transformers Model Hub (in local cache and online)...\n", - "INFO - haystack.modeling.model.language_model - Loaded deepset/roberta-base-squad2\n", - "INFO - haystack.modeling.logger - ML Logging is turned off. No parameters, metrics or artifacts will be logged to MLFlow.\n", - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.infer - Got ya 7 parallel workers to do inference ...\n", - "INFO - haystack.modeling.infer - 0 0 0 0 0 0 0 \n", - "INFO - haystack.modeling.infer - /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ /w\\ \n", - "INFO - haystack.modeling.infer - /'\\ / \\ /'\\ /'\\ / \\ / \\ /'\\ \n", - "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n", - "INFO - haystack.modeling.utils - Using devices: CPU\n", - "INFO - haystack.modeling.utils - Number of GPUs: 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n", - "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", - "To disable this warning, you can either:\n", - "\t- Avoid using `tokenizers` before the fork if possible\n", - "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING - haystack.nodes.base - Unnamed __init__ parameters will not be saved to YAML if Pipeline.save_to_yaml() is called!\n" - ] - } - ], + "outputs": [], "source": [ "from haystack.nodes import FARMReader, RouteDocuments, JoinAnswers\n", "\n", @@ -2135,28 +1960,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "id": "strPNduPoBLe" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", - "INFO - haystack.modeling.model.optimization - apex not found, won't use it. See https://nvidia.github.io/apex/\n", - "Inferencing Samples: 0%| | 0/1 [00:00] 65,32K 243KB/s in 0,3s \n", - "\n", - "2022-03-29 14:36:47 (243 KB/s) - »table.pdf« gespeichert [66887/66887]\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "!wget https://www.w3.org/WAI/WCAG21/working-examples/pdf-table/table.pdf" ] diff --git a/tutorials/Tutorial15_TableQA.py b/tutorials/Tutorial15_TableQA.py index c4966ca2d7..5501b4bc89 100644 --- a/tutorials/Tutorial15_TableQA.py +++ b/tutorials/Tutorial15_TableQA.py @@ -88,7 +88,7 @@ def read_tables(filename): reader = TableReader(model_name_or_path="google/tapas-base-finetuned-wtq", max_seq_len=512) - # Try the TableReader on one Table (highest-scored retrieved table) + # Try the TableReader on one Table table_doc = document_store.get_document_by_id("36964e90-3735-4ba1-8e6a-bec236e88bb2") print(table_doc.content) From 2fe7d39c6ee85d020e17d3742030c046746f8cbe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Mar 2022 13:30:11 +0000 Subject: [PATCH 11/11] Update Documentation & Code Style --- docs/_src/tutorials/tutorials/15.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_src/tutorials/tutorials/15.md b/docs/_src/tutorials/tutorials/15.md index b6f3b88417..56504aa21c 100644 --- a/docs/_src/tutorials/tutorials/15.md +++ b/docs/_src/tutorials/tutorials/15.md @@ -194,7 +194,7 @@ reader = TableReader(model_name_or_path="google/tapas-base-finetuned-wtq", max_s ```python -# Try the TableReader on one Table (highest-scored retrieved table from previous section) +# Try the TableReader on one Table table_doc = document_store.get_document_by_id("36964e90-3735-4ba1-8e6a-bec236e88bb2") print(table_doc.content)