|
| 1 | +{ |
| 2 | + "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "markdown", |
| 5 | + "metadata": {}, |
| 6 | + "source": [ |
| 7 | + "## Load embedding model" |
| 8 | + ] |
| 9 | + }, |
| 10 | + { |
| 11 | + "cell_type": "code", |
| 12 | + "execution_count": 1, |
| 13 | + "metadata": {}, |
| 14 | + "outputs": [], |
| 15 | + "source": [ |
| 16 | + "from langchain.embeddings import HuggingFaceEmbeddings\n", |
| 17 | + "\n", |
| 18 | + "EMBEDDING_MODEL_NAME = \"sdadas/mmlw-retrieval-roberta-large\"\n", |
| 19 | + "\n", |
| 20 | + "embeddings = HuggingFaceEmbeddings(model_name=EMBEDDING_MODEL_NAME)" |
| 21 | + ] |
| 22 | + }, |
| 23 | + { |
| 24 | + "cell_type": "code", |
| 25 | + "execution_count": 2, |
| 26 | + "metadata": {}, |
| 27 | + "outputs": [], |
| 28 | + "source": [ |
| 29 | + "from qdrant_client import QdrantClient\n", |
| 30 | + "\n", |
| 31 | + "collection_name = f\"poquad_{EMBEDDING_MODEL_NAME.replace('/', '_')}\"\n", |
| 32 | + "client = QdrantClient(host='localhost', port=6333)" |
| 33 | + ] |
| 34 | + }, |
| 35 | + { |
| 36 | + "cell_type": "code", |
| 37 | + "execution_count": 3, |
| 38 | + "metadata": {}, |
| 39 | + "outputs": [], |
| 40 | + "source": [ |
| 41 | + "from langchain.vectorstores import Qdrant\n", |
| 42 | + "\n", |
| 43 | + "qdrant = Qdrant(\n", |
| 44 | + " client=client,\n", |
| 45 | + " collection_name=collection_name,\n", |
| 46 | + " embeddings=embeddings\n", |
| 47 | + ")" |
| 48 | + ] |
| 49 | + }, |
| 50 | + { |
| 51 | + "cell_type": "code", |
| 52 | + "execution_count": 4, |
| 53 | + "metadata": {}, |
| 54 | + "outputs": [], |
| 55 | + "source": [ |
| 56 | + "retriever = qdrant.as_retriever()" |
| 57 | + ] |
| 58 | + }, |
| 59 | + { |
| 60 | + "cell_type": "code", |
| 61 | + "execution_count": 5, |
| 62 | + "metadata": {}, |
| 63 | + "outputs": [], |
| 64 | + "source": [ |
| 65 | + "from transformers import AutoModelForQuestionAnswering, AutoTokenizer\n", |
| 66 | + "\n", |
| 67 | + "model_name = './output/roberta-base-squad2-pl/checkpoint-8500'\n", |
| 68 | + "\n", |
| 69 | + "model = AutoModelForQuestionAnswering.from_pretrained(model_name)\n", |
| 70 | + "tokenizer = AutoTokenizer.from_pretrained(model_name)" |
| 71 | + ] |
| 72 | + }, |
| 73 | + { |
| 74 | + "cell_type": "code", |
| 75 | + "execution_count": 6, |
| 76 | + "metadata": {}, |
| 77 | + "outputs": [], |
| 78 | + "source": [ |
| 79 | + "from transformers import pipeline\n", |
| 80 | + "\n", |
| 81 | + "nlp = pipeline('question-answering', model=model, tokenizer=tokenizer)" |
| 82 | + ] |
| 83 | + }, |
| 84 | + { |
| 85 | + "cell_type": "code", |
| 86 | + "execution_count": 9, |
| 87 | + "metadata": {}, |
| 88 | + "outputs": [], |
| 89 | + "source": [ |
| 90 | + "def get_context(query, k):\n", |
| 91 | + " results = retriever.get_relevant_documents(\n", |
| 92 | + " k=k,\n", |
| 93 | + " query=query,\n", |
| 94 | + " fetch_k=k*5,\n", |
| 95 | + " )\n", |
| 96 | + "\n", |
| 97 | + " context = \"\"\n", |
| 98 | + "\n", |
| 99 | + " for result in results:\n", |
| 100 | + " context += result.page_content + \" \"\n", |
| 101 | + " \n", |
| 102 | + "\n", |
| 103 | + " return context" |
| 104 | + ] |
| 105 | + }, |
| 106 | + { |
| 107 | + "cell_type": "code", |
| 108 | + "execution_count": 15, |
| 109 | + "metadata": {}, |
| 110 | + "outputs": [ |
| 111 | + { |
| 112 | + "name": "stdout", |
| 113 | + "output_type": "stream", |
| 114 | + "text": [ |
| 115 | + "Od 2014 roku w Superpucharze, z inicjatywy prezesa PZPN Zbigniewa Bońka, nastąpiła zmiana, gdyż po 8 latach przerwy związek podjął na swoje barki organizację rozgrywek o Superpuchar. O trofeum walczyć będą Mistrz Polski oraz zdobywca Pucharu Polski sezonu zakończonego w roku rozgrywania Superpucharu. Tym samym powrócono do nazwy Superpuchar Polski. Mecz rozgrywany będzie na stadionie Mistrza Polski, na około tydzień przed startem nowego sezonu Ekstraklasy. W sytuacji, gdy ten sam klub sięgnie po mistrzostwo i Puchar Polski, jego rywalem w meczu o trofeum będzie finalista ostatniej edycji Pucharu Polski. Od 2014 roku w Superpucharze, z inicjatywy prezesa PZPN Zbigniewa Bońka, nastąpiła zmiana, gdyż po 8 latach przerwy związek podjął na swoje barki organizację rozgrywek o Superpuchar. O trofeum walczyć będą Mistrz Polski oraz zdobywca Pucharu Polski sezonu zakończonego w roku rozgrywania Superpucharu. Tym samym powrócono do nazwy Superpuchar Polski. Mecz rozgrywany będzie na stadionie Mistrza Polski, na około tydzień przed startem nowego sezonu Ekstraklasy. W sytuacji, gdy ten sam klub sięgnie po mistrzostwo i Puchar Polski, jego rywalem w meczu o trofeum będzie finalista ostatniej edycji Pucharu Polski. Ze względu na organizację Euro 2012 Superpuchar Ekstraklasy jak i cały sezon ligowy rozpoczął się nie jak dotychczas w lipcu, a w sierpniu. Jednocześnie nie potrafiono znaleźć obiektu w którym mógłby przyjąć piłkarzy i kibiców Legii Warszawa (Zdobywcy Pucharu Polski) i Śląska Wrocław (Mistrza Polski). Zdecydowano ostatecznie że mecz o Superpuchar Polski odbędzie się na stadionie przy ulicy Łazienkowskiej w Warszawie. Organizacja meczu na stadionie Legii została skrytykowana przez kibiców obu drużyn, przez co większość kibiców postanowiła zbojkotować to spotkanie, przez co na meczu zjawiło się zaledwie 5000 widzów. 12 sierpnia 2012 na Stadionie Wojska Polskiego Legia która była W fazie play-off uprawnieni do występu będą zwycięzcy każdej z czterech grup w każdej z lig A, B, C, D. Jeżeli zwycięzca danej grupy w którejkolwiek z lig zakwalifikuje się do Mistrzostw Europy podczas tradycyjnych eliminacji, prawo do udziału w fazie play-off przechodzi na kolejną drużynę w danej lidze według rankingu Ligi Narodów. Założenie UEFA jest takie, aby o cztery wolne miejsca rozegrać cztery turnieje eliminacyjne, które rozgrywane będą metodą pucharową: mecz półfinałowy oraz mecz finałowy. Tylko zwycięzca każdego z turniejów awansuje do Mistrzostw Europy 2020. Założono również, że w każdym z turniejów rywalizowałyby ze sobą drużyny z \n", |
| 116 | + "{'score': 0.619749903678894, 'start': 985, 'end': 1012, 'answer': 'na stadionie Mistrza Polski'}\n" |
| 117 | + ] |
| 118 | + } |
| 119 | + ], |
| 120 | + "source": [ |
| 121 | + "question = \"Gdzie rozegrany zostanie pojedynek o Superpuchar?\"\n", |
| 122 | + "context = get_context(question, 1)\n", |
| 123 | + "\n", |
| 124 | + "print(context)\n", |
| 125 | + "\n", |
| 126 | + "result = nlp(question=question, context=context)\n", |
| 127 | + "\n", |
| 128 | + "print(result)" |
| 129 | + ] |
| 130 | + }, |
| 131 | + { |
| 132 | + "cell_type": "markdown", |
| 133 | + "metadata": {}, |
| 134 | + "source": [ |
| 135 | + "## Evaluation" |
| 136 | + ] |
| 137 | + }, |
| 138 | + { |
| 139 | + "cell_type": "code", |
| 140 | + "execution_count": 16, |
| 141 | + "metadata": {}, |
| 142 | + "outputs": [], |
| 143 | + "source": [ |
| 144 | + "from datasets import load_dataset\n", |
| 145 | + "\n", |
| 146 | + "poquad = load_dataset(\"clarin-pl/poquad\")" |
| 147 | + ] |
| 148 | + }, |
| 149 | + { |
| 150 | + "cell_type": "code", |
| 151 | + "execution_count": 17, |
| 152 | + "metadata": {}, |
| 153 | + "outputs": [], |
| 154 | + "source": [ |
| 155 | + "poquad_validation = poquad[\"validation\"]" |
| 156 | + ] |
| 157 | + }, |
| 158 | + { |
| 159 | + "cell_type": "code", |
| 160 | + "execution_count": 18, |
| 161 | + "metadata": {}, |
| 162 | + "outputs": [], |
| 163 | + "source": [ |
| 164 | + "import evaluate\n", |
| 165 | + "\n", |
| 166 | + "metric = evaluate.load(\"squad\")" |
| 167 | + ] |
| 168 | + }, |
| 169 | + { |
| 170 | + "cell_type": "code", |
| 171 | + "execution_count": null, |
| 172 | + "metadata": {}, |
| 173 | + "outputs": [], |
| 174 | + "source": [ |
| 175 | + "from transformers import pipeline\n", |
| 176 | + "\n", |
| 177 | + "def get_predictions(eval_dataset, qa_pipeline):\n", |
| 178 | + " predictions = []\n", |
| 179 | + " for question, id in zip(eval_dataset[\"question\"], eval_dataset[\"context\"], eval_dataset[\"id\"]):\n", |
| 180 | + " context = get_context(question, 5)\n", |
| 181 | + " answer = qa_pipeline(question=question, context=context)\n", |
| 182 | + " prediction = {\n", |
| 183 | + " 'id': id,\n", |
| 184 | + " 'prediction_text': answer['answer']\n", |
| 185 | + " }\n", |
| 186 | + "\n", |
| 187 | + " predictions.append(prediction)\n", |
| 188 | + "\n", |
| 189 | + " return predictions" |
| 190 | + ] |
| 191 | + } |
| 192 | + ], |
| 193 | + "metadata": { |
| 194 | + "kernelspec": { |
| 195 | + "display_name": "env", |
| 196 | + "language": "python", |
| 197 | + "name": "python3" |
| 198 | + }, |
| 199 | + "language_info": { |
| 200 | + "codemirror_mode": { |
| 201 | + "name": "ipython", |
| 202 | + "version": 3 |
| 203 | + }, |
| 204 | + "file_extension": ".py", |
| 205 | + "mimetype": "text/x-python", |
| 206 | + "name": "python", |
| 207 | + "nbconvert_exporter": "python", |
| 208 | + "pygments_lexer": "ipython3", |
| 209 | + "version": "3.12.2" |
| 210 | + } |
| 211 | + }, |
| 212 | + "nbformat": 4, |
| 213 | + "nbformat_minor": 2 |
| 214 | +} |
0 commit comments