speakleash / speakleash-instruct-creator

Generate instructions datasets for the fine-tuning purposes.
3 stars 5 forks source link

Fix numbers conversion #84

Open IgorTest19 opened 1 month ago

IgorTest19 commented 1 month ago

ENG: Consider creating an instruction dataset that improves the accuracy of conversions between textual, numerical (Arabic and Roman numerals) notations.

POL: Należy rozważyć utworzenie datasetu instrukcyjnego, który poprawi dokładność konwersji/zmiany liczb między zapisami tekstowymi, numerycznymi (cyfry arabskie i rzymskie).

Example of the main field for the instructions / Przykładowe główne pola dla instrukcji

{
  "instruction": "Why is the EU putting in place a Carbon Border Adjustment Mechanism?",
  "input": "Text on which answer will be based on (if exists) else leave empty string",
  "output": "The EU is at the forefront of international efforts..."
},

It would be beneficial to include any fields with metadata, such as / dodatkowe pole z metadanymi:

"source_name": "The name of the resource used for the dataset creation, if any were used."
"source_url": "The URL of the used source datasets, if any were used."
"source_description": "A short description of the used dataset: what it is about, the purpose of creation, authors."
"script_name": "If the script generating the dataset is reusable and you want to share it with us by committing to our repository."
"status": "If the instruction has been already manually verified, you can set the status as "ok". If not, leave the field as an empty string or None."
"updated_by": "If the instruction has already been manually verified, leave your name/nickname in this field. It will help us to give thanks :)"
"id": "numeric identifier for the dataset entry"
jansowa commented 1 month ago

Myślę, że warto najpierw napisać funkcje, które zmieniają liczby w różnych formach (np. 23 -> XXIII -> dwadzieścia trzy / dwódziesty trzeci), a następnie tworzyć instrukcje syntetycznie. Pole "instruct" zawierałoby np. informacje typu "zmień liczby rzymskie na arabskie w załączonym tekście". Trzeba jeszcze zastanowić się, skąd wziąć teksty.

mrkowalski commented 1 month ago

Gdzie taka funkcja powinna się znaleźć w codebase?

jansowa commented 1 month ago

Możemy utworzyć plik w instructions/automated, który później będzie też odpowiedzialny za utworzenie całego JSON-a z instrukcjami. Ewentualnie jeśli zacznie się za bardzo rozrastać, to same funkcje pomocnicze można dać do nowego pliku w /utils

Tibutti commented 1 month ago

Spróbuje się zmierzyć z tym tematem.

IgorTest19 commented 1 month ago

Marcin Kowalski (Mrkowalski) podjął się tego tematu, lecz nic nie stoi na przeszkodzie, żeby połączyć siły, a nawet jest to wręcz wskazane! :)

jansowa commented 1 month ago

Zastanawiam się nad jeszcze jednym typem instrukcji, które mogłyby podnieść poziom zrozumienia przez model liczb arabskich. Być może dałoby się wygenerować tego trochę syntetycznie. Zamiast prostego konwertowania np. 98->XCVIII można spróbować w "ouput" wpisywać np. wyjaśnienie, dlaczego akurat tak wygląda odpowiedź (wersja arabska).

jansowa commented 1 month ago

Teraz zauważyłem, że Bielik ma też problemy z przerabianiem dat na zapis słowny. Też da się dość prosto syntetycznie wygenerować takie instrukcje.

IgorTest19 commented 1 month ago

Można utworzyć bardziej rozbudowane outputy na zasadzie: 'Dokonano konwersji z zapisu arabskiego na rzymski, bo liczba odnosi się do wieku' Lecz nie wiem, czy w tym przypadku nie dojdzie do uzyskania odwrotnych efektów. Kiedy użytkownik poprosi o konwersję z liczby rzymskiej na arabską, to model tego nie wykona, bo obecna reprezentacja jest prawidłowa. Ja bym może zrobił to na kilka sposobów: 1) Wykonanie instrukcji, które po prostu dokonują konwersji pomiędzy różnymi sposobami zapisów liczb/dat, tak żeby model mógł po prostu to poprawnie wykonać 2) Można też np. stworzyć konwersację user-assistant podając tekst, gdzie są daty, liczby rzymskie, arabskie, etc. i rozmowa wygląda następująco:

Oczywiście dialogi mogą wyglądać dowolnie. Chodzi o to, żeby zawierały konwersje, oraz będzie można też zawrzeć kontekst, że jest to tekst historyczny, więc występują w nich liczby rzymskie, które oznaczają/mają wartość w zapisie arabskim ...