{"id":22092664,"url":"https://github.com/pjaskulski/gpt_historical_text","last_synced_at":"2025-03-24T00:24:01.359Z","repository":{"id":65560983,"uuid":"593523646","full_name":"pjaskulski/gpt_historical_text","owner":"pjaskulski","description":"GPT3/GPT4, information extraction from historical texts","archived":false,"fork":false,"pushed_at":"2023-09-24T12:33:47.000Z","size":1070,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-29T07:12:58.640Z","etag":null,"topics":["biographies","gpt-4","gpt3","information-extraction","knowledge-extraction"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pjaskulski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-01-26T08:06:02.000Z","updated_at":"2024-05-15T06:31:24.000Z","dependencies_parsed_at":"2023-02-16T00:00:48.525Z","dependency_job_id":null,"html_url":"https://github.com/pjaskulski/gpt_historical_text","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjaskulski%2Fgpt_historical_text","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjaskulski%2Fgpt_historical_text/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjaskulski%2Fgpt_historical_text/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjaskulski%2Fgpt_historical_text/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pjaskulski","download_url":"https://codeload.github.com/pjaskulski/gpt_historical_text/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245188239,"owners_count":20574727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["biographies","gpt-4","gpt3","information-extraction","knowledge-extraction"],"created_at":"2024-12-01T03:10:14.761Z","updated_at":"2025-03-24T00:24:01.324Z","avatar_url":"https://github.com/pjaskulski.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GPT3/GPT4 - Large Language Model as a tool for extracting knowledge from text - tests on excerpts from historical publications\n\n(GPT3/GPT4 - Large Language Model jako narzędzie do wydobywania wiedzy z tekstu - testy na fragmentach publikacji historycznych)\n\nEnglish version: [link](https://github.com/pjaskulski/gpt_historical_text/blob/main/README_en.md)\n\n\nTesty modeli GPT-3 i GPT-4 udostępnionych przez API OpenAI przeprowadzane na fragmentach publikacji i opracowań historycznych w celu automatycznej ekstrakcji informacji, wyciągania ustrukturyzowanych danych ze źródeł dostępnych w formie nieustrukturyzowanej. Testowany materiał to głównie fragmenty biografii postaci historycznych.\n\n[Notatki](#notatki)\n  - [Wstępne informacje](#wstępne-informacje)\n  - [Literatura, blogi, repozytoria](#literatura)\n  - [Porównanie dostępnych modeli GPT](#porównanie-dostępnych-modeli-gpt)\n  - [Uwagi techniczne](#uwagi-techniczne)\n  - [Poprawność odpowiedzi](#poprawność-odpowiedzi)\n  - [Wiedza z kontekstu](#wiedza-z-kontekstu)\n\n[Przykłady](#przykłady)\n  - [Relacje rodzinne postaci](#relacje-rodzinne)\n  - [Funkcje i urzędy](#funkcje-i-urzędy-głównej-postaci)\n  - [Lista instytucji](#lista-instytucji)\n  - [Imię, nazwisko, data śmierci](#wynik-w-formie-tabeli)\n  - [Lista urzędów](#lista-urzędów)\n  - [Lista urzędów i funkcji w formie xml](#lista-urzędów-i-funkcji-w-xml)\n  - [Relacje rodzinne](#relacje-rodzinne-nr-2)\n  - [Konwersja tekstu do formatu TEI](#tei-xml-output)\n  - [Analiza NER fragmentu publikacji](#analiza-ner-fragmentu-publikacji)\n  - [Inne przykłady](#inne-przykłady)\n  - [Analiza 50 biogramów - relacje rodzinne](#analiza-relacji-rodzinnych-na-serii-biografii)\n  - [Analiza 50 biogramów - relacje rodzinne - GPT4](#analiza-relacji-rodzinnych-na-serii-biografii---model-gpt4)\n  - [Przetwarzanie haseł SHG do formatu XML - GPT4](#przetwarzanie-hasła-shg-do-formatu-xml---gpt4)\n  - [Formatowanie wyników - JSON](#formatowanie-wyników---json)\n  - [Indeterminizm i halucynacje](#indeterminizm-i-halucynacje)\n  - [Test modelu Nous-Hermes-13b](#test-modelu-nous-hermes-13b)\n  - [Weryfikacja wyników zwracanych przez LLM - guardrails](#weryfikacja-wyników-zwracanych-przez-llm---guardrails)\n  - [Przykład ekstrakcji informacji z biogramu PSB](#przykład-ekstrakcji-informacji-z-biogramu-psb)\n  - [GPT i biogramy PSB - uwagi i wnioski](#gpt-i-biogramy-psb---uwagi-i-wnioski)\n  - [Automatyczne tworzenie grafów wiedzy](#automatyczne-tworzenie-grafów-wiedzy)\n  - [Test fine-tuningu modelu gpt-3.5-turbo](#test-fine-tunigu-modelu-gpt-35-turbo)\n  - [Przetwarzanie 250 biogramów modelem gpt-3.5-turbo po fine-tuningu](#przetwarzanie-250-biogramów-modelem-gpt-35-turbo-po-fine-tuningu)\n  - [Rozwijanie skrótów w hasłach SHG](#rozwijanie-skrótów-w-hasłach-shg)\n  - [SHG jako źródło wiedzy dla LLM](#shg-jako-źródło-wiedzy-dla-llm)\n  - [SHG - podział na regesty z określeniem tematyki regestu](#shg---podział-na-regesty-z-określeniem-tematyki-regestu)\n\n\n## Notatki\n\n### Wstępne informacje\n\nDefinicja GPT-3 (napisana przez ChatGPT):\n\"GPT-3 (Generative Pretrained Transformer 3) jest trzecią wersją sztucznej inteligencji opracowaną przez OpenAI. Jest to jeden z największych modeli językowych na świecie, który został wytrenowany na ogromnych zbiorach danych tekstowych, aby rozumieć i generować język ludzki. GPT-3 jest używany do wielu zastosowań, takich jak generowanie tekstu, tłumaczenie, odpowiadanie na pytania i rozumienie tekstu. Model ten wykorzystuje architekturę Transformer i jest w stanie uczyć się zadanie z niewielką ilością danych, co czyni go bardzo efektywnym i elastycznym narzędziem dla różnych zastosowań.\"\n\nTesty GPT-3 zostały przeprowadzone poprzez API udostępnione przez firmę OpenAI, wykorzystano głównie model `text-davinci-003`.\n\nIstnieją ograniczenia podczas korzystania z API dotyczące liczby zapytań na minutę (3 tys.) i liczby przetworzonych tokenów na minutę (250 tys.).\n\nToken jest rozumiany trochę inaczej niż zwykle w NLP, tu dłuższe wyrazy są rozbijane na krótkie tokeny 3-4 znaki, oprócz tego tokenem są też znaki interpunkcyjne itp. Podawane jest że średnio token to 4 znaki w języku angielskim, na stronie OpenAI jest narzędzie w którym (https://beta.openai.com/tokenizer) można wkleić tekst i zobaczyć ile zawiera tokenów.\n\nPrzykładowo biografia Edwarda Józefa Sedlaczka (Polski Słownik Biograficzny t. XXXVI, 1995-6, s. 137-138) zawiera 4433 znaków co przekłada się na 2291 tokenów. W przypadku tekstów polskich sytuację pogarszają polskie znaki, wygląda na to że każdy dwubajtowy unicodowy znak jest traktowany jako osobny token.\n\n### Literatura\n\n- _\"Structured information extraction from complex scientific text with fine-tuned large language models\"_ (Alexander Dunn, John Dagdelen, Nicholas Walker, Sanghoon Lee, Andrew S. Rosen, Gerbrand Ceder, Kristin Persson and Anubhav Jain) [link](https://arxiv.org/pdf/2212.05238.pdf)\n\n- _\"Text Pattern Extraction: Comparing GPT-3 \u0026 Human-in-the-Loop Tool\"_ (Maeda Hanafi) [link](https://towardsdatascience.com/text-pattern-extraction-comparing-gpt-3-human-in-the-loop-tool-f2380fd13cf1)\n\n- _\"Getting tabular data from unstructured text with GPT-3: an ongoing experiment\"_ (ROBERTO ROCHA) [link](https://robertorocha.info/getting-tabular-data-from-unstructured-text-with-gpt-3-an-ongoing-experiment/)\n\n- _\"Advanced NER With GPT-3 and GPT-J\"_ (Maxime Cupani) [link](https://towardsdatascience.com/advanced-ner-with-gpt-3-and-gpt-j-ce43dc6cdb9c)\n\n- _\"Relationship Extraction with GPT-3. Accelerate knowledge graph construction with GPT-3\"_ (Sixing Huang) [link](https://medium.com/geekculture/relationship-extraction-with-gpt-3-bb019dcf41e5)\n\n- _\"Language Models are Few-Shot Learners\"_ (Tom B. Brown et al.) [link](https://arxiv.org/abs/2005.14165)\n\n- _\"Training language models to follow instructions with human feedback\"_ (Long Ouyang et al., OpenAI) [link](https://arxiv.org/pdf/2203.02155.pdf)\n\n\n### Porównanie dostępnych modeli GPT\n\nNajlepszy model `text-davinci-003` (to jednocześnie najdroższy model językowy w OpenAI) ma ograniczenie do 4000 tokenów, przy czym dotyczy to wejścia i wyjścia razem.\n\nModele słabsze np. `text-curie-001` czy `text-babbage-001` dają w przypadku wyciągania danych z przekazanego tekstu wyraźnie gorsze wyniki np.:\n\nFunkcje/urzędy z biografii Edwarda Sedlaczka wg. `text-davinci-003` (przy standardowych ustawieniach parametrów, np. `temperature` = 0.5):\n\n1. Kierownik literacki dwutygodnika lwowskiego „Przyjaciel Domowy” (1 VI 1882)\n2. Kancelista w konsulacie austriackim w Warszawie (1886)\n3. Konsulat austriacki w Kijowie (do 1895)\n4. Wicekonsulat w Batumi, Rosja (1896–7)\n5. Agencja konsularna w Nowosielicy, Rosja\n6. Agencja konsularna w Burgas, Bułgaria\n7. Wicekonsulat w Batumi, Rosja\n8. Wicekonsulat Burgas, Bułgaria\n9. Wicekonsulat Ploieşti, Rumunia\n10. Redaktor serii Wydawnictwa Towarzystwa imienia Piotra Skargi (ok 1910).\n\nFunkcje/urzędy wg modelu `text-curie-001` (parametry jak wyżej):\n\n- literat\n- urzędnik\n- kierownik literacki dwutygodnika lwowskiego „Przyjaciel Domowy”\n- posada kancelisty w konsulacie austriackim w Warszawie\n- kierował kolejno wicekonsulatem w Batumi (Rosja, 1896–7), a od r.n. – agencją konsularną w Nowosielicy (Rosja), agencją konsularną w Burgas (Bułgaria), wicekonsulatem w Batumi, wicekonsulatem w Burgas i wicekonsulatem w Ploieşti (Rumunia)\n\nTe słabsze modele, mają też większe ograniczenia: do 2 tys. tokenów w jednym zapytaniu, są jednak znacznie tańsze.\n\n### Uwagi techniczne\n\nParametr `temperature` ma wartość 0.0 - 1.0, niższa wartość powoduje że odpowiedź jest bardziej konkretna, deterministyczna, mniej losowa i mniej kreatywna. Wyższa pozwala modelowi na więcej elastyczności. Alternatywnie można modyfikować domyślną wartość parametru `top_p` = 1.0, zmniejszając jego wartość - nie jest jednak zalecane jednoczesne modyfikowanie obu parametrów (zob. [API reference](https://beta.openai.com/docs/api-reference/completions/create)).\n\nWielokrotne uruchamianie tego samego zapytania może dawać nieco inne wyniki, jeżeli wartość parametru temperature jest większa od zera.\n\nZapytania uruchamiane przez API nie znają kontekstu zapytań uruchamianych chwilę przed,\ninaczej niż w trakcie rozmowy z ChatGPT, należy za każdym razem podawać całą informację w zapytaniu.\n\nOgromne znaczenie ma konstrukcja zapytania (prompt), całkiem poprawnie działają pytania w języku angielskim dotyczące podanego polskiego tekstu, czasem dają nawet lepsze rezultaty. Zadanie zlecone modelowi powinno być napisane językiem prostym, konkretnym, ale nie musi być bardzo krótkie. Dobry wpływ na jakość odpowiedzi mają podane modelowi przykłady, czego i w jakiej formie się spodziewamy.\n\nOdpowiedzi modelu davinci-003 zadawane przez API, często różnią się od wyników pytań zadanych\npodczas 'rozmowy' z ChatGPT.\n\n### Poprawność odpowiedzi\n\nModel `text-davinci-003` jest zoptymalizowany do generowania tekstów, sprawiających wrażenie że są przygotowane przez człowieka, lecz bez gwarancji że wszystkie informacje w nich są prawdziwe. Dotyczy to także sytuacji gdy nie zleca się modelowi wygenerowania tekstu na jakiś temat na podstawie jego wewnętrznej wiedzy, lecz model ma wyciągnąć informację z przekazanego mu tekstu. Szczególnie gdy parametr `temperature` ma wyższą wartość, model potrafi 'zaokrąglać' informacje - jest bardziej kreatywny, np. przy przetwarzaniu biografii Edwarda Sedlaczka z parametrem `temperature` = 1.0 model zapytany o funkcje i urzędy tej postaci generuje m.in. informację:\n\n1. Kierownik literacki prasy lwowskiej (\"Dziennik dla Wszystkich”, „Dziennik Polski”, „Gazeta Lwowska”, „Gazeta Narodowa”, „Przyjaciel Domowy”) i warszawskiej („Biesiada Literacka”, „Echo”, „Kłosy”, „Kurier Codzienny”, „Kurier Warszawski”, „Niwa\", \"Słowo\", \"Tygodnik Ilustrowany\", \"Tygodni Mód i Powieści\" , \"Tygodnik Powszechny\" i \"Wiek\").\n\nTymczasem w rzeczywistości bohater biografii był kierownikiem literackim tylko pisma \"Przyjaciel Domowy\".\n\nPo obniżeniu wartości `temperature` do 0.0 zwracana jest już prawdziwa informacja:\n\n1. Kierownik literacki dwutygodnika lwowskiego „Przyjaciel Domowy” (1 VI 1882)\n\nWpływ ma jakość odpowiedzi mają także parametry `frequency_penalty` (standardowo wartość 0.8)\ni `presence penalty`: kontrolujący tendencję modelu do powtarzania generowanych słów oraz zachęcający model do generowania nowatorskich sformułowań. Manipulowanie nimi spowodowało na przykładowym biogramie Sedlaczka wygenerowanie fałszywego przybliżenia, zamiast:\n\n3. Kancelista w austriackim konsulacie w Kijowie (1895)\n\notrzymujemy:\n\n3. Konsul w Kijowie (1882-1895)\n\ngdzie odpowiedni fragment biografii brzmi: _\"Później pełnił takąż funkcję w austriackim konsulacie w Kijowie (do r. 1895)\"_. Ta skłonność do 'halucynacji' jest jednym z głównych problemów przy ekstrakcji informacji z tekstów historycznych, oczywiście dane wyciągane przez model musiałyby być weryfikowane przez ludzkiego eksperta, warto również przeprowadzić test na większej próbie testów i ocenić poprawność (i kompletność) zwracanych przez model danych.\n\nNajbardziej przydatne wartości parametrów (w przypadku wyciągania informacji z tekstów):\n- temperature: 0\n- top p: 1.0\n- frequency penalty: 0.0\n- presence penalty: 0.0\n\n### Wiedza z kontekstu\n\nTo w czym model bywa zadziwiająco dobry, to umiejętność wyciągania informacji z kontekstu. Dłuższy fragment tej samej biografii Sedlaczka związany jego pracą kancelisty brzmi: _\"W r. 1886 S. otrzymał posadę kancelisty w konsulacie austriackim w Warszawie – zapewne za poparciem Władysława Łozińskiego, który opiekował się jego karierą także w l.n. Później pełnił takąż funkcję w austriackim konsulacie w Kijowie (do r. 1895)\"_.\nz czego model (uruchomiony z właściwymi parametrami!) wyciąga informację:\n\n3. Kancelista w austriackim konsulacie w Kijowie (1895)\n\nCo nie jest przecież (nazwa funkcji/urzędu) podane wprost.\n\nPodobny przykład występuje w biografii Ludwika Mortęskiego (Polski Słownik Biograficzny t. XXII, 1977, s. 9-11), model wyszukał informację o urzędzie sprawowanym przez bohatera biografii:\n\n2. Kasztelan elbląski (1516–1539)\n\nna podstawie wpisu _\"Jako kasztelan gdański brał M. udział w licznych komisjach powoływanych przez króla dla rozstrzygania spraw spornych na terenie Prus Królewskich. Dn. 4 III 1516 przeszedł M. na kasztelanię elbląską (po zmarłym Janie Wulkowskim) i trzymał ją do śmierci.\"_.\n\n\n## Przykłady\n\nModel: text-davinci-003\u003cbr\u003e\nText: biografia Ludwika Mortęskiego (zm. 1539), w języku polskim.\n(Polski Słownik Biograficzny t. XXII, 1977, s. 9-11)\n\n### Relacje rodzinne\n\n**Prompt**: From this text extract information about parents, wife, children and grandchildren for the person Ludwik Mortęski\n\n**Result**:\nParents: Ludwik (possibly) and Anna\n\nWife: Elżbieta z Dąbrówki\n\nChildren: Katarzyna, Dorota, Gertruda, Elżbieta, Małgorzata, Ludwik and Melchior\n\nGrandchildren: Magdalena Mortęskiej and Ludwik\n\n### Funkcje i urzędy głównej postaci\n\n**Prompt**: From this text, extract information about the offices, functions and positions held by the person Ludwik Mortęski, present them in the form of a list\n\n**Result**:\nOffices, Functions and Positions Held by Ludwik Mortęski:\n\n1. Kasztelan gdański (1512–1516)\n2. Kasztelan elbląski (1516–1539)\n3. Representative of Prussian States to King Kazimierz Jagiellończyk (1492)\n4. Member of the Delegation of Prussian States to the Election of a Polish King (1506)\n5. Podkomorzy chełmiński at the Malbork Assembly of Prussian States with Representatives of King Aleksander Jagiellończyk (1503)\n6. Representative of Prussian States to Bishop Hiob von Dobenecka (1507)\n7. Representative of Prussian States to King Zygmunt I at the Krakow Sejm and Malbork Assembly (1508, 1509, 1511)\n8. Defender of Nobility Rights in Discussions at Assemblies and Sejmik in Elbląg, Malbork, Grudziądz and Gdańsk (1507-1530).\n9. Opponent to Wojewodas Jan Dabrowski and Mikołaj Wulkowski in 1509\n10. Member on Commissions Appointed by the King for Resolving Disputes in Prussia Królewskich(after 1512).\n11. Starostwo pokrzywnickie(1505).\n12. Starostwo Pokrzywno with Villages Okonin, Nicwałd, Węgrowo Skarszewo Nowawieś i Wiewiórki as a Feudal Estate from Zygmunt Stary for Military Service(1521).\n\n### Lista instytucji\n\n**Prompt**:\nFrom this text, extract information about institutions related to the the person Ludwik Mortęski, present them in the form of a list.\n\n**Result**:\nInstitutions related to Ludwik Mortęski:\n\n1. Stały Sejmik Prus Królewskich\n2. Kapituła Warmińska\n3. Rada Pruska\n4. Sejmik w Malborku (listopad 1530)\n5. Sejmik w Grudziądzu (12/1511)\n6. Sejm w Krakowie (1/18/1508)\n7. Sejm w Malborku (28/5-8/6/1508)\n8. Zamek Radzyń w ziemi chełmińskiej\n9. Zamek Pokrzywno\n10. Kasztelania Gdańska (4/3/1512)\n11. Kasztelania Elbląska (4/3/1516)\n\n### Wynik w formie tabeli\n\n**Prompt**: From this text give the name, surname and date of death of the main character. Show the result in the form of a table.\n\n{TEXT}\n\n```\n| Name | Surname | Date of death |\n```\n\n**Result**:\n\n```\n| ------ | ----------------------- | ---- |\n| Ludwik | Mortęski (de Mortangen) | 1539 |\n| ------ | ----------------------- | ---- |\n```\n\n### Lista urzędów\n\nText: biografia Mikołaja z Woli (zm. 1346 lub 1347) - w języku polskim.\n(Polski Słownik Biograficzny t. XXI, 1976, s. 151)\n\n**Prompt**: From this text, extract information about the offices,\nheld by the person Mikołaj z Woli, present them in the form of a list\n\n**Result**:\n\nList of offices held by Mikołaj z Woli:\n- Kasztelan kruszwicki\n- Starosta kujawski\n- Podkomorzy brzeski\n- Asesor sądu ziemskiego w Inowrocławiu\n\n### Lista urzędów i funkcji w xml\n\nText: biografia Edwarda Józefa Sedlaczka\n(Polski Słownik Biograficzny t. XXXVI, 1995-6, s. 137-138)\n\n**Prompt**: From this text, extract information about the offices,\nfunctions and positions held by the person Edward Józef Sedlaczek, present them in\nthe form of xml: `\u003cxml\u003e\u003cperson\u003e\u003coffice\u003eoffice, function or position\u003c/office\u003e\u003cperson\u003e\u003c/xml\u003e`\n\n\n**Result**:\n\n```\n\u003cxml\u003e\n  \u003cperson\u003e\n    \u003cname\u003eEdward Józef Sedlaczek\u003c/name\u003e\n    \u003coffice\u003eLiterat\u003c/office\u003e\n    \u003coffice\u003eKierownik literacki dwutygodnika lwowskiego „Przyjaciel Domowy”\u003c/office\u003e\n    \u003coffice\u003eKancelista w konsulacie austriackim w Warszawie\u003c/office\u003e\n    \u003coffice\u003eKierował wicekonsulatem w Batumi (Rosja, 1896–7)\u003c/office\u003e\n    \u003coffice\u003eAgencją konsularną w Nowosielicy (Rosja)\u003c/office\u003e\n    \u003coffice\u003eAgencją konsularną w Burgas (Bułgaria)\u003c/office \u003e\n    \u003c office \u003e Wicekonsulatem w Batumi \u003c/ office \u003e\n  \t\u003c office \u003e Wicekonsulatem w Burgas \u003c/ office \u003e\n  \t\u003c office \u003e Wicekonsulatem w Ploieşti (Rumunia) \u003c/ office \u003e\n  \t\u003c office \u003e Redagował serię Wydawnictwa Tow. im. P. Skargi \u003c/ office \u003e\n  \u003c/person\u003e\n\u003c/xml\n```\n\n### Relacje rodzinne nr 2\n\nText: biografia Andrzeja Rosickiego (1814-1904),\n(Polski Słownik Biograficzny t. XXXII, 1989-1991, s. 82)\n\n**Prompt**: From this text extract information about parents, wife, siblings, children and grandchildren for the main character\n\n**Result**:\n\nParents: Walenty and Marianna z Idzikowskich\n\nWife: Anna z Robowskich\n\nSiblings: Unknown\n\nChildren: Józefa Konstancja (born 1859), Antonina Wiktoria (born 1863) and Piotr Michał (born 1862)\n\nGrandchildren: Unknown\n\n### TEI XML output\n\nText: Fragment Bullarium Poloniae.\n\n**Prompt**: Tag text and convert to TEI XML format.\n\n**Result**:\n\n```\n\u003ctei xmlns=\"http://www.tei-c.org/ns/1.0\"\u003e\n  \u003cteiHeader\u003e\n    \u003cfileDesc\u003e\n      \u003ctitleStmt\u003e\n        \u003ctitle\u003eFrancisco Cruswicz magistro in theologia\u003c/title\u003e\n      \u003c/titleStmt\u003e\n    \u003c/fileDesc\u003e\n  \u003c/teiHeader\u003e\n\n  \u003ctext xml:lang=\"lat\"\u003e\n    \u003cp\u003e\u003cpersName ref=\"#Cruswicz\"\u003eFrancisco Cruswicz\u003c/persName\u003e, magistro in theologia [in civitate Constantiensi commoranti]: Eidem decano eccl. s. Floriani extra muros Crac. (\u003camt type=\"currency\" quantity=\"15\" unit=\"argentum polonorum\"\u003e15 m. arg.\u003c/amt\u003e p.), canonica-tus in eccl. s. Michaelis in castro Crac.(\u003camt type=\"currency\" quantity=\"12\" unit=\"argentum polonorum\"\u003e12 m.\u003c/amt\u003e. arg p.), per obitum apud SA ea vacante Nicolai Falkemberg vacans, confertur.;s. m scholastico et cantori ac custodi Crac.\u003cnum value=\"11\"\u003eXI\u003c/num\u003e,\u003cnum value = \"13\"\u003eXIII\u003c/num\u003e. \u003c/p\u003e\n  \u003c/text\u003e\n\u003c/tei\u003e\n```\n\n### Analiza NER fragmentu publikacji\n\nText: Fragment publikacji Stanisława Bodniaka _\"Polska a Bałtyk za ostatniego z Jagiellona\"_ (1946):\n\nByło to w roku 1552. Już od czerwca bawił król Zygmunt August w pomorskiej  ziemi, lipiec i sierpień spędził w Gdańsku, we wrześniu po kilkudniowym  pobycie w Malborgu w czasie sejmiku podążył do Królewca na zaproszenie ks. Albrechta. Towarzyszyli mu w podróży hetman Jan Tarnowski, marszałek koronny Piotr Kmita, bp. Stanisław Hozjusz, kanclerz Jan Ocieski, podkanclerzy Jan Przerębski i inni przedniejsi senatorowie i dostojnicy polscy obok przedstawicieli świata umysłowego w osobach Marcina Kromera, Szymona Maricjusa-Czystochlebskiego i Łukasza Górnickiego. Orszak dworzan i rycerstwa przenosił 5 tysięcy osób.\nNajokazalej podejmował swego władcę Gdańsk, cały roztaczając przed nim przepych, na jaki pozwalało miastu u ujścia Wisły rosnące pod polskim panowaniem bogactwo. Stawił się tam z Zachodniego Pomorza ks. Barnim XI w 300 koni i ze znaczną liczbą pomorskiej szlachty, ażeby spotkać się ze swym dostojnym krewniakiem i suwerenem z tytułu lenna na Lęborgu i Bytowie. W programie gdańskim przyjęcia, obfitującym w uczty, zabawy i gry rycerskie, nie zapomniano o morzu.\nW dniu 13 lipca zwiedził król w towarzystwie ks. Barnima statek na stoczni  w Gdańsku i przyglądał się jego spuszczeniu na wodę. W tydzień później (20 VII) wybrał się barką, wybitą czerwonym suknem i przybraną chorągiewkami, na obejrzenie warowni, nazywanej wówczas „Latarnią” albo „wieżą”,* położonej u ujścia Wisły. Gdy tam wchodził, grzmiały na jego cześć działa warowni i okrętu „Żelazny Henryk\", naprzeciw niej umieszczonego , miotając na morze ogniste kule, Po posiłku w warowni powrócił na swą barkę i popłynął dalej — na Bałtyk, wtedy spokojny. Wielu także panów polskich z otoczenia zapuściło się daleko na fale, korzystając z pogody.\n\n**Prompt**: W podanym tekście wyszukaj informacje o osobach, znalezione osoby wypisz w formie listy, jeżeli są znane funkcje lub urzędy osób umieść te informacje w nawiasach obok osób:\n\n**Wynik**:\n\n- Zygmunt August (król)\n- Jan Tarnowski (hetman)\n- Piotr Kmita (marszałek koronny)\n- Stanisław Hozjusz (bp)\n- Jan Ocieski (kanclerz)\n- Jan Przerębski (podkanclerzy)\n- Marcin Kromer\n- Szymon Maricjus-Czystochlebski\n- Łukasz Górnicki\n- Barnim XI (książę)\n\n\n### Inne przykłady\n\nSkrypty do tych i pozostałych przykładów w folderze `src`, wyniki w folderze `output`.\n\n### Analiza relacji rodzinnych na serii biografii\n\n(_zob. też w dalszej części tekstu analogiczną analizę wykonaną z użyciem GPT-4_)\n\nJak model GPT-3 ('davinci-003') radzi sobie z rozpoznawaniem relacji rodzinnych można spróbować ocenić na większej próbce 50 biogramów wybranych losowo z tomów 1-51 Polskiego Słownika Biograficznego. Biogramy mają różną długość, od mniej więcej 1 tys. znaków do kilkudziesięciu tys. Ograniczeniem jest liczba tokenów, które 'davinci' jest w stanie przetworzyć w jednym zapytaniu - 4000 wliczając wygenerowaną odpowiedź. W przypadku dłuższych biogramów zostały one wstępnie 'streszczone': uwzględniono 5 pierwszych i pięć ostatnich zdań (pomijając najpierw część bibliograficzną biogramu) oraz wszystkie zdania pomiędzy nimi jeżeli zawierały treść wskazującą na informacje o rodzinie i krewnych (biogram został podzielony na zdania za pomocą spaCy, w zdaniach analizowano formy podstawowe tokenów i porównywano z przygotowanym słownikiem pojęć związanych z pokrewieństwem). Skracanie biogramów może oczywiście wpłynąć negatywnie na wyniki (zdania są wyrwane z kontekstu, niekiedy użyty model spaCy 'pl_core_news_lg' niepoprawnie dzielił tekst na zdania). W teście skupiono się na pokrewieństwie w stosunku do głównego bohatera/bohaterki biogramu.\n\nTeksty biogramów przetwarzane były promptem o treści:\n\n```\nNa podstawie podanego tekstu wyszukaj\nwszystkich krewnych lub powinowatych głównego bohatera tekstu.\nMożliwe rodzaje pokrewieństwa: ojciec, matka, syn, córka, brat, siostra, żona, mąż,\nteść, teściowa, dziadek, babcia, wnuk, wnuczka, szwagier, szwagierka, siostrzeniec,\nsiostrzenica, bratanek, bratanica, kuzyn, kuzynka, zięć, synowa, teść bratanicy.\nWynik wypisz w formie listy nienumerowanej, w formie:\ngłówny bohater -\u003e rodzaj pokrewieństwa -\u003e osoba\nKażda pozycja w osobnej linii. Na przykład:\n- główny bohater -\u003e brat -\u003e Jan Kowalski\n- główny bohater -\u003e siostra -\u003e Anna\nPomiń rodzaj pokrewieństwa jeżeli nie występuje w tekście.\nJeżeli w tekście nie ma żadnych informacji o pokrewieństwach głównego bohatera\nnapisz: brak danych.\n```\n\n(kod skryptu w pliku psb_relacje_rodzinne.py)\n\nDla 36 z 50 biogramów model znalazł jakieś relacje - w sumie 182 przypadki pokrewieństwa głównego bohatera z inną osobą. Po szczegółowym przeanalizowaniu, **38 z nich było błędne (20.9%)**, **144 oceniono jako prawdziwe (79.1%)**.\n\nSzczegółowa lista **znalezionych** relacji:\n\n| Postać -\u003e rodzaj pokrewieństwa/relacja -\u003e osoba spokrewniona | Prawidłowa? |\n| ------------------------------------------------------------ | :---------: |\n| **Aloe Franciszek Eljasz** | |\n| główny bohater -\u003e ojciec -\u003e Jan Baptysty d'Aloy | True |\n| główny bohater -\u003e matka -\u003e Henryka Rakocy | True |\n| główny bohater -\u003e brat -\u003e Emanuel | True |\n| główny bohater -\u003e siostry-\u003e piękne siostry | **False** |\n| **Bezprym** | |\n| główny bohater -\u003e ojciec -\u003e Bolesław Chrobry | True |\n| główny bohater -\u003e matka -\u003e nieznana Węgierka | True |\n| główny bohater -\u003e brat -\u003e Mieszko II | True |\n| główny bohater -\u003e brat -\u003e Otto | True |\n| główny bohater-\u003e teść bratanicy-\u003e cesarz Konrad II | **False** |\n| **Dąbrowska_Pelagia** | |\n| główny bohater -\u003e żona -\u003e Dąbrowska Pelagia | **False** |\n| główny bohater -\u003e synowie -\u003e brak danych | **False** |\n| **Daszyński Ignacy** | |\n| główny bohater -\u003e ojciec -\u003e Ferdynand | True |\n| główny bohater -\u003e matka -\u003e Kamila z Mierzeńskich | True |\n| główny bohater -\u003e brat -\u003e Feliks | True |\n| główny bohater-\u003e żona (pierwsza)-\u003e Maria z Paszkowskich | True |\n| główny bohater-\u003e żona (druga)-\u003e Cecylia Kempnerówna | True |\n| **Dzierżek_Natalia** | |\n| Główny bohater -\u003e matka -\u003e Maria z Piątkowskich Nieczuja-Dzierżków | True |\n| Główny bohater -\u003e ojciec -\u003e Henryk | True |\n| Główny bohater -\u003e siostra rodzona-\u003e Henryka Piątkowskiego | **False** |\n| Główny bohater -\u003e teść bratanicy-\u003e Tadeusz Gałecki | **False** |\n| Główny bohater -\u003e synowa teścia bratanicy-\u003e Teresa z Wołowskich Prażmowska | **False** |\n| **Eufrozyna** | |\n| Główny bohater -\u003e ojciec -\u003e Kazimierz | True |\n| Główny bohater -\u003e matka -\u003e Eufrozyna | **False** |\n| Główny bohater -\u003e syn -\u003e Władysław Łokietek | True |\n| Główny bohater -\u003e syn -\u003e Kazimierz | True |\n| Główny bohater-\u003e syn-\u003e Ziemowit | True |\n| Główny bohater-\u003e mąż-\u003e Mszczuja II | True |\n| **Ewild al. Eywild** | |\n| Główny bohater -\u003e ojciec -\u003e Stanisław Brzeski | **False** |\n| główny bohater -\u003e brat -\u003e Eynur | True |\n| główny bohater -\u003e dziadek -\u003e Jawilt | **False** |\n| główny bohater -\u003e wnukowie-\u003e Dowgird i Daszko Eywiltowicze | **False** |\n| **Fuzorius Bartłomiej** | |\n| Główny bohater -\u003e ojciec -\u003e Stanisław Lwowczyk | True |\n| **Gliński Iwan** | |\n| główny bohater -\u003e ojciec -\u003e Lew Borysowicz | True |\n| główny bohater -\u003e brat rodzony -\u003e Michał Mamaj | **False** |\n| główny bohater -\u003e bratanica -\u003e Helena | True |\n| **Hincza z Rogowa** | |\n| główny bohater -\u003e ojciec -\u003e Hinczka z Rogowa | True |\n| główny bohater -\u003e brat -\u003e Jakub | True |\n| główny bohater -\u003e siostra -\u003e Małgorzata | True |\n| główny bohater -\u003e żona-\u003e Dorota z Koziegłowskich h. Lis | True |\n| główny bohater-\u003e teść bratanicy-\u003e Bartłomiej Gruszczyński | **False** |\n| **Jadwiga Jagiellonka** | |\n| główny bohater -\u003e ojciec -\u003e Kazimierz Jagiellończyk | True |\n| główny bohater -\u003e matka -\u003e Elżbieta Rakuszanka | True |\n| główny bohater -\u003e brat -\u003e Aleksander Jagiellończyk | True |\n| główny bohater -\u003e siostra-\u003e Sonka Jagiellonka | **False** |\n| główny bohater-\u003e żona-\u003e Jerzy Bawarski | **False** |\n| główny bohater-\u003e córka-\u003e Elżbieta Bawarska | True |\n| główny bohater-\u003e córka-\u003e Małgorzata Bawarska | True |\n| główny bohater-\u003e teść bratanicy -\u003e Ludwik Bawarski | **False** |\n| **Kakowski Aleksander** | |\n| główny bohater -\u003e ojciec -\u003e Franciszek | True |\n| główny bohater -\u003e matka -\u003e Paulina z Ossowskich | True |\n| **Krumhausen Gabriel** | |\n| główny bohater -\u003e ojciec -\u003e Joachim | True |\n| główny bohater -\u003e matka -\u003e Gertruda | True |\n| główny bohater -\u003e brat -\u003e Joachim | True |\n| główny bohater -\u003e żona-\u003e Konstancja Falcke | True |\n| **Łańcucki Wojciech** | |\n| główny bohater -\u003e ojciec -\u003e Stanisław | True |\n| **Leymiter Stanisław** | |\n| główny bohater -\u003e ojciec -\u003e Mikołaj | True |\n| główny bohater -\u003e matka -\u003e Benigna | True |\n| główny bohater -\u003e żona -\u003e Zofia | True |\n| główny bohater -\u003e syn -\u003e Jan | True |\n| główny bohater -\u003e syn-\u003e Stanisław | True |\n| główny bohater-\u003e córka-\u003e Barbara | True |\n| główny bohater-\u003e córka-\u003e Benigna | True |\n| główny bohater-\u003e teść-\u003e Jan Tesznar | True |\n| główny bohater-\u003e brat teściowej-\u003e Mikołaj Kreidler | **False** |\n| główny bohater-\u003e siostra teściowa-\u003e Agnieszka Tesznarowa | **False** |\n| główny bohater-\u003e siostra teściowa-\u003e Katarzyna Tesznarowa | **False** |\n| **Mierzeński Aleksander** | |\n| główny bohater -\u003e brat -\u003e Jan Mierzeński | True |\n| główny bohater -\u003e brat -\u003e Samuel Mierzeński | True |\n| główny bohater -\u003e syn brata -\u003e Jan Mierzeński | True |\n| główny bohater -\u003e synowa syna brata-\u003e Mariana z Kawcenich | **False** |\n| **Mostowska z Bujwidów** | |\n| główny bohater -\u003e ojciec -\u003e Odo Bujwid | True |\n| główny bohater -\u003e matka -\u003e Kazimiera z Klimontowiczów | True |\n| główny bohater -\u003e siostra -\u003e Kazimiera Rouppertowa | True |\n| główny bohater -\u003e siostra-\u003e Jadwiga Demelowa | True |\n| główny bohater-\u003e siostra-\u003e Helena Jurgielewiczowa | True |\n| główny bohater-\u003e mąż-\u003e Włodzimierz Mostowski | True |\n| główny bohater-\u003e syn-\u003e Jerzy Mostowski | True |\n| główny bohater-\u003e syn-\u003e Czesław Mostowski | True |\n| **Patruus** | |\n| główny bohater -\u003e ojciec -\u003e Jan Patruus z Koła | **False** |\n| główny bohater -\u003e syn -\u003e Jan | True |\n| **Pichgiel** | |\n| główny bohater -\u003e ojciec -\u003e Matthias Pichel | **False** |\n| główny bohater -\u003e matka -\u003e Barbara z domu Biettin | True |\n| główny bohater -\u003e syn -\u003e Christian Pichgiel młodszy | True |\n| główny bohater -\u003e syn -\u003e Johan Pichgiel | True |\n| główny bohater -\u003e syn-\u003e Daniel Pichgiel | True |\n| główny bohater-\u003e syn-\u003e Emanuel Pichgiel | True |\n| główny bohater-\u003e kuzyn-\u003e Matthias Pichgiel młodszy | True |\n| **Pion Maurice** | |\n| główny bohater -\u003e ojciec -\u003e Antoine Claude | True |\n| główny bohater -\u003e matka -\u003e Anna z domu Pauli | True |\n| główny bohater -\u003e żona -\u003e Aleksandra Antonina z Budzyńskich | True |\n| główny bohater -\u003e synowie-\u003e Adolf Stanisław, Władysław Stanisław | True |\n| główny bohater-\u003e córki-\u003e Adela, Kornelia | True |\n| główny bohater-\u003e młodsza siostra-\u003e Eugenia | True |\n| **Piotrowiczowa z Rogolińskich** | |\n| główny bohater -\u003e ojciec -\u003e Zygmunt Rogoliński | True |\n| główny bohater -\u003e matka -\u003e Ansberty z Badeńskich | True |\n| główny bohater -\u003e mąż -\u003e Konstantego Piotrowicza | True |\n| główny bohater -\u003e teść bratanicy-\u003e Józef Dworzaczek | **False** |\n| **Renard Benedykt** | |\n| główny bohater -\u003e ojciec -\u003e Andrzej | True |\n| główny bohater -\u003e brat -\u003e Jan Baptysta | True |\n| główny bohater -\u003e siostra -\u003e Anna Orzelska | **False** |\n| główny bohater -\u003e siostra-\u003e Anna Katarzyna | True |\n| **Rossi Piotr** | |\n| główny bohater -\u003e ojciec -\u003e Andrzej | True |\n| główny bohater -\u003e żona -\u003e Małgorzata | True |\n| główny bohater -\u003e syn -\u003e Andrzej | True |\n| główny bohater -\u003e syn -\u003e Kornel | True |\n| główny bohater-\u003e syn-\u003e Klemens | True |\n| główny bohater-\u003e córka-\u003e Izabella | True |\n| główny bohater-\u003e córka-\u003e Feliksa | True |\n| **Sapieha_Jan_Fryderyk** | |\n| główny bohater -\u003e ojciec -\u003e Fryderyk | True |\n| główny bohater -\u003e matka -\u003e Ewa ze Skaszewskich | True |\n| główny bohater -\u003e brat -\u003e Tomasz Kazimierz | True |\n| główny bohater -\u003e brat stryjeczny-\u003e Jan Ferdynand | True |\n| główny bohater-\u003e kuzyn-\u003e Kazimierz Leon Sapieha | True |\n| główny bohater-\u003e hetman P. J. Sapieha (stryjeczny wujek) | **False** |\n| główny bohater-\u003e syn-\u003e Mikołaj Leon | True |\n| główny bohater-\u003e syn-\u003e Kazimierz Władysław | True |\n| głowny bohater-\u003e syn-\u003e Paweł Franciszek | True |\n| **Śląska Aleksandra** | |\n| główny bohater -\u003e ojciec -\u003e Edmund Wąsik | True |\n| główny bohater -\u003e matka -\u003e Helena z Masłowskich | True |\n| główny bohater -\u003e siostra przyrodnia-\u003e Bożena Jewasińska | True |\n| główny bohater -\u003e brat-\u003e Olgierd Edmund Wąsik | True |\n| główny bohater -\u003e mąż pierwszy-\u003e Czesław Michał Górski | True |\n| główny bohater -\u003e syn-\u003e Szczęsny Tadeusz Górski | True |\n| główny bohater -\u003e mąż drugi-\u003e Stanisław Śląski | **False** |\n| **Słowicki Józef** | |\n| główny bohater -\u003e ojciec -\u003e Józef | True |\n| **Śniadecka Kornelia Ludwika**\n| główny bohater -\u003e ojciec -\u003e Jędrzej Śniadecki | True |\n| główny bohater -\u003e matka -\u003e Konstancja z Mikułowskich | True |\n| główny bohater -\u003e siostra -\u003e Zofia Balińska | True |\n| główny bohater -\u003e brat-\u003e Józef Konstanty Śniadecki | True |\n| główny bohater-\u003e teść bratanicy-\u003e Kazimierz Sulistrowski | **False** |\n| główny bohater-\u003e stryj-\u003e Jan Śniadecki | True |\n| główny bohater-\u003e siostrzenica-\u003e Antonina Śniadecka | **False** |\n| główny bohater-\u003e stryjenka-\u003e Salomea Bécu | **False** |\n| główny bohater-\u003e wujek (brat ojca) -\u003e Ignacy Abramowicz | **False** |\n| główny bohater-\u003e wujek (brat ojca) -\u003e Mikołaj Abramowicz | **False** |\n| **Spektor Mordechaj** | |\n| główny bohater -\u003e żona -\u003e Izabela z Frydbergów | True |\n| **Stańczakowa ze Strancmanów** | |\n| główny bohater -\u003e ojciec -\u003e Adolf Strancman | True |\n| główny bohater -\u003e matka -\u003e Maria Weinfeld | True |\n| główny bohater -\u003e brat -\u003e Jan Strancman | True |\n| główny bohater -\u003e mąż-\u003e Zdzisław Stańczak | True |\n| główny bohater-\u003e córka-\u003e Anna Stańczak | True |\n| główny bohater-\u003e zięć-\u003e Tadeusz Sobolewski | True |\n| **Stanisław_Cielątko** | |\n| główny bohater -\u003e ojciec -\u003e Jan | True |\n| główny bohater -\u003e brat -\u003e Jan Cielątki z Liszyna i Prusiecka | True |\n| główny bohater -\u003e brat -\u003e Mikołaj | True |\n| główny bohater-\u003e siostrzenica-\u003e Małgorzata Marta | **False** |\n| główny bohater-\u003e teść bratanicy-\u003e Piotr Cikowski z Mikluszowic | True |\n| **Strzelecki Wiesław Marian** | |\n| główny bohater -\u003e ojciec -\u003e Felicjan | True |\n| główny bohater -\u003e matka -\u003e Stefania z Łękawskich | True |\n| główny bohater -\u003e syn -\u003e Krzysztof | True |\n| główny bohater-\u003e żona-\u003e Barbara z Krzemińskich | True |\n| **Świrski Jerzy Włodzimierz** | |\n| główny bohater -\u003e ojciec -\u003e Włodzimierz | True |\n| główny bohater -\u003e matka -\u003e Celina z Wasiłowskich | True |\n| główny bohater -\u003e brat -\u003e Małgorzata | **False** |\n| główny bohater -\u003e siostrzenica-\u003e Maria Konopnicka | **False** |\n| **Szapira Majer** | |\n| główny bohater -\u003e ojciec -\u003e Jakub Szamszon | True |\n| główny bohater -\u003e matka -\u003e Margula Szor | True |\n| główny bohater -\u003e brat -\u003e Abraham | True |\n| główny bohater-\u003e dziadek-\u003e Samuel Izaak Szor | True |\n| główny bohater-\u003e żona-\u003e Małka Towa | True |\n| główny bohater-\u003e teść bratanicy-\u003e Salomon Moskowicz | **False** |\n| **Szapocznikow_Alina** | |\n| główny bohater -\u003e ojciec -\u003e Jakub | True |\n| główny bohater -\u003e matka -\u003e Regina | True |\n| główny bohater -\u003e brat -\u003e Mirosław | True |\n| główny bohater-\u003e syn-\u003e Piotr Stanisławski | True |\n| **Szczubioł_Andrzej** | |\n| główny bohater -\u003e ojciec -\u003e Stefan z Jasieńca i Ciechomic | True |\n| główny bohater -\u003e matka -\u003e Sędka | True |\n| główny bohater -\u003e brat -\u003e Mikołaj z Ciechomic | True |\n| główny bohater -\u003e brat-\u003e Jan z Dłotowa | True |\n| główny bohater-\u003e żona-\u003e Anna | True |\n| główny bohater-\u003e syn-\u003e Maciej | True |\n| główny bohater-\u003e syn-\u003e Szymon zwany Gostyńskim z Ciechomic | True |\n| główny bohater-\u003e syn-\u003e Andrzej | True |\n| główny bohater-\u003e teść bratanicy -\u003e Ścibor z Sąchocina h. Rogala | **False** |\n| **Szumski Boksa** | |\n| główny bohater -\u003e ojciec -\u003e Krzesław z Szumska | True |\n| główny bohater -\u003e brat -\u003e Jan (Jaszek) Rej z Nagłowic | True |\n| główny bohater -\u003e żona -\u003e Stachna h. Poraj | True |\n| główny bohater -\u003e syn-\u003e Jan Rey | True |\n| główny bohater-\u003e teść-\u003e Chociemir Garnka (Garnysza) z Pojałowic i Suchcic | **False** |\n| główny bohater-\u003e teściowa-\u003e Świątka, żona Mikołaja z Barczkowic, następnie Wisława z Kościelca | **False** |\n| główny bohater-\u003e bratanek-\u003e Jan Rey (zm. 1468) | True |\n| główny bohater-\u003e bratanek-\u003e Stogniew, żonaty z Małgorzatą | True |\n\nWażne jest oczywiście także to czego model **nie znajduje**.\nDla 14 biogramów model ocenił, że nie ma danych dotyczących relacji rodzinnych dla głównego bohatera.\nW 5 z tych przypadków jest to prawdopodobnie błąd (15 brakujących relacji).\n\n| Postać | Wynik |\n| ---    | ---   |\n| Bartoszewski Jan | True |\n| Ezra_ben_Nisan | True (w biogramie jest tylko niejasna wzmianka, że miał jakieś córki)\n| Falęta | True\n| Fiorentini Władysław | **False** (jest informacja o ojcu, dziadku i żonie)\n| Gołaski Jan | True\n| Grzegorzewski Jan | **False** (jest informacja o ojcu i matce)\n| Guicciardini Galeazzo | True (występuje tylko niesjasna wzmianka o jego bracie, niewymienionym z imienia)\n| Hirschenfeld-Mielecki Józef | True\n| Langfort Teodor Henryk | True\n| Popiel | True\n| Siemowit | **False** (w biogramie wymieniony ojciec, matka, syn, wnuk i prawnuk)\n| Spycigniew z Dąbrowy | **False** (w biogramie występuje inf. o prawdopodobnym synu i wnuku, być może problemem jest skrót S-a na oznaczenie głównego bohatera)\n| Swach | **False** (jest inf. o ojcu, matce i bracie) |\n| Sztaffel Izrael | True |\n\nW biogramach w których model odnalazł krewnych głównego bohatera/bohaterki zdarzało się, że była to tylko część informacji na temat relacji rodzinnych - teki problem wystąpił w 12 na 36 biogramów (pominiętych 26 relacji rodzinnych). Szczegółowy wykaz poniżej.\n\n| Postać | Czy uwzgl. wszystkie ralacje, ew. jakich brakuje |\n| ---    | ---                               |\n| Aloe Franciszek Eljasz  |  True |\n| Bezprym  |  True |\n| Dąbrowska Pelagia | **False**, pominięta matka Pelagia i ojciec Michał, ciotki Waleria i Ignacja, mąż Jarosław. Może to wynikać ze specyficzneg stylu podania tych informacji i stosowania skrótów: \"Ur. 10 IX w Dubience (w Lubelskiem) z Pelagii z Piotrowskich i Michała Zgliczyńskiego, wcześnie osierocona, wychowywała się u ciotek Walerii i Ignacji Piotrowskich.\" |\n| Daszyński Ignacy | True |\n| Dzierżek Natalia | True |\n| Eufrozyna | **False**, pominięta informacja o pierwszym mężu - Kazimierzu |\n| Ewild al. Eywild | True |\n| Fuzorius Bartłomiej | True |\n| Gliński Iwan | **False**, pominięta informacja o bracie Wasylu |\n| Hincza z Rogowa | True (jest wzmianka o małoletnich dzieciach ale bez konkretów) |\n| Jadwiga Jagiellonka | True (część informacji jest pomylona - Jerzy Bawarski nie jest żoną bohaterki tylko mężem, ale inf. została znaleziona...) |\n| Kakowski Aleksander | True |\n| Krumhausen Gabriel | **False**, pominięta informacja o 'dziadku po kądzieli' |\n| Łańcucki Wojciech | True |\n| Leymiter Stanisław | **False**, pominięta inf. o szwagrze i 2 szwagierkach, bracie oraz o zięciach (z tym że córki wyszły za mąż po śmierci bohatera), biogram napisany dość zawile, jeżeli chodzi o opis rodziny bohatera. |\n| Mierzeński Aleksander | **False**, pominięta informacja o ojcu i matce. |\n| Mostowska z Bujwidów | True |\n| Patruus | True (są tylko wzmianki o nieznanych z imienia synach i córkach) |\n| Pichgiel | **False**, pominięta inf. o stryju i o żonie bohatera biogramu |\n| Pion Maurice | True |\n| Piotrowiczowa z Rogolińskich | True |\n| Renard Benedykt | True |\n| Rossi Piotr | **False**, pominięta informacja o teściu |\n| Sapieha Jan Fryderyk | **False**, brak informacji o dziadku i o zięciu |\n| Śląska Aleksandra | True (brak tylko inf. o 'dalekiej krewnej' Eugenii Deutsch) |\n| Słowicki Józef | True |\n| Śniadecka Kornelia Ludwika | **False**, brak informacji o szwagrze (mężu siostry), fragment o krewnych dość zawiły. |\n| Spektor Mordechaj - True (krewni są wzmiankowani, ale bez konkretów) |\n| Stańczakowa ze Strancmanów | True |\n| Stanisław_Cielątko | True (pominięty mąż bratanicy ale czy to w sumie pokrewieństwo?) |\n| Strzelecki Wiesław Marian | True |\n| Świrski Jerzy Włodzimierz | True (ale część ze znalezionych relacji jest niepoprawnego typu, siostrzenica zamiast ciotka, brat zamiast siostra) |\n| Szapira Majer | True |\n| Szapocznikow Alina | **False**, pominięta informacja o 2 mężach |\n| Szczubioł Andrzej | True |\n| Szumski Boksa | **False**, pominięta informacja o przodku - dziad lub pradziad Jakub |\n\nJeśli przeanalizuje się wspólnie dane z powyższych trzech tabel w biogramach znajdują się 223 relacje, model wymienił 182, z tego 38 błędnie, co oznacza 64.5% dokładności (144 prawidłowe). Zupełnie innym pytaniem pozostaje czy i jak uzyskane dane można wykorzystać np. do budowania baz wiedzy.\n\n### Analiza relacji rodzinnych na serii biografii - model GPT4\n\nPoprzednie testy dotyczyły działania modelu GPT-3 ('davinci-003'), nie mam jeszcze dostępu do API z GPT4, ale jakie wyniki mógłby osiągnąć najnowszy model można spróbować ocenić poprzez działanie ChatGPT Plus z włączonym modelem GPT-4. Jeden z problematycznych biogramów: 'Natalii Dzierżek (1861-1931)' dla którego wyszukane zostało 5 relacji z tego 3 błędnie, tym razem został przetworzony całkowicie poprawnie:\n\n- główna bohaterka -\u003e ojciec -\u003e Henryk Dzierżek\n- główna bohaterka -\u003e matka -\u003e Maria z Piątkowskich Nieczuja-Dzierżków\n- główna bohaterka -\u003e wujek (brat matki) -\u003e Henryk Piątkowski\n\nPodobnie poprawił się wynik przetwarzania dla Pelagii Dąbrowskiej (1843-1909), gdzie poprzednio model GPT-3 znalazł tylko dwie i to błędne relacje, obecnie GPT-4 zwraca poprawną listę:\n\n- Główna bohaterka -\u003e ojciec -\u003e Michał Zgliczyński\n- Główna bohaterka -\u003e matka -\u003e Pelagia z Piotrowskich\n- Główna bohaterka -\u003e mąż -\u003e Jarosław Dąbrowski\n- Główna bohaterka -\u003e syn -\u003e trzech synów\n- Główna bohaterka -\u003e ciotka -\u003e Waleria Piotrowska\n- Główna bohaterka -\u003e ciotka -\u003e Ignacja Piotrowska\n- Główna bohaterka -\u003e wuj -\u003e Piotr Falkenhagen-Zaleski.\n\nNiewielkim modyfikacjom uległ użyty prompt:\n\n```\nNa podstawie podanego tekstu wyszukaj wszystkich krewnych lub powinowatych głównej bohaterki/bohatera tekstu: {name}. Możliwe rodzaje pokrewieństwa: ojciec, matka, syn, córka, brat, siostra, żona, mąż, teść, teściowa, dziadek, babcia, wnuk, wnuczka, szwagier, szwagierka, siostrzeniec, siostrzenica, bratanek, bratanica, kuzyn, kuzynka, zięć, synowa.\nWynik wypisz jako listę nienumerowaną w formie: główna bohaterka -\u003e rodzaj pokrewieństwa (kim osoba była dla niej) -\u003e osoba.\nKażda pozycja w osobnej linii. Na przykład:\n- główna bohaterka -\u003e brat -\u003e Jan Kowalski\n- główna bohaterka -\u003e siostra -\u003e Anna\nWypisz tylko rodzaje pokrewieństwa, które występują w tekście.\nJeżeli w tekście nie ma żadnych informacji o pokrewieństwach głównego bohatera/bohaterki napisz: brak danych.\n```\n\nJak wyglądają wyniki dla całej serii 50 biogramów?\n\n| Postać -\u003e rodzaj pokrewieństwa/relacja -\u003e osoba spokrewniona | Prawidłowa? |\n| ------------------------------------------------------------ | :---------: |\n| **Aloe Franciszek Eljasz** | |\n| główny bohater -\u003e ojciec -\u003e Jan Baptysta d'Aloy | True |\n| główny bohater -\u003e matka -\u003e Henryka Rakocy | True |\n| główny bohater -\u003e brat -\u003e Emanuel d'Aloy  | True |\n| główny bohater -\u003e siostry -\u003e piękne siostry Aloe (imię niepodane) | True |\n| **Bartoszewski Jan** | |\n| brak danych | True |\n| **Bezprym** | |\n| główny bohater -\u003e ojciec -\u003e Bolesław Chrobry | True |\n| główny bohater -\u003e matka -\u003e nieznana z imienia Węgierka (być może córka księcia Gejzy) | True |\n| główny bohater -\u003e brat -\u003e Mieszko II  | True |\n| główny bohater -\u003e brat -\u003e Otton | True |\n| **Dąbrowska_Pelagia** | |\n| główna bohaterka -\u003e ojciec -\u003e Michał Zgliczyński | True |\n| główna bohaterka -\u003e matka -\u003e Pelagia z Piotrowskich  | True |\n| główna bohaterka -\u003e mąż -\u003e Jarosław Dąbrowski | True |\n| główna bohaterka -\u003e ciotka -\u003e Waleria Piotrowska | True |\n| główna bohaterka -\u003e ciotka -\u003e Ignacja Piotrowska | True |\n| główna bohaterka -\u003e wuj -\u003e Piotr Falkenhagen-Zaleski | True |\n| główna bohaterka -\u003e syn -\u003e (trzej synowie, imiona nie podane) | True |\n| **Daszyński Ignacy** | |\n| główny bohater -\u003e ojciec -\u003e Ferdynand Daszyński | True |\n| główny bohater -\u003e matka -\u003e Kamila Daszyńska z Mierzeńskich | True |\n| główny bohater -\u003e brat -\u003e Feliks Daszyński | True |\n| główny bohater -\u003e żona (pierwsza) -\u003e Maria Daszyńska z Paszkowskich | True |\n| główny bohater -\u003e żona (druga) -\u003e Cecylia Daszyńska z domu Kempnerówna | True |\n| **Dzierżek_Natalia** | |\n| główna bohaterka -\u003e ojciec -\u003e Henryk Dzierżek | True |\n| główna bohaterka -\u003e matka -\u003e Maria z Piątkowskich Nieczuja-Dzierżków | True |\n| główna bohaterka -\u003e wujek (brat matki) -\u003e Henryk Piątkowski | True |\n| **Eufrozyna** | |\n| główna bohaterka -\u003e ojciec -\u003e Kazimierz, ks. opolski | True |\n| główna bohaterka -\u003e mąż (pierwszy) -\u003e Kazimierz, ks. kujawski | True |\n| główna bohaterka -\u003e syn -\u003e Władysław Łokietek | True |\n| główna bohaterka -\u003e syn -\u003e Kazimierz | True |\n| główna bohaterka -\u003e syn -\u003e Ziemowit | True |\n| główna bohaterka -\u003e mąż (drugi) -\u003e Mszczuj II, ks. pomorski | True |\n| **Ewild al. Eywild** | |\n| główny bohater -\u003e brat -\u003e Eynurem | True |\n| **Ezra ben Nisan** | |\n| główny bohater -\u003e ojciec -\u003e Nisan | True |\n| główny bohater -\u003e córka -\u003e córka Jana Kazimierza (niepodane imię) | **False** |\n| **Falęta** | |\n| brak danych | True |\n| **Fiorentini Władysław** | |\n| główny bohater -\u003e ojciec -\u003e Antoni | True |\n| główny bohater -\u003e dziadek -\u003e Franciszek | True |\n| główny bohater -\u003e żona -\u003e Anna | True |\n| główny bohater -\u003e teść -\u003e Bazyle Popow | True |\n| główny bohater -\u003e teściowa -\u003e Bogumiła z Gizbertów | True |\n| **Fuzorius Bartłomiej** | |\n| główny bohater -\u003e ojciec -\u003e Stanisław Lwowczyk | True |\n| **Gliński Iwan** | |\n| główny bohater -\u003e ojciec -\u003e Lew Borysowicz | True |\n| główny bohater -\u003e brat -\u003e Michał | True |\n| główny bohater -\u003e brat -\u003e Wasyl | True |\n| główny bohater -\u003e bratanica -\u003e Helena | True |\n| **Gołaski Jan** | |\n| brak danych | True\n| **Grzegorzewski Jan** | |\n| główny bohater -\u003e ojciec -\u003e Jakub Grzegorzewski | True |\n| główny bohater -\u003e matka -\u003e Anna Grzegorzewska z domu Zaleska | True |\n| **Guicciardini Galeazzo** | |\n| główny bohater -\u003e brat -\u003e nieznane imię | True |\n| **Hincza z Rogowa** | |\n| główny bohater -\u003e ojciec -\u003e Hinczka z Rogowa | True |\n| główny bohater -\u003e brat -\u003e Jakub | True |\n| główny bohater -\u003e brat -\u003e Henryk | True |\n| główny bohater -\u003e żona -\u003e Dorota z Koziegłowskich | True |\n| główny bohater -\u003e siostra -\u003e Małgorzata | True |\n| **Hirschenfeld-Mielecki Józef** | |\n| brak danych | True |\n| **Jadwiga Jagiellonka** | |\n| główna bohaterka -\u003e ojciec -\u003e Kazimierz Jagiellończyk | True |\n| główna bohaterka -\u003e matka -\u003e Elżbieta Rakuszanka | True |\n| główna bohaterka -\u003e mąż -\u003e Jerzy Bawarski | True |\n| główna bohaterka -\u003e brat -\u003e Władysław Jagiellończyk | True |\n| główna bohaterka -\u003e brat -\u003e Aleksander Jagiellończyk | True |\n| główna bohaterka -\u003e brat -\u003e Zygmunt I Jagiellończyk | True |\n| główna bohaterka -\u003e córka -\u003e Elżbieta | True |\n| główna bohaterka -\u003e córka -\u003e Małgorzata | True |\n| główna bohaterka -\u003e wnuk -\u003e Ruprecht hr. Palatynatu | **False** |\n| brak -\u003e syn -\u003e Ludwik | **False** |\n| brak -\u003e syn -\u003e Ruprecht | **False** |\n| brak -\u003e wnuk -\u003e (niewymieniony z imienia) | **False** |\n| **Kakowski Aleksander** | |\n| łówny bohater -\u003e ojciec -\u003e Franciszek Kakowski | True |\n| główny bohater -\u003e matka -\u003e Paulina Kakowska z domu Ossowska | True |\n| **Krumhausen Gabriel** | |\n| główny bohater -\u003e ojciec -\u003e Joachim Krumhausen | True |\n| główny bohater -\u003e matka -\u003e Gertruda Krumhausen z domu Schumann | True |\n| główny bohater -\u003e żona -\u003e Konstancja Krumhausen z domu Falcke  | True |\n| główny bohater -\u003e dziadek (po kądzieli) -\u003e Stanisław Bornbach | True |\n| główny bohater -\u003e brat -\u003e Joachim Krumhausen | True |\n| **Łańcucki Wojciech** | |\n| główny bohater -\u003e ojciec -\u003e Stanisław | True |\n| **Langfort Teodor Henryk** | |\n| brak danych | True\n| **Leymiter Stanisław** | |\n| główny bohater -\u003e ojciec -\u003e Mikołaj | True |\n| główny bohater -\u003e matka -\u003e Benigna | True |\n| główny bohater -\u003e żona -\u003e Zofia | True |\n| główny bohater -\u003e teść -\u003e Jan Tesznar | True |\n| główny bohater -\u003e syn -\u003e Jan | True |\n| główny bohater -\u003e syn -\u003e Stanisław | True |\n| główny bohater -\u003e córka -\u003e Barbara | True |\n| główny bohater -\u003e córka -\u003e Benigna | True |\n| główny bohater -\u003e szwagier -\u003e Jan Wierzyniek | True |\n| główny bohater -\u003e szwagier -\u003e Mikołaj Kreidler | True |\n| brak -\u003e szwagierka -\u003e Agnieszka | **False** |\n| brak -\u003e szwagierka -\u003e Katarzynę | **False** |\n| brak -\u003e szwagierka -\u003e Jan Tesznar | **False** |\n| brak -\u003e brat -\u003e Mikołaj Leymiter | **False** |\n| brak -\u003e zięć -\u003e Wincenty Beck | **False** |\n| brak -\u003e zięć -\u003e Jan Tretkop | **False** |\n| **Mierzeński Aleksander** | |\n| główny bohater -\u003e ojciec -\u003e Abraham | True |\n| główny bohater -\u003e matka -\u003e Elżbieta Morsztynówna | True |\n| główny bohater -\u003e brat -\u003e Jan Mierzeński | True |\n| główny bohater -\u003e brat -\u003e Samuel Mierzeński | True |\n| główny bohater -\u003e brat -\u003e Krzysztof Mierzeński | True |\n| główny bohater -\u003e brat -\u003e Daniel Mierzeński | True |\n| **Mostowska z Bujwidów** | |\n| Mostowska z Bujwidów Zofia -\u003e ojciec -\u003e Odo Bujwida | True |\n| Mostowska z Bujwidów Zofia -\u003e matka -\u003e Kazimiera z Klimontowiczów | True |\n| Mostowska z Bujwidów Zofia -\u003e siostra -\u003e Kazimiera Rouppertowa | True |\n| Mostowska z Bujwidów Zofia -\u003e siostra -\u003e Jadwiga Demelowa | True |\n| Mostowska z Bujwidów Zofia -\u003e siostra -\u003e Helena Jurgielewiczowa | True |\n| Mostowska z Bujwidów Zofia -\u003e mąż -\u003e Włodzimierz Mostowski | True |\n| Mostowska z Bujwidów Zofia -\u003e syn -\u003e Jerzy Mostowski | True |\n| Mostowska z Bujwidów Zofia -\u003e syn -\u003e Czesław Mostowski | True |\n| **Patruus** | |\n| główny bohater -\u003e ojciec -\u003e Jan «ojciec» (zm. 1538) | **False** |\n| główny bohater -\u003e syn -\u003e Jan | True |\n| główny bohater -\u003e żona -\u003e nieznana | True |\n| **Pichgiel** | |\n| główny bohater -\u003e stryj -\u003e Matthias Pichel | True |\n| główny bohater -\u003e kuzyn -\u003e Matthias Pichgiel młodszy | True |\n| główny bohater -\u003e syn -\u003e Christian Pichgiel młodszy | True |\n| główny bohater -\u003e żona -\u003e Barbara z domu Biettin | True |\n| główny bohater -\u003e syn -\u003e Christian | True (dublet) |\n| główny bohater -\u003e syn -\u003e Johan | True |\n| główny bohater -\u003e syn -\u003e Daniel | True |\n| główny bohater -\u003e syn -\u003e Emanuel | True |\n| **Pion Maurice** | |\n| główny bohater -\u003e ojciec -\u003e Antoine Claude | True |\n| główny bohater -\u003e matka -\u003e Anne z domu Pauli | True |\n| główny bohater -\u003e żona -\u003e Aleksandra Antonina z Budzyńskich | True |\n| główny bohater -\u003e córka -\u003e Adela | True |\n| główny bohater -\u003e syn -\u003e Adolf Stanisław | True |\n| główny bohater -\u003e syn -\u003e Władysław Stanisław | True |\n| główny bohater -\u003e córka -\u003e Kornelia, zamężna Quattrini | True |\n| główny bohater -\u003e siostra -\u003e Eugenia, zamężna Koss | True |\n| **Piotrowiczowa z Rogolińskich** | |\n| główna bohaterka -\u003e ojciec -\u003e Zygmunt Rogoliński | True |\n| główna bohaterka -\u003e matka -\u003e Ansberty z Badeńskich | True |\n| główna bohaterka -\u003e mąż -\u003e Konstanty Piotrowicz | True |\n| **Popiel** | |\n| główny bohater -\u003e syn -\u003e dwóch synów (ich imion nie podano) | True |\n| **Renard Benedykt** | |\n| główny bohater -\u003e ojciec -\u003e Andrzej | True |\n| główny bohater -\u003e brat -\u003e Jan Baptysta | True |\n| główny bohater -\u003e siostra -\u003e Anna Katarzyna (Anna Orzelska) | True ? |\n| **Rossi Piotr** | |\n| główny bohater -\u003e ojciec -\u003e Andrzej | True |\n| główny bohater -\u003e żona -\u003e Małgorzata (córka Józefa Baltazary) | True |\n| główny bohater -\u003e syn -\u003e Andrzej (ur. 1790) | True |\n| główny bohater -\u003e syn -\u003e Kornel (ur. 1791) | True |\n| główny bohater -\u003e syn -\u003e Klemens (ur. 1794) | True |\n| główny bohater -\u003e córka -\u003e Izabella (ur. 1792) | True |\n| główny bohater -\u003e córka -\u003e Feliksa (ur. 1793) | True |\n| brak -\u003e teść -\u003e Józef Baltazary | **False** |\n| **Sapieha_Jan_Fryderyk** | |\n| główny bohater -\u003e dziadek -\u003e Mikołaj (wojewoda witebski) | True |\n| główny bohater -\u003e ojciec -\u003e Fryderyk (podkomorzy włodzimierski) | True |\n| główny bohater -\u003e matka -\u003e Ewa ze Skaszewskich | True |\n| główny bohater -\u003e brat -\u003e Tomasz Kazimierz (oboźny litewski) | True |\n| główny bohater -\u003e brat -\u003e Aleksander Kazimierz (biskup wileński) | True |\n| główny bohater -\u003e brat -\u003e Krzysztof Franciszek (krajczy litewski) | True |\n| główny bohater -\u003e kuzyn -\u003e Kazimierz Leon Sapieha | True |\n| główny bohater -\u003e żona -\u003e Konstancja | True |\n| główny bohater -\u003e córka -\u003e Ludwika Konstancja (żona ks. Konstantego Szujskiego, pisarza wielkiego litewskiego) | True |\n| główny bohater -\u003e syn -\u003e Mikołaj Leon (wojewoda bracławski) | True |\n| główny bohater -\u003e syn -\u003e Kazimierz Władysław (wojewoda trocki) | True |\n| główny bohater -\u003e syn -\u003e Paweł Franciszek (biskup żmudzki) | True |\n| brak -\u003e brata stryjecznego -\u003e Jana Ferdynanda | **False** |\n| **Siemowit** | |\n| Siemowit -\u003e ojciec -\u003e Piast | True |\n| Siemowit -\u003e matka -\u003e Rzepicha (Rzepka) | True |\n| Siemowit -\u003e syn -\u003e Lestik (Lestek) | True |\n| Siemowit -\u003e wnuk -\u003e Siemomysł | True |\n| Siemowit -\u003e prawnuk -\u003e Mieszko I | True |\n| **Śląska Aleksandra** | |\n| Aleksandra Śląska -\u003e ojciec -\u003e Edmund Wąsik | True |\n| Aleksandra Śląska -\u003e matka -\u003e Helena Wąsik (z domu Masłowska) | True |\n| Aleksandra Śląska -\u003e siostra przyrodnia -\u003e Bożena Jewasińska (Naturska) | True |\n| Aleksandra Śląska -\u003e brat -\u003e Olgierd Edmund Wąsik | True |\n| Aleksandra Śląska -\u003e krewne -\u003e Eugenia Deutsch (z domu Taczanowska) | True |\n| Aleksandra Śląska -\u003e mąż (1) -\u003e Czesław Michał Górski | True |\n| Aleksandra Śląska -\u003e syn -\u003e Szczęsny Tadeusz Górski | True |\n| Aleksandra Śląska -\u003e mąż (2) -\u003e Janusz Warmiński | True |\n| **Słowicki Józef** | |\n| Słowicki Józef -\u003e ojciec -\u003e Józef Słowicki | True |\n| **Śniadecka Kornelia Ludwika**\n| główna bohaterka -\u003e ojciec -\u003e Jędrzej Śniadecki | True |\n| główna bohaterka -\u003e matka -\u003e Konstancja z Mikułowskich | True |\n| główna bohaterka -\u003e siostra -\u003e Zofia Balińska | True |\n| główna bohaterka -\u003e brat -\u003e Józef Konstanty Śniadecki | True |\n| główna bohaterka -\u003e szwagier -\u003e Michał Baliński | True |\n| główna bohaterka -\u003e bratanek -\u003e Jan Śniadecki | **False** |\n| główna bohaterka -\u003e szwagierka -\u003e Antonina Śniadecka | True |\n| główna bohaterka -\u003e teść -\u003e Kazimierz Sulistrowski | **False** |\n| główna bohaterka -\u003e siostrzeniec -\u003e Ignacy Abramowicz | **False** |\n| główna bohaterka -\u003e siostrzeniec -\u003e Mikołaj Abramowicz | **False** |\n| główna bohaterka -\u003e szwagier -\u003e Aleksander Skirmunt | **False** |\n| główna bohaterka -\u003e mąż -\u003e Michał Czajkowski (Mehmed Sadyk) | True |\n| **Spektor Mordechaj** | |\n| główny bohater -\u003e ojciec -\u003e kramarz, chasyd | True |\n| główny bohater -\u003e matka (niewymieniona z imienia) | True |\n| główny bohater -\u003e brat (niewymieniony z imienia) | True |\n| główny bohater -\u003e żona -\u003e Izabela z Frydbergów | True |\n| główny bohater -\u003e syn | **False** |\n| główny bohater -\u003e córka | **False** |\n| **Spycigniew_z_Dąbrowy** | |\n| główny bohater -\u003e syn -\u003e Zawisza | True |\n| główny bohater -\u003e wnuk -\u003e Spycigniew | True |\n| **Stańczakowa ze Strancmanów** | |\n| główna bohaterka -\u003e ojciec -\u003e Adolf Strancman (Franciszek Kotarbiński) | True |\n| główna bohaterka -\u003e matka -\u003e Maria Weinfeld (Helena z Koprowskich Kotarbińska) | True |\n| główna bohaterka -\u003e brat -\u003e Jan | True |\n| główna bohaterka -\u003e mąż -\u003e Zdzisław Stańczak | True |\n| główna bohaterka -\u003e córka -\u003e Anna | True |\n| główna bohaterka -\u003e zięć -\u003e Tadeusz Sobolewski | True |\n| **Stanisław_Cielątko** | |\n| główny bohater -\u003e ojciec -\u003e Jan | True |\n| główny bohater -\u003e brat -\u003e Jan Cielątki z Liszyna i Prusiecka | True |\n| główny bohater -\u003e brat -\u003e Mikołaj | True |\n| główny bohater -\u003e szwagierka -\u003e Anna z Oględowa | True |\n| główny bohater -\u003e siostrzenica -\u003e Małgorzata Marta | **False** |\n| główny bohater -\u003e zięć (Małgorzaty Marty) -\u003e Mikołaj Cikowski | **False** |\n| główny bohater -\u003e teść (Małgorzaty Marty) -\u003e Piotr Cikowski z Mikluszowic | **False** ? |\n| **Strzelecki Wiesław Marian** | |\n| główny bohater -\u003e ojciec -\u003e Felicjan | True |\n| główny bohater -\u003e matka -\u003e Stefania z Łękawskich | True |\n| główny bohater -\u003e żona -\u003e Barbara z Krzemińskich | True |\n| główny bohater -\u003e syn -\u003e Krzysztof | True |\n| **Swach Jerzy** | |\n| główny bohater -\u003e ojciec -\u003e Udalryk (Oldrzych) | True |\n| główny bohater -\u003e matka -\u003e Katarzyna | True |\n| główny bohater -\u003e brat -\u003e Karol Antoni | True |\n| **Świrski Jerzy Włodzimierz** | |\n| główny bohater -\u003e ojciec -\u003e Włodzimierz | True |\n| główny bohater -\u003e matka -\u003e Celina z Wasiłowskich | True |\n| główny bohater -\u003e siostra -\u003e Małgorzata (1. v. Kucharska, 2. v. Łyszkowska) | True |\n| główny bohater -\u003e siostrzeniec -\u003e Maria Konopnicka | **False** |\n| główny bohater -\u003e żona -\u003e pierwsza żona (imię nieznane) | True |\n| główny bohater -\u003e żona -\u003e Maria Wiercińska | True |\n| **Szapira Majer** | |\n| główny bohater -\u003e ojciec -\u003e Jakub Szamszon | True |\n| główny bohater -\u003e matka -\u003e Margula Szor | True |\n| główny bohater -\u003e dziadek -\u003e Samuel Izaak Szor | True |\n| główny bohater -\u003e brat -\u003e Abraham | True |\n| główny bohater -\u003e żona -\u003e Małka Towa | True |\n| **Szapocznikow_Alina** | |\n| główna bohaterka -\u003e ojciec -\u003e Jakub | True |\n| główna bohaterka -\u003e matka -\u003e Regina (Ryfka) z Auerbachów | True |\n| główna bohaterka -\u003e brat -\u003e Mirosław | True |\n| główna bohaterka -\u003e mąż (1) -\u003e Ryszard Stanisławski | True |\n| główna bohaterka -\u003e mąż (2) -\u003e Roman Cieślewicz | True |\n| główna bohaterka -\u003e syn -\u003e Piotr Stanisławski (adoptowany) | True |\n| **Szczubioł_Andrzej** | |\n| główny bohater -\u003e ojciec -\u003e Stefan (Szczepan) z Jasieńca i Ciechomic | True |\n| główny bohater -\u003e matka -\u003e Sędka (imię nieznane) | True |\n| główny bohater -\u003e brat -\u003e Mikołaj z Ciechomic | True |\n| główny bohater -\u003e brat -\u003e Jan z Dłotowa (Dłutowo) | True |\n| główny bohater -\u003e żona (1) -\u003e nieznana | True |\n| główny bohater -\u003e syn (z 1. małżeństwa) -\u003e Maciej | True |\n| główny bohater -\u003e syn (z 1. małżeństwa) -\u003e Szymon zwany Gostyńskim z Ciechomic | True |\n| główny bohater -\u003e żona (2) -\u003e Anna | True |\n| główny bohater -\u003e syn (z 2. małżeństwa) -\u003e Andrzej | True |\n| główny bohater -\u003e synowa -\u003e Anna, córka Ścibora z Sąchocina | **False** |\n| **Sztaffel Izrael** | |\n| brak danych | True |\n| **Szumski Boksa** | |\n| główny bohater -\u003e dziadek lub pradziadek -\u003e Jakub | True |\n| główny bohater -\u003e prawdopodobny ojciec -\u003e Krzesław z Szumska | True |\n| główny bohater -\u003e brat -\u003e Jan (Jaszek) Rej z Nagłowic | True |\n| główny bohater -\u003e żona -\u003e Stachna h. Poraj | True |\n| główny bohater -\u003e syn -\u003e Jan Rey | True |\n| główny bohater -\u003e bratanek -\u003e Jan Rey | True |\n| główny bohater -\u003e bratanek -\u003e Stogniew | True |\n| brak -\u003e dziad -\u003e Jakub | **False** |\n| brak -\u003e synowa -\u003e Prakseda | **False** |\n| brak -\u003e szwgier -\u003e Chociemir Garnek (Garnysz) z Pojałowic i Suchcic | **False** |\n| brak -\u003e szwagierka -\u003e Świątka | **False** |\n\nW analizowanych biogramach znajdują się w sumie 245 relacje lub braki relacji (gdy w treści biogramu nie ma informacji o krewnych i powinowatych, w poprzedniej analizie z uzyciem GPT-3 nie zauważyłem kilku relacji), z tego model GPT-4  **215** określił poprawnie - czyli osiągnął **88%** poprawności. Przyjmując bardziej typowe miary, liczba poprawnie odnalezionch relacji to 208, wszystkich znalezionych relacji 229, wszystkich rzeczywiście występujących w biogramach relacji - 235, co dawałoby wartość precision = 0.9, recall = 0.88 i f1 = 0.889.\n\nTo wyraźnie lepszy wynik niż poprzedni osiągnięty przez GPT3 (model 'davinci-003'), ale też zgodny z oczekiwaniem, skoro wg raportu technicznego OpenAI na temat GPT4 (https://arxiv.org/abs/2303.08774), nowy model jest o 29% lepszy w unikaniu 'closed domain hallucinations' czyli wymyślania nieprawdziwych informacji, mimo instrukcji że informacje mają pochodzić tylko z podanego kontekstu, np. analizowanego artykułu.\n\nDla niektórych biogramów np. 'Śniadecka Kornelia Ludwika' , 'Leymiter Stanisław' czy 'Stanisław Cielątko' błędy są liczne, być może wynika to z długości i zawiłości zdań. Być może ma na to wpływ konstrukcja zadania - oczekiwane są informacje o relacjach rodzinnych głównego bohatera, jeżeli są one podane nie wprost, np. 'Siostrą żony Jana Kowalskiego była Amelia...' wymaga to przekształcenia podanej informacji do wymaganej formy -\u003e 'szwagierka'.\n\nNadal pewnym problemem jest niedeterministyczny charakter dużych modeli językowych, ten sam prompt uruchamiany wielokrotnie może dawać nieco inne wyniki, nawet o tej samej poprawności, lecz nieco inaczej sformułowane. Mimo zaleconego wprost formatu odpowiedzi w powyższej analizie (główny bohater/ka -\u003e relacja -\u003e osoba) zdarzało się, że model zwracał albo sformułowanie \"główny bohater/ka\" albo podawał w tym miejscu rzeczywiste imie i nazwisko głównego bohatera. Zdarzało się także, że zwracane były relacje rodzinne innych osób występujących w tekście. Wynik nie jest więc zawsze gotowym do dalszych analiz produktem, wymaga przetworzenia i uspójnienia.\n\n### Przetwarzanie hasła SHG do formatu XML - GPT4\n\nTest automatycznego przetwarzania fragmentu Słownika Historyczno-Geograficznego (hasło [Balice](http://www.slownik.ihpan.edu.pl/search.php?id=2348), część punktu 3) za pomocą modelu GPT4 (przez API, parametr temperature = 0) do formatu XML. Użyty prompt:\n\n```\nPrzetwórz proszę poniższy tekst zawierający regesty na plik XML. Regest zaczyna się\nod daty np. 1245 lub zakresu dat 1245-56 lub daty przybliżonej np. a. 1456, po\nktórej następuje treść regestu, a po niej - w nawiasie - źródło informacji. Po\nnawiasie pojawia się średnik oddzielający regesty. Jeżeli nie ma daty na początku,\noznacza to, że data jest taka sama jak w poprzednim regeście. W treści regestu\noznacz występujące w niej osoby tagiem \u003cpersName\u003e, miejsca tagiem \u003cplaceName\u003e,\nnazwy geograficzne tagiem \u003cgeogName\u003e zaś nazwy urzędów zawodów lub funkcji\ntagiem \u003coccupation\u003e. Pamiętaj, że jednoliterowe skróty, takie jak 'B.', oznaczają\nmiejscowość, której dotyczą regesty. Osoby pojawiające się w treści regestu to\npostacie średniowieczne, które nie miały nazwisk za to dopisywały do imienia\nmiejscowość z której pochodzą np. Jan z Grzędowa, w takich przypadkach oznacz\nosobę tagiem \u003cpersName\u003e z miejscowością włącznie.\n\nPrzykład regestu:\na. 1396 kaszt. wiśl. Jaśko za zasługi przy chrystianizacji Litwy dostał od\nWładysława Jag. m. Wojsław [nie zid.] i kilka wsi w ziemi krak. w tym wieś Grzędy\nw pow. sand., którą sprzedał Krzesławowi z Wolicy. Synem Jaśka był Jan z B.\n(J. Ossoliński, Pamiętnik 1595-1621, Wr. 1952, s. 4);\n\nPrzykład wyniku:\n\u003cs type=\"regest\"\u003e\n\u003cdate\u003ea. 1396\u003c/date\u003e\n\u003ccontent\u003e\u003coccupation\u003ekaszt. wiśl.\u003c/occupation\u003e \u003cpersName\u003eJaśko\u003c/persName\u003e\nza zasługi przy chrystianizacji \u003cgeogName\u003eLitwy\u003c/geogName\u003e dostał od\n\u003cpersName\u003eWładysława Jag.\u003c/persName\u003e m. \u003cplaceName\u003eWojsław\u003c/placeName\u003e\n[nie zid.] i kilka wsi w ziemi krak. w tym wieś \u003cplaceNme\u003eGrzędy\u003c/PlaceName\u003e\nw pow. sand., którą sprzedał \u003cpersName\u003eKrzesławowi z Wolicy\u003c/persName\u003e. Synem\n\u003cpersName\u003eJaśka\u003c/persName\u003e był \u003cpersName\u003eJan z B.\u003c/persName\u003e\u003c/content\u003e\n\u003cbiblio\u003e(J. Ossoliński, Pamiętnik 1595-1621, Wr. 1952, s. 4)\u003c/biblio\u003e;\n\u003c/s\u003e\n\nPrzykład regestu:\n1467 Albert kmieć z B. (KRK 3 s. 23);\n\nPrzykład wyniku:\n\u003cs type=\"regest\"\u003e\n\u003cdate\u003e1467\u003c/date\u003e\n\u003ccontent\u003e\u003cpersName\u003eAlbert\u003c/persName\u003e \u003coccupation\u003ekmieć\u003c/occupation\u003e z\n\u003cplaceName\u003eB.\u003c/placeName\u003e\u003c/content\u003e\n\u003c/s\u003e\n\nOto tekst do przetworzenia:\n1229 papież Grzegorz IX potwierdza kl. tyn. posiadanie m. in. B. (Tyn. 11b - bulla\ninterpol. w XV w., por. J. Wyrozumski, Państwowa gospodarka solna w Polsce do schyłku\nXIV w., Kr. 1968, s. 25); a. 1286 komes Grzegorz zw. Żegocic dz. B., zabraniał kl.\ndominikanów w Krakowie przeprowadzić wodę z rz. Rudawy przez Krowodrzę, → też p. 6\n(KK 1, 86); 1304-6 komes Andrzej z B. (KK 2, 242; 1, 114 przy tym dok. wisiała jego\npieczęć); 1321, 1351-2, 1363 Grzegorz z B. (AS 2, 7; Mp. 3, 761; Wp. 3, 1495; ZDM 1,\n63; KMK 1, 27); 1366 Jan z B. (ZDM 1, 117); 1367 Betico kmieć z B. (KRK 2 s. 13);\n1387-96 Jan, Jaśko z Goźlic [pow. sand.], B. i Ossolina [pow. sand.], kaszt. wiśl.\n1388-96, wg Długosza zabity przez Grota ze Słupczy [pow. sand.] w sporze o granice\nwsi Dwikozy [pow. sand.] (AGZ 5, 16; AS 2, 61; KK 2, 392, 401; Mp. 4, 1022; ZDM 6,\n1540, 1548, 1584; KUJ 1, 8; AKP 8, 63; Proch. 12; DH 3 s. 552 na s. 372 i 466\nwiadomości odnoszą się do kaszt. wiśl. Mikołaja z Bogorii [pow. sand.], a nie\nz Ossolina; MH 10 s. 148-9; Bon. 1 s. 86); a. 1396 kaszt. wiśl. Jaśko za zasługi\nprzy chrystianizacji Litwy dostał od Władysława Jag. m. Wojsław [nie zid.] i\nkilka wsi w ziemi krak. (J. Ossoliński, Pamiętnik 1595-1621, Wr. 1952, s. 4);\n```\n\nWynik w formie XML:\n\n```XML\n\u003cregests\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1229\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003epapież Grzegorz IX\u003c/persName\u003e potwierdza \u003cplaceName\u003ekl. tyn.\u003c/placeName\u003e\n        posiadanie m. in. \u003cplaceName\u003eB.\u003c/placeName\u003e\u003c/content\u003e\n        \u003cbiblio\u003e(Tyn. 11b - bulla interpol. w XV w., por. J. Wyrozumski, Państwowa gospodarka solna w Polsce do schyłku XIV w., Kr. 1968, s. 25)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003ea. 1286\u003c/date\u003e\n        \u003ccontent\u003e\u003coccupation\u003ekom\u003c/occupation\u003e \u003cpersName\u003eGrzegorz zw. Żegocic\u003c/persName\u003e dz.\n        \u003cplaceName\u003eB.\u003c/placeName\u003e, zabraniał \u003cplaceName\u003ekl. dominikanów\u003c/placeName\u003e w\n        \u003cplaceName\u003eKrakowie\u003c/placeName\u003e przeprowadzić wodę z rz. \u003cgeogName\u003eRudawy\u003c/geogName\u003e przez\n        \u003cplaceName\u003eKrowodrzę\u003c/placeName\u003e, → też p. 6\u003c/content\u003e\n        \u003cbiblio\u003e(KK 1, 86)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1304-6\u003c/date\u003e\n        \u003ccontent\u003e\u003coccupation\u003ekom\u003c/occupation\u003e \u003cpersName\u003eAndrzej z B.\u003c/persName\u003e\u003c/content\u003e\n        \u003cbiblio\u003e(KK 2, 242; 1, 114 przy tym dok. wisiała jego pieczęć)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1321\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eGrzegorz z B.\u003c/persName\u003e\u003c/content\u003e\n        \u003cbiblio\u003e(AS 2, 7; Mp. 3, 761; Wp. 3, 1495; ZDM 1, 63; KMK 1, 27)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1351-2\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eGrzegorz z B.\u003c/persName\u003e\u003c/content\u003e\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1363\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eGrzegorz z B.\u003c/persName\u003e\u003c/content\u003e\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1366\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eJan z B.\u003c/persName\u003e\u003c/content\u003e\n        \u003cbiblio\u003e(ZDM 1, 117)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1367\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eBetico\u003c/persName\u003e \u003coccupation\u003ekmieć\u003c/occupation\u003e z \u003cplaceName\u003eB.\u003c/placeName\u003e\n        \u003c/content\u003e\n        \u003cbiblio\u003e(KRK 2 s. 13)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003e1387-96\u003c/date\u003e\n        \u003ccontent\u003e\u003cpersName\u003eJan\u003c/persName\u003e, \u003cpersName\u003eJaśko z Goźlic\u003c/persName\u003e [pow. sand.],\n        \u003cplaceName\u003eB.\u003c/placeName\u003e i \u003cplaceName\u003eOssolina\u003c/placeName\u003e [pow. sand.],\n        \u003coccupation\u003ekaszt. wiśl.\u003c/occupation\u003e 1388-96, wg \u003cpersName\u003eDługosza\u003c/persName\u003e zabity\n        przez \u003cpersName\u003eGrota ze Słupczy\u003c/persName\u003e [pow. sand.] w sporze o granice wsi\n        \u003cplaceName\u003eDwikozy\u003c/placeName\u003e [pow. sand.]\u003c/content\u003e\n        \u003cbiblio\u003e(AGZ 5, 16; AS 2, 61; KK 2, 392, 401; Mp. 4, 1022; ZDM 6, 1540, 1548, 1584; KUJ 1, 8; AKP 8, 63; Proch. 12; DH 3 s. 552 na s. 372 i 466 wiadomości odnoszą się do kaszt. wiśl. Mikołaja z Bogorii [pow. sand.], a nie z Ossolina; MH 10 s. 148-9; Bon. 1 s. 86)\u003c/biblio\u003e;\n    \u003c/s\u003e\n    \u003cs type=\"regest\"\u003e\n        \u003cdate\u003ea. 1396\u003c/date\u003e\n        \u003ccontent\u003e\u003coccupation\u003ekaszt. wiśl.\u003c/occupation\u003e \u003cpersName\u003eJaśko\u003c/persName\u003e za zasługi\n        przy chrystianizacji \u003cgeogName\u003eLitwy\u003c/geogName\u003e dostał od \u003cpersName\u003eWładysława Jag.\u003c/persName\u003e\n        m. \u003cplaceName\u003eWojsław\u003c/placeName\u003e [nie zid.] i kilka wsi w ziemi krak.\u003c/content\u003e\n        \u003cbiblio\u003e(J. Ossoliński, Pamiętnik 1595-1621, Wr. 1952, s. 4)\u003c/biblio\u003e;\n    \u003c/s\u003e\n\u003c/regests\u003e\n```\n\nTrzeba jednak pamiętać, że kontekst który modele GPT są w stanie przetwarzać jest ograniczony a korzystanie z API kosztuje, można więc rozważyć rozwiązanie hybrydowe. Podzielić na przykład tekst wejściowy ze słownika SHG przy użyciu bardziej konwencjonalnych metod (Python, spaCy, regex itp.) na punkty, podpunkty i regesty, a następnie użyć modelu LLM do otagowania treści samego regestu (bez bibliografii, którą też można obsłużyć prostszymi metodami), dodatkowo model mógłby również określać temat regestu.\n\n### Formatowanie wyników - JSON\n\nW przykładach ekstrakcji informacji z biogramów postaci historycznych wynik prezentowany był w formie listy, wygodniejszą opcją do dalszego przetwarzania byłby jednak wynik w formacie JSON. Model GPT jest oczywiście w stanie to zrobić. Modyfikacja promptu polega na zastąpieniu fragmentu opisującego format wyniku w formie listy przez tekst:\n\n```TXT\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nrelacja: rodzaj pokrewieństwa (kim osoba była dla bohatera/bohaterki )\nosoba: nazwa (imię i nazwisko osoby związanej relacją z bohaterem)\n```\n\na także podaniu nowego przykładowego wyniku:\n\n```TXT\nPrzykład: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Jego bratanicą była Małgorzata Anna, żona\nWinfrida de Loeve. S. ożenił się z Joanną, córką burgrabiego\nkrakowskiego Adama Kurozwęckiego.\"\nWynik:\n```\n```JSON\n[{\"relacja\":\"ojciec\", \"osoba\":\"Niccola\"},\n {\"relacja\":\"matka\", \"osoba\":\"Annalena Ricasoli\"},\n {\"relacja\":\"brat\", \"osoba\":\"Bernard\"},\n {\"relacja\":\"bratanica\", \"osoba\":\"Małgorzata Anna\"},\n {\"relacja\":\"żona\", \"osoba\":\"Joanna\"},\n {\"relacja\":\"teść\", \"osoba\":\"Adam Kurozwęcki\"}\n]\n```\n\nskrypt przetwarza biogram, np. Jadwigi Jagiellonki, zwracając wynik w formacie JSON, ułatwiając późniejsze automatyczne przetwarzanie, porównywanie wyniku z oczekiwanym itp.\n\n```JSON\n[{\"relacja\":\"ojciec\", \"osoba\":\"Kazimierz Jagiellończyk\"},\n {\"relacja\":\"matka\", \"osoba\":\"Elżbieta Rakuszanka\"},\n {\"relacja\":\"mąż\", \"osoba\":\"Jerzy Bawarski\"},\n {\"relacja\":\"syn\", \"osoba\":\"Ludwik\"},\n {\"relacja\":\"syn\", \"osoba\":\"Ruprecht\"},\n {\"relacja\":\"córka\", \"osoba\":\"Elżbieta\"},\n {\"relacja\":\"córka\", \"osoba\":\"Małgorzata\"},\n {\"relacja\":\"brat\", \"osoba\":\"Władysław Jagiellończyk\"},\n {\"relacja\":\"brat\", \"osoba\":\"Aleksander\"},\n {\"relacja\":\"brat\", \"osoba\":\"Zygmunt I\"},\n {\"relacja\":\"teść\", \"osoba\":\"Ludwik Bogaty\"},\n {\"relacja\":\"zięć\", \"osoba\":\"Ruprecht hr. Palatynatu\"}\n]\n ```\n\nA przy okazji, jaki jest koszt przetworzenia biogramu Jadwigi Jagiellonki? Tekst biogramu ma niecałe 5000 znaków (2504 tokeny), zaś odpowiedź to 264 tokeny, cena użycia moelu GPT-4 przez API to 0.03$ za dane wejściowe, 0.06$ za wygenerowaną odpowiedź (ceny za 1 tys. tokenów). W przypadku\nomawianego biogramu przekłada się to obecnie na 0.09$ (czerwiec 2023). Nie jest to więc tani proces.\n\n### Indeterminizm i halucynacje\n\nEkstracja informacji z opracowań i źródeł historycznych wymaga dokładności i poprawności wyników. Model językowy mimo swoich ogromnych możliwości\nw dziedzinie przetwarzania tekstu będzie przygotowywał także błędne odpowiedzi ('halucynacje'), będzie też 'zmieniał zdanie'. Ustawienie parametru uruchomienia modelu 'temperature' na wartość 0 zmniejsza jego twórcze skłonności, co jest efektem pożądanym w przypadku wydobywania wiedzy z tekstu, jednak wynik zapytań do API zwracany przez model GPT-4 nadal może i będzie się nieco różnić przy każdym wywołaniu. LLM są z natury niedeterministyczne (zob. https://platform.openai.com/docs/guides/gpt/faq - punkt: \"Why are model outputs inconsistent?\"). Można ten efekt zaobserwować uruchamiając wielokrotnie to samo zapytanie dotyczące\nrelacji rodzinnych Jadwigi Jagiellonki, które przetwarza ten sam tekst biogramu ([link](https://github.com/pjaskulski/gpt_historical_text/blob/main/src/psb_relacje_rodzinne_biogram.py) do skryptu). Zapytanie (prompt) zostało wzbogacone o przykład danych do przetworzenia i przykład wyniku (few-shot learning). Około 80-90% odpowiedzi pozostaje niezmienna (i poprawna),\njednak pozostała część wyniku zmienia się, czasem są to odpowiedzi poprawne, czasem całkowicie błędne. Wydaje się, na podstawie prostej obserwacji, że zmienność dotyczy trudniejszych do wyodrębnienia realacji typu 'zięć', 'teść', 'wnuk', zaś realcje typu 'ojciec', 'matka', 'mąż', 'córka', 'syn', 'brat' wyszukiwane są\nkonwekwentnie i poprawnie. Być może znaczenie ma sposób formułowania treści w analizowanym biogramie. Im bardziej zawiły, 'literacki' sposób opisu tym większa szansa, że model będzie niepoprawnie interpretował informacje.\n\nWykonano 10 testów na biogramie Jadwigi Jagiellonki, pozyskane informacje były praktycznie za każdym razem inne - przy tej samej zawartości promptu i tekstu wejściowego. Z tego 10 relacji powtarzało się dla każdego testu:\n\n```JSON\n {\"relacja\":\"ojciec\", \"osoba\":\"Kazimierz Jagiellończyk\"},\n {\"relacja\":\"matka\", \"osoba\":\"Elżbieta Rakuszanka\"},\n {\"relacja\":\"mąż\", \"osoba\":\"Jerzy Bawarski\"},\n {\"relacja\":\"syn\", \"osoba\":\"Ludwik\"},\n {\"relacja\":\"syn\", \"osoba\":\"Ruprecht\"},\n {\"relacja\":\"córka\", \"osoba\":\"Elżbieta\"},\n {\"relacja\":\"córka\", \"osoba\":\"Małgorzata\"},\n {\"relacja\":\"brat\", \"osoba\":\"Władysław Jagiellończyk\"},\n {\"relacja\":\"brat\", \"osoba\":\"Aleksander\"},\n {\"relacja\":\"brat\", \"osoba\":\"Zygmunt I\"},\n```\n\nZaś dodatkowo mogły pojawiać się inne relacje, od 1 do 4. W dwóch testach dodatkowych relacji nie było.\n\n```TXT\ntest 1:\n {\"relacja\":\"teść\", \"osoba\":\"Ludwik Bogaty\"} = OK\n {\"relacja\":\"zięć\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = OK\ntest 2:\n {\"relacja\":\"teściowa\", \"osoba\":\"Dorota Koniecpolska\"} = BŁĄÐ\n {\"relacja\":\"zięć\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = OK\n {\"relacja\":\"wnuczka\", \"osoba\":\"Małgorzata\"} = BŁĄÐ\ntest 3:\n {\"relacja\":\"wnuk\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = BŁĄÐ\ntest 4:\n {\"relacja\":\"siostrzeniec\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = BŁĄÐ\n {\"relacja\":\"wnuk\", \"osoba\":\"wnuk Jadwigi Jagiellonki\"} = OK\ntest 5:\n brak dodatkowych relacji (a są trzy, takie jak w teście nr 1 oraz anonimowy wnuk bohaterki biogramu)\ntest 6:\n {\"relacja\":\"zięć\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = OK\n {\"relacja\":\"wnuk\", \"osoba\":\"wnuk Jadwigi Jagiellonki\"} = OK\ntest 7:\n {\"relacja\":\"wnuk\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = BŁĄÐ\ntest 8\n brak dodatkowych relacji (jw)\ntest 9\n {\"relacja\":\"teściowa\", \"osoba\":\"Dorota Koniecpolska\"} = BŁĄÐ\n {\"relacja\":\"zięć\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = OK\n {\"relacja\":\"wnuczka\", \"osoba\":\"Małgorzata\"} = BŁĄÐ\ntest 10:\n {\"relacja\":\"wnuk\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = BŁĄÐ\n {\"relacja\":\"siostrzeniec\", \"osoba\":\"Ruprecht hr. Palatynatu\"} = BŁĄÐ\n {\"relacja\":\"szwagierka\", \"osoba\":\"Anna, księżna wdowa cieszyńska\"} = BŁĄÐ\n {\"relacja\":\"siostrzenica\", \"osoba\":\"Małgorzata, ksieni benedyktynek w Neuburg\"} = BŁĄÐ\n```\n\nJak widać w 6 na 10 testów pojawiają się relacje nieprawdziwe, nie da się ich w żaden sposób uzasadnić zawartością tekstu biogramu, mniej szkodliwy wydaje się kompletny brak odnalezienia istniejących relacji co zdarzyło się w 2 testach.\n\nPonieważ w przypadku ekstrakcji informacji z tekstów zajmujemy się informacjami, których jeszcze nie znamy (nie mamy bazy danych czy grafu wiedzy), trudno byłoby przeprowadzić werfikację faktów inaczej niż manualnie porównując tekst z pozyskanymi przez model danymi. Taki proces jest jednak czasochłonny i zniwelowałby cały zysk z automatyzacji przetwarzania dużej ilości tekstu. Czy rozwiązaniem było by powtarzanie każdego zapytania np. 3 razy i uznawanie powtarzających się odpowiedzi za wiarygodne zaś pozostałych za wymagające weryfikacji - trudno powiedzieć, ale jest przecież możliwe, że konsekwetnie w każdym teście pojawiać będą się informację błędne a więc niewiarygodne. Manualna weryfikacja danych pozyskanych dzięki dużym modelom językowym wydaje się, na dziś, nieunikniona. Może być jednak wspomagana dodatkowymi narzędziami, weryfikującymi strukturę wyników zwróconych przez LLM, czy prawdopodobieństwo pozyskanych faktów (np. wiek osoby powinien mieścić się w zakresie 0-110), nazwy relacji rodzinnych powinny pochodzić z określonego zbioru itp.\n\n### Test modelu Nous-Hermes-13b\n\nWyniki testów modelu Nous-Hermes-13b uruchamianego lokalnie (tylko CPU) na tej samej próbce 50 biogramów, na których testowane były modele GPT-3 i GPT-4 w zakresie ekstrakcji informacji dotyczących relacjach rodzinnych. Badany model (https://huggingface.co/NousResearch/Nous-Hermes-13b) jest dotrenowaną wersją Llama-13b. Ze względu na to, że jest mniejszy od modeli GPT i uruchamiany był lokalnie (co jest dosyć czasochłonne na komputerze bez GPU), przetwarzanie biogramów zostało uproszczone do jednego pytania - o ojca bohatera/bohaterki tekstu.\n\nUżyty prompt:\n\n```TXT\nNa podstawie wyłącznie informacji z podanego tekstu napisz kto był ojcem \u003cperson\u003e.\nWynik zapisz w formacie JSON.\nNa przykład:\nTekst: \"Łukasz Kowalski (1901-1987) ur. w Bogatce z ojca Hieronima i matki Heleny z Kruszyńskich.\"\nWynik: {\"ojciec\": \"Hieronim Kowalski\"}\nTekst: \"Marcin Wielopolski (1700-1776), szlachcic pomorski, ur. w Ustce. Ojcem W. był Antoni, herbu Trójnóg.\"\nWynik: {\"ojciec\": \"Antoni Wielopolski\"}\nTekst: \"Eustachy Wikozy (zm. 1233), pochodzenie nienane, klucznik gnieźnieński.\"\nWynik: {\"ojciec\":\"brak danych\"}\n\nTekst: \u003cdata\u003e\nWynik:\n```\n\nGdzie w miejscu `\u003cperson\u003e` wstawiane było imię i nazwisko bohatera, zaś w miejsce `\u003cdata\u003e`\nuproszczony tekst biogramu. W porównaniu z GPT-4 model  Nous-Hermes-13b może przetworzyć dużo mniejszy rozmiar kontekstu (2048 tokenów), dlatego zarówno treść pytania, przykłady, jak i sam biogram musiały zostać ograniczone. Biogramy w przypadku gdy przekraczały 1700 tokenów były ograniczane do 3 początkowych i 2 końcowych zdań, oraz tych zdań gdzie występowały słowa kluczowe związane z pokrewieństwem, co mogło niestey wpłynąć na efekty działania modelu.\n\nResults:\n\n| Postać / Rezultat | Prawidłowo? |\n| ------------------------------------------------------------ | :---------: |\n| **Aloe Franciszek Eljasz** | |\n| {\"ojciec\": \"Jan Baptysta d’Aloy i Henryka Rakocy\"} | True? |\n| **Bartoszewski Jan** | |\n| \"The father of Jan Bartoszewski is not mentioned in the given text.\" | True |\n| **Bezprym** | |\n| {\"ojciec\": \"Bolesław Chrobry\"} | True |\n| **Dąbrowska_Pelagia** | |\n| {\"ojciec\": \"Michał Zgliczyński\"} | True |\n| **Daszyński Ignacy** | |\n| ...Ignacy Daszyński miał ojca Ferdynanda. | True |\n| **Dzierżek_Natalia** | |\n| {\"ojciec\": \"Henryk Dzierżek\"} | True |\n| **Eufrozyna** | |\n| {\"ojciec\": \"Kazimierz, ks. opolski\"} | True |\n| **Ewild al. Eywild** | |\n| {\"ojciec\": \"Eywild al. Eywild Jan\"} | **False** |\n| **Ezra ben Nisan** | |\n| {\"ojciec\": \"Ezra ben Nisan z Trok, inaczej Ezra Nisanowicz (ok. 1596–1666)\"} | **False** |\n| **Falęta** | |\n| {\"ojciec\": \"brak danych\"} | True |\n| **Fiorentini Władysław** | |\n| {\"ojciec\": \"Antoni Fiorentini\"} | True |\n| **Fuzorius Bartłomiej** | |\n| {\"ojciec\": \"Stanisław Lwowczyk\"} | True |\n| **Gliński Iwan** | |\n| {\"ojciec\": \"Lew Borysowicz\"} | True |\n| **Gołaski Jan** | |\n| {\"ojciec\": \"Jan Gołaski\"} | **False** |\n| **Grzegorzewski Jan** | |\n| {\"ojciec\": \"Jakub\"} | True |\n| **Guicciardini Galeazzo** | |\n| {\"ojciec\": \"Guicciardini Galeazzo\"} | **False** |\n| **Hincza z Rogowa** | |\n| {\"ojciec\": \"Hinczka z Rogowa (zm. przed 1415)\"} | True |\n| **Hirschenfeld-Mielecki Józef** | |\n| {\"ojciec\": \"brak danych\"} | True |\n| **Jadwiga Jagiellonka** | |\n| {\"ojciec\": \"Kazimierz Jagiellończyk\"} | True |\n| **Kakowski Aleksander** | |\n| {\"ojciec\": \"Franciszek Kakowski\"} | True |\n| **Krumhausen Gabriel** | |\n| {\"ojciec\": \"Joachim Krumhausen\"} | True |\n| **Łańcucki Wojciech** | |\n| {\"ojciec\": \"Stanisław Łańcucki\"} | True |\n| **Langfort Teodor Henryk** | |\n| {\"ojciec\": \"brak danych\"} | True |\n| **Leymiter Stanisław** | |\n| {\"ojciec\": \"Mikołaj Leymiter\"} | True |\n| **Mierzeński Aleksander** | |\n| {\"ojciec\": \"Abraham Mierzeński\"} | True |\n| **Mostowska z Bujwidów** | |\n| {\"ojciec\": \"Odo Bujwid, prof. bakteriologii UJ\"} | True |\n| **Patruus** | |\n| {\"ojciec\": \"Jan Patruus\"} | **False** |\n| **Pichgiel** | |\n| {\"ojciec\": \"Christian Pichgiel młodszy\"} | **False** |\n| **Pion Maurice** | |\n| {\"ojciec\": \"Antoine Claude Pion\"} | True |\n| **Piotrowiczowa z Rogolińskich** | |\n| {\"ojciec\": \"Zygmunt Rogoliński\"} | True |\n| **Popiel** | |\n| {\"ojciec\": \"Popiel\"} | **False** |\n| **Renard Benedykt** | |\n| {\"ojciec\": \"\"} | True |\n| **Rossi Piotr** | |\n| {\"ojciec\": \"Andrzej Rossi\"} | True |\n| **Sapieha_Jan_Fryderyk** | |\n|  ...ojcem Jan Fryderyk Sapieha był Fryderyk | True |\n| **Siemowit** | |\n| The prompt asks to determine who was the father of Siemowit.. | **False** |\n| **Śląska Aleksandra** | |\n| {\"ojciec\": \"Edmund Wąsik\"} | True |\n| **Słowicki Józef** | |\n| {\"ojciec\": \"Józef Słowicki\"} | True |\n| **Śniadecka Kornelia Ludwika**\n| {\"ojciec\": \"Jędrzej Śniadecki\"} | True |\n| **Spektor Mordechaj** | |\n| {\"ojciec\": \"Mordechaj Spektor\"} | **False** |\n| **Spycigniew_z_Dąbrowy** | |\n| {\"ojciec\": \"brak danych\"} | True |\n| **Stańczakowa ze Strancmanów** | |\n| {\"ojciec\": \"Adolf Strancman\"} | True |\n| **Stanisław_Cielątko** | |\n| {\"ojciec\": \"Jan Cielątko\"} | True |\n| **Strzelecki Wiesław Marian** | |\n| {\"ojciec\": \"Felicjan Strzelecki\"} | True |\n| **Swach Jerzy** | |\n| {\"ojciec\": \"Udalryk (Oldrzycha) Swach\"} | True |\n| **Świrski Jerzy Włodzimierz** | |\n| {\"ojciec\": \"Włodzimierz Świrski\"} | True |\n| **Szapira Majer** | |\n| {\"ojciec\": \"Jakub Szamszon (1861–1948)\"} | True |\n| **Szapocznikow_Alina** | |\n| The father of Alina Szapocznikow is Jakub Szapocznik (1896-1938) | True |\n| **Szczubioł_Andrzej** | |\n| {\"ojciec\": \"Stefan Szczubioł z Jasieńca i Ciechomic\"} | True |\n| **Sztaffel Izrael** | |\n| {\"ojciec\": \"Izrael Abraham Sztaffel\"} | **False** |\n| **Szumski Boksa** | |\n| {\"ojciec\": \"brak danych\"} | True? |\n\nW 2 wątpliwych przypadkach do wyniku True/False dodano znak zapytania (raz model zwrócił i ojca i matkę, za drugim razem brak danych, tymczasem biogram wspomina o prawdopodobnym ojcu). **Efekt pracy modelu to 40/50 poprawnych odpowiedzi czyli 80% dokładności**, co wydaje się bardzo dobrym wynikiem. Porównując go jednak z osiągnięciami GPT-4, jeżeli spojrzeć tylko na wyniki dotyczące kategorii 'ojciec' to najlepszy obecnie model językowy popełnił tylko 1 błąd (98%) a sama relacja 'bohater-\u003eojciec' wydaje się jedną z najprostszych do uzyskania. Mimo wszystko jednak, Nous-Hermes-13b jest wielokrotnie mniejszym i prostszym modelem, jest dostępny za darmo do użytku niekomercyjnego, można go uruchomić na zwykłym laptopie bez GPU (ale z 16GB RAM i będzie to działać bardzo powoli), lecz co najważniejsze **przetwarzane są teksty w języku polskim**!\n\nInne uwagi:\n\n- model ma niekiedy problem ze zwracaniem wyniku w oczekiwanym formacie,\n- czas oczekiwania na wynik, mimo skrócenia biogramów to 2-7 minut na biogram,\n- jest bardzo wrażliwy na kształt i treść promptu, niewielka zmiana potrafiła znacznie pogorszyć wynik\n\n### Weryfikacja wyników zwracanych przez LLM - guardrails\n\nWyniki zwracane przez LLM są zmienne, nie zawsze we właściwym oczekiwanym formacie, nie zawsze prawdziwe, nawet w przypadku przekazania wysokiej jakości treści do kontekstu zapytania. Wymagają więc weryfikacji przed dalszym użyciem, na przykład zapisaniem w bazie wiedzy. Aby ułatwić tą procedurę można skorzystać z [guardrails](https://shreyar.github.io/guardrails/) - gotowej biblioteki języka Python, która ułatwia weryfikację zarówno struktury odpowiedzi, jak i w pewnym stopniu weryfikację faktów.\n\nBiblioteka guardrails posługuje się specyfikacjami zapisanymi w formie plików xml w standardzie RAIL (Reliable AI markup Language), w którym opisana jest struktura oczekiwanego wyniku, format pól wyniku, opcjonalne walidacje, prompt.\n\nPrzykładowy plik RAIL dla zapytania zwracającego podstawowe dane bohatera/bohaterki biogramu wygląda następująco:\n\n```XML\n\u003crail version=\"0.1\"\u003e\n\n\u003coutput\u003e\n    \u003cobject name=\"person_info\"\u003e\n        \u003cstring name=\"place_of_birth\" description=\"Miejsce urodzenia bohatera/bohaterki biogramu\" /\u003e\n        \u003cstring name=\"place_of_death\" description=\"Miejsce śmierci bohatera/bohaterki biogramu\" /\u003e\n        \u003cstring name=\"place_of_burial\" description=\"Miejsce pochówku bohatera/bohaterki biogramu \" /\u003e\n        \u003cdate name=\"date_of_birth\" description=\"Data urodzenia bohatera/bohaterki biogramu\" date_format='%Y-%m-%d'/\u003e\n        \u003cdate name=\"date_of_death\" description=\"Data śmierci bohatera/bohaterki biogramu\" date_format='%Y-%m-%d'/\u003e\n        \u003cdate name=\"date_of_burial\" description=\"Data pochówku bohatera/bohaterki biogramu\" date_format='%Y-%m-%d'/\u003e\n    \u003c/object\u003e\n\u003c/output\u003e\n\n\u003cprompt\u003e\nNa podstawie podanego tekstu biografii wyszukaj miejsce urodzenia, miejsce śmierci i miejsce pochówku głównego bohatera/bohaterki.\nPodaj także datę urodzenia i datę śmierci oraz datę pochówku.\n\nTekst: {{document}}\n\n@xml_prefix_prompt\n\n{output_schema}\n\n@json_suffix_prompt\n\u003c/prompt\u003e\n\u003c/rail\u003e\n```\n\nPoniżej prosty program korzystający z biblioteki guardrails i specyfikacji RAIL zapisanej w pliku person_basic.xml:\n\n```Python\n\"\"\" guardrails - podstawowe informacje o postaci z biogramu  \"\"\"\nimport os\nfrom pathlib import Path\nimport guardrails as gd\nimport openai\nfrom dotenv import load_dotenv\n\n\n# api key\nenv_path = Path(\".\") / \".env\"\nload_dotenv(dotenv_path=env_path)\n\nOPENAI_ORG_ID = os.environ.get('OPENAI_ORG_ID')\nOPENAI_API_KEY = os.environ.get('OPENAI_API_KEY')\n\nopenai.api_key = OPENAI_API_KEY\n\n# biogram\nfile_path = Path(\".\") / 'Szpręga Teodor.txt'\nwith open(file_path, 'r',encoding='utf-8') as f:\n    content = f.read()\n\n# create a Guard object\nrail_spec_path = Path(\".\") / 'person_basic.xml'\nguard = gd.Guard.from_rail(rail_spec_path)\n\nraw_llm_output, validated_output = guard(\n    openai.ChatCompletion.create,\n    prompt_params={\"document\": content},\n    max_tokens=800,\n    model=\"gpt-3.5-turbo-16k\",\n    temperature=0\n)\n\n# result\nprint(validated_output)\n```\n\nWynik działania skryptu:\n\n```JSON\n{\n  \"person_info\": {\n    \"place_of_birth\": \"Czersk\",\n    \"place_of_death\": \"Osieczna\",\n    \"place_of_burial\": \"Osieczna\",\n    \"date_of_birth\": \"1833-11-01\",\n    \"date_of_death\": \"1911-07-26\",\n    \"date_of_burial\": null\n  }\n}\n```\n\n### Przykład ekstrakcji informacji z biogramu PSB\n\nAnalizowany biogram Teodora Szpręgi pochodzi z 49 tomu PSB wydanego w 2013 roku. Za pomocą modelu GPT-4 spróbowano wydobyć z tekstu biogramu wszystkie informacje niezbędne do przygotowania danych do wprowadzenia do instancji wikibase. W szczególności:\n\n- dane podstawowe: data i miejsce urodzenia, data i miejsce śmierci, data i miejsce pochówku postaci\n- dane o funkcjach, urzędach pełnionych przez postać\n- dane o relacjach rodzinnych\n- dane o instytucjach, z którymi był związany bohater biogramu\n- dane o miejscowościach, z którymi był związany bohater biogramu\n- dane o ważnych dla bohatera biogramu osobach (poza krewnymi)\na także jednozdaniowe streszczenie biogramu, które można wykorzystać jako opis elementu w wikibase\n- pseudonimy, warianty nazwisk i imion bohatera biogramu.\n\nPoniżej lista promptów wraz z wynikami, w przykładach użyto danych fikcyjnej postaci.\n\n**Prompt dla podstawowych danych**:\n\n```TXT\nNa podstawie podanego tekstu biografii wyszukaj miejsce urodzenia, miejsce śmierci i miejsce pochówku głównego bohatera/bohaterki.\nPodaj także datę urodzenia i datę śmierci.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nplace_of_birth: miejsce urodzenia bohatera/bohaterki\nplace_of_death: miejsce śmierci bohatera/bohaterki\nplace_of_burial: miejsce pochówku bohatera/bohaterki\ndate_of_birth: data urodzenia bohatera/bohaterki\ndate_of_death: data śmierci bohatera/bohaterki\ndate_of_burial: data pochówku bohatera/bohaterki\nJeżeli jakiejś informacji brak w podanym tekście napisz: 'brak danych'\n\nPrzykład 1.\nTekst: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Ur. się 1 czerwca, we wsi Andalewo koło Wyszeborga. Jego bratanicą była Małgorzata Anna, żona\nWinfrida de Loeve. S. ożenił się z Joanną, córką burgrabiego\nkrakowskiego Adama Kurozwęckiego. Zmarł w Hurczynianach, pochowano go na miejscowym cmentarzu parafialnym.\"\nWynik:\n[{\"place_of_birth\":\"Andalewo\"},\n {\"place_of_death\":\"Hurczyniany\"},\n {\"place_of_burial\":\"cmentarz parafialny w Hurczynianach\"},\n {\"date_of_birth\":\"1557-06-01\"},\n {\"date_of_death\":\"1591\"},\n {\"date_of_burial\":\"brak danych\"}\n]\n\nTekst: [TEKST_BIOGRAMU]\n```\n\nWynik:\n\n```JSON\n[\n  {\"place_of_birth\":\"Czersk\"},\n  {\"place_of_death\":\"Osieczna\"},\n  {\"place_of_burial\":\"plac przed kościołem w Osiecznej\"},\n  {\"date_of_birth\":\"1833-11-01\"},\n  {\"date_of_death\":\"1911-07-26\"},\n  {\"date_of_burial\":\"brak danych\"}\n]\n```\n\n**Uwaga**: w przypadku tego promptu identyczne wyniki zwracał także model `gpt-3.5-turbo`\n(znacznie tańszy niż GPT-4), jednak dla pozostałych zapytań jakość odpowiedzi modelu gpt-4 była wyraźnie lepsza.\n\n**Prompt dla funkcji i urzędów**:\n\n```TXT\nNa podstawie podanego tekstu biografii wyszukaj wszystkie urzędy i funkcje pełnione przez głównego bohatera/bohaterkę.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nfunction: funkcja, urząd pełnione przez bohatera/bohaterkę\n\nPrzykład 1.\nTekst: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Jego bratanicą była Małgorzata Anna, żona\nWinfrida de Loeve. S. ożenił się z Joanną, córką burgrabiego\nkrakowskiego Adama Kurozwęckiego.\"\nWynik:\n[{\"function\":\"kupiec\"},\n {\"function\":\"bankier\"}\n]\n\nTekst: [TEKST_BIOGRAMU]\n```\n\nWynik:\n\n```JSON\n[\n  {\"role_or_office\":\"reformat\"},\n  {\"role_or_office\":\"misjonarz\"},\n  {\"role_or_office\":\"komisarz generalny w Poznańskiem\"},\n  {\"role_or_office\":\"uczeń w gimnazjum katolickim w Chojnicach\"},\n  {\"role_or_office\":\"zakonnik Zakonu Braci Mniejszych w Prow. Reformatów Niepokalanego Poczęcia NMP\"},\n  {\"role_or_office\":\"student filozofii i teologii w klasztorze w Łąkach\"},\n  {\"role_or_office\":\"kapłan\"},\n  {\"role_or_office\":\"student teologii w Prow. Rekolektów Krzyża Świętego w Westfalii\"},\n  {\"role_or_office\":\"wykładowca historii Kościoła w studium seminaryjnym w Miejskiej Górce\"},\n  {\"role_or_office\":\"wicemagister nowicjatu w Wejherowie\"},\n  {\"role_or_office\":\"kaznodzieja w Wejherowie\"},\n  {\"role_or_office\":\"dyrektor Trzeciego Zakonu w Wejherowie\"},\n  {\"role_or_office\":\"gwardian w Wejherowie\"},\n  {\"role_or_office\":\"gwardian i dyrektor domu księży demerytów w Osiecznej\"},\n  {\"role_or_office\":\"kaznodzieja w Zamartem i Miejskiej Górce\"},\n  {\"role_or_office\":\"misjonarz apostolski\"},\n  {\"role_or_office\":\"kapelan sióstr franciszkanek i ambasady austro-węgierskiej w Stambule\"},\n  {\"role_or_office\":\"wikariusz w Kurzętniku\"},\n  {\"role_or_office\":\"wikariusz w Zblewie\"},\n  {\"role_or_office\":\"wikariusz parafii w Miejskiej Górce\"},\n  {\"role_or_office\":\"duszpasterz w kościele zakonnym na Goruszkach\"},\n  {\"role_or_office\":\"wikariusz parafii w Dubinie\"},\n  {\"role_or_office\":\"zastępca prowincjała\"},\n  {\"role_or_office\":\"komisarz generalny\"},\n  {\"role_or_office\":\"dyrektor domu księży demerytów w Osiecznej\"},\n  {\"role_or_office\":\"zastępca proboszcza parafii w Drzeczkowie\"}\n]\n```\n\n**Uwaga**: wszystkie przygotowane przez model informacje są prawdziwe, raczej nie pominięto żadnej funkcji/urzędu, można zauważyć ewentualne drobne niezręczności - jeżeli bohater zastępował proboszcza to (chyba) nie pełnił funkcji `zastępcy proboszcza`, tylko tymczasowo był proboszczem.\n\n**Prompt dla relacji rodzinnych**:\n\n```TXT\nNa podstawie podanego tekstu wyszukaj wszystkich krewnych lub powinowatych głównego bohatera tekstu: {name}. Możliwe rodzaje pokrewieństwa: ojciec, matka, syn, córka, brat, siostra, żona, mąż, teść, teściowa, dziadek, babcia, wnuk, wnuczka, szwagier, szwagierka, siostrzeniec, siostrzenica, bratanek, bratanica, kuzyn, kuzynka, zięć, synowa.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nfamily relation: rodzaj pokrewieństwa (kim osoba była dla bohatera/bohaterki )\nperson: nazwa (imię i nazwisko osoby związanej relacją z bohaterem)\nWypisz tylko rodzaje pokrewieństwa, które występują w tekście.\nJeżeli w tekście nie ma żadnych informacji o pokrewieństwach głównego bohatera napisz: \"brak danych\".\n\nPrzykład 1\nTekst: \"Soderini Carlo (ok. 1537–1581), kupiec i bankier. Był jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym bratem Bernarda (zob.).\nJego bratanicą była Małgorzata Anna, żona Winfrida de Loeve. S. ożenił się z Joanną, córką burgrabiego krakowskiego Adama Kurozwęckiego.\"\nWynik:\n[{\"family_relation\":\"ojciec\", \"person\":\"Niccola Ricasoli\"},\n {\"family_relation\":\"matka\": \"person\":\"Annalena Ricasoli\"},\n {\"family_relation\":\"brat\": \"person\":\"Bernard\"},\n {\"family_relation\":\"bratanica\": \"person\":\"Małgorzata Anna\"},\n {\"family_relation\":\"żona\": \"person\":\"Joanna\"},\n {\"family_relation\":\"teść\": \"person\":\"Adam Kurozwęcki\"}\n]\n\nTekst: [TEKST_BIOGRAMU]\n```\n\nWynik:\n\n```JSON\n[\n  {\"family_relation\":\"ojciec\", \"person\":\"Ignacy\"},\n  {\"family_relation\":\"matka\", \"person\":\"Katarzyna Sabiniarz\"}\n]\n```\n\n**Uwaga**: to poprawny wynik, wymienione zostały wszystkie relacje rodzinne głównego bohatera biogramu.\n\n**Prompt zwracający instytucje, z którymi był związany bohater biogramu**:\n\n```TXT\nNa podstawie podanego tekstu biografii wyszukaj instytucje związane z głównym bohaterem/bohaterką.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\ninstitution: nazwa instytucji związanej z bohaterem/bohaterką\nplace_of_institution: miejscowość w której położona jest instytucja związana z bohaterem/bohaterką\nMiejscowość podaj w mianowniku.\nJeżeli jakiejś informacji brak w podanym tekście napisz: 'brak danych'\n\nPrzykład 1.\nTekst: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Ur. się 1 czerwca, we wsi Andalewo koło Wyszeborga.\nPracował w Banku Czeskim we Wrocławiu, później zaś praktykował w Izbie Celnej miasta Gdańska.\nZmarł w Hurczynianach, pochowano go na miejscowym cmentarzu parafialnym.\"\nWynik:\n[{\"institution\":\"Bank Czeski\", \"place_of_institution\":\"Wrocław\"},\n {\"institution\":\"Izba Celna\", \"place_of_institution\":\"Gdańsk\"}\n]\n\nTekst: [TEKST_BIOGRAMU]\n```\n\nWynik:\n\n```JSON\n[\n  {\"institution\":\"Gimnazjum katolickie\", \"place_of_institution\":\"Chojnice\"},\n  {\"institution\":\"Zakon Braci Mniejszych\", \"place_of_institution\":\"Wejherowo\"},\n  {\"institution\":\"Klasztor w Łąkach\", \"place_of_institution\":\"Łąki\"},\n  {\"institution\":\"Prowincja Rekolektów Krzyża Świętego\", \"place_of_institution\":\"Westfalia\"},\n  {\"institution\":\"Studium seminaryjne\", \"place_of_institution\":\"Miejska Górka\"},\n  {\"institution\":\"Dom księży demerytów\", \"place_of_institution\":\"Osieczna\"},\n  {\"institution\":\"Klasztor przy kościele NMP (zwanej Draperis)\", \"place_of_institution\":\"Stambuł\"},\n  {\"institution\":\"Kaplica ambasady austro-węgierskiej\", \"place_of_institution\":\"Stambuł\"},\n  {\"institution\":\"Parafia w Kurzętniku\", \"place_of_institution\":\"Kurzętnik\"},\n  {\"institution\":\"Parafia w Zblewie\", \"place_of_institution\":\"Zblewo\"},\n  {\"institution\":\"Parafia w Miejskiej Górce\", \"place_of_institution\":\"Miejska Górka\"},\n  {\"institution\":\"Kościół zakonny na Goruszkach\", \"place_of_institution\":\"Miejska Górka\"},\n  {\"institution\":\"Parafia w Dubinie\", \"place_of_institution\":\"Dubin\"},\n  {\"institution\":\"Parafia w Drzeczkowie\", \"place_of_institution\":\"Drzeczkowo\"}\n]\n```\n\n**Uwagi**: Trudno powiedzieć skąd model wziął \"kaplicę ambasady\", to raczej przykład halucynacji - w tekście jest tylko mowa o tym, że bohater biogramu był kapelanem ambasady austro-węgierskiej.\n\n**Prompt dla miejscowości, związanych z bohaterem/bohaterką biogramu**:\n\n```TXT\nNa podstawie podanego tekstu biografii wyszukaj miejscowości związane z głównym bohaterem/bohaterką.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nplace: nazwa miejscowości związanej z bohaterem/bohaterką\ndate: data, kiedy bohater/bohaterka przebywał w danej miejscowości\nMiejscowość podaj w mianowniku.\nJeżeli jakiejś informacji brak w podanym tekście napisz: 'brak danych'\n\nPrzykład 1.\nTekst: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Ur. się 1 czerwca, we wsi Andalewo koło Wyszeborga.\nPracował w Banku Czeskim we Wrocławiu w latach 1577-78, później zaś, od 1579 roku praktykował w Izbie Celnej miasta Gdańska.\nPod koniec życia zamieszkał w Elblągu w pobliżu portu.\nZmarł w Hurczynianach, pochowano go na miejscowym cmentarzu parafialnym.\"\nWynik:\n[{\"place\":\"Andalewo\", \"date\":\"1557-06-01\"},\n {\"place\":\"Wrocław\", \"date\":\"1577-1578\"},\n {\"place\":\"Gdańsk\", \"date\":\"1579\"},\n {\"place\":\"Elbląg\", \"date\":\"brak danych\"},\n {\"place\":\"Hurczyniany\", \"date\":\"1591\"}\n]\n\nTekst: [TEKST_BIOGRAMU]\n```\n\nWynik:\n\n```JSON\n[\n  {\"place\":\"Czersk\", \"date\":\"1833-11-01\"},\n  {\"place\":\"Chojnice\", \"date\":\"brak danych\"},\n  {\"place\":\"Wejherowo\", \"date\":\"1856-05-05\"},\n  {\"place\":\"Łąki\", \"date\":\"1857-05-06\"},\n  {\"place\":\"Westfalia\", \"date\":\"brak danych\"},\n  {\"place\":\"Miejska Górka\", \"date\":\"1861-09-02\"},\n  {\"place\":\"Osieczna\", \"date\":\"1865-07\"},\n  {\"place\":\"Zamarte\", \"date\":\"1870\"},\n  {\"place\":\"Stambuł\", \"date\":\"1872-05\"},\n  {\"place\":\"Adampol\", \"date\":\"brak danych\"},\n  {\"place\":\"Rzym\", \"date\":\"1881-07-05\"},\n  {\"place\":\"Kurzętnik\", \"date\":\"1884\"},\n  {\"place\":\"Zblewo\", \"date\":\"1885-01\"},\n  {\"place\":\"Goruszki\", \"date\":\"1887-07\"},\n  {\"place\":\"Dubinie\", \"date\":\"1887-09-05\"},\n  {\"place\":\"Poznań\", \"date\":\"brak danych\"},\n  {\"place\":\"Asyż\", \"date\":\"1895-05-16\"},\n  {\"place\":\"Drzeczkowo\", \"date\":\"1900-10-09\"}\n]\n```\n\n**Uwagi**: Nie została uwzględniona miejscowość, w której zmarł bohater biogramu, być może dlatego że wystąpiła też wcześniej, a w zapytaniu nie było jasno określone, że miejscowości mogą wystąpić wielokrotnie z różnymi datami.\n\nJedna z miejscowości na liście pojawia się w odmienionej formie (Dubinie) mimo wyraźnej wskazówki\nw prompcie, by nazwy miejscowości wymienione zostały w mianowniku.\n\nInformacja dotycząca Poznania mówi tylko o wydaniu reguł zakonnych przez bohatera, nie musi to oznaczać, że przebywał on w tym mieście, ten wynik można więc uznać za wątpliwy.\n\nPominięte zostały Wiedeń i Triest przez które bohater podróżował w 1872 roku.\n\n**Prompt zwracający listę ważnych osób dla głównej postaci biogramu**:\n\n```TXT\nNa podstawie podanego tekstu biografii wyszukaj osoby związane z głównym bohaterem/bohaterką, lecz pomiń krewnych i powinowatych.\nWynik przedstaw w formie listy obiektów JSON zawierających pola:\nname: imię i nazwisko osoby związanej z bohaterem/bohaterką\ndate: data, kiedy bohater/bohaterka spotkał/zetknał się z daną osobą\ninfo: dodatkowe informacje o osobie np. funkcja, zawód\nJeżeli jakiejś informacji brak w podanym tekście napisz: 'brak danych'\n\nPrzykład 1.\nTekst: \"Soderini Carlos (ok. 1557–1591), kupiec i bankier.\nBył jednym z pięciu synów Niccola i Annaleny Ricasoli, młodszym\nbratem Bernarda (zob.). Ur. się 1 czerwca, we wsi Andalewo koło Wyszeborga. Od 1567 roku uczył się w szkole wiejskiej\nprowadzonej przez księdza Jana Tokalskiego z Krakowa. Następnie wstąpił na uniwersystet w Królewcu, gdzie zaprzyjaźnił się\nze Zdenkiem Kovacem, synem właściciela banku w Pradze, oraz z Czesławem Dąbkiem.\nPracował w Banku Czeskim we Wrocławiu w latach 1577-78, później zaś, od 1579 roku praktykował w Izbie Celnej miasta Gdańska.\nPod koniec życia zamieszkał w Elblągu w pobliż","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjaskulski%2Fgpt_historical_text","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpjaskulski%2Fgpt_historical_text","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjaskulski%2Fgpt_historical_text/lists"}