logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko

p.kaczmarek2 13 Sie 2024 21:41 1017 0
REKLAMA
  • Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    W jednym z poprzednich tematów próbowałem tłumaczyć pojęcia związane z elektroniką za pomocą Arkuszy Google. Szybko jednak zauważyłem, że tamtejsza funkcja GoogleTranslate nie bierze pod uwagę kontekstu i tłumaczy słowa nie tak jak byśmy tego oczekiwali. Tutaj sprawdzę, czy popularne ostatnio modele AI poradzą sobie z tym lepiej.

    Ten temat jest poniekąd kontynuacją wątku o tłumaczeniu firmware:
    Automatyczne tłumaczenia tekstów w arkuszach Google Sheets (Excel online). Tłumaczymy firmware.
    Tam pojawił się problem który dobrze obrazuje poniższy obrazek:
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    "Current" jako "aktualny"? No, zasadniczo tak, ale nie w tym kontekście! Chodziło nam o prąd. Zatem, czy można te automatyczne tłumaczenie zrealizować jakoś lepiej?

    Struktura promptu
    W wątku pojawił się pomysł, że można by użyć jednego z ostatnio popularnych LLM (wielkich modeli językowych), zwanych też potocznie jako "AI". W sugestii była mowa o tym, by napisać w prompcie wprost, że chodzi o elektronikę, ale ja zdecydowałem się na bardziej uniwersalne rozwiązanie. Na rozwiązanie składa się prompt z instrukcją by przetłumaczyć dane z CSV (comma separated values, wartości oddzielone przecinkiem) przy zachowaniu ich kontekstu. Poniżej umieszczam same dane do tłumaczenia w formacie takim, jaki można wyeksportować chociażby z arkusza:
    
    Please complete the CSV translations, make sure to use the correct translation for their context.
    
    en,pl
    Relay,
    Button,
    Voltage,
    Power,
    Current,
    Options,
    Yes,
    No
    

    Pora na testy!


    ChatGPT i GPT-4o
    Modele od OpenAI oczywiście poradziły sobie śpiewająco:
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    To samo, ale po dopisanie kilku słów więcej do promptu (wszystko poprawnie przetłumaczone):
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    Testowałem zarówno GPT-4o (wersję ograniczoną ilością zapytań) oraz podstawowy ChatGPT.
    Jest zdecydowanie lepiej od Google. A OpenAI oferuje płatne AI, więc można by na bazie tego zrobić translator CSV, ale są też na to darmowe sposoby...

    A jak poradzą sobie darmowe modele do uruchomienia lokalnie?
    W jednym z poprzednich tematów pokazywałem jak można uruchomić różne LLM na własnym komputerze:
    ChatGPT lokalnie? Asystenci AI/LLM do uruchomienia na Twoim komputerze - pobranie i instalacja
    Tutaj właśnie kilka takich modeli wypróbuję do opisanego wyżej zadania. Oto ich odpowiedzi, posortowane wedle ich wymogu pamięci.

    deepseek-coder:latest (0.7GB) napisał:

    Sure, I'm going to assume that you are looking at a project where these terms can be translated into multiple languages (English and Polish in this case). Here is the translation for your data. Note how each term has been contextually defined with its English equivalent using "as shown below":
    
    en,pl,"Relay","Button",Voltage,,Options: Yes/No" as given above - you should know that if there's no option in a language it won’t be displayed. If yes then just use ",Yes/" / No". For example Voltage would translate to "Power and voltage is shown below (if available).
    

    Please replace the values with your actual data, this CSV format can usually also handle multi-language translations if you have a large number of terms or phrases. The only downside could be longer lines for some languages than others due to word wrap rules in many editors and viewers (like MS Word). If there's no context defined that each term is used with, then the translation may not make sense as it would need additional information about how these translations are intended or what they represent.

    Powyższa odpowiedź to totalna herezja, czy jak się to mówi, "halucynacja" modelu językowego.

    codellama:latest (3.6GB) napisał:

    en,pl
    Relay,przekaźnik
    Button,przycisk
    Voltage,napięcie
    Power,moc
    Current,prąd
    Options,opcje
    Yes,tak
    No,nie

    Powyższa odpowiedź jest wręcz idealna i trzyma kontekst. Czy jakiś model ją pobije?

    yarn-mistral:latest (3.8GB) napisał:

    ,
    None,
    Off,
    On,
    Default,
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    (itd)

    Powyższa odpowiedź to raczej próba kontynuacji pliku CSV. W miejscu (itd) model językowy dalej odliczał, aż do 140... Najwyraźniej prompt nie został "zrozumiany".

    openchat:latest (3.8GB) napisał:

    en,pl
    Relay,Relaizy
    Button,Przycisk
    Voltage,Napięcie
    Power,Moc
    Current,Prąd
    Options,Opcje
    Yes,Tak
    No,Nie

    Wszystko ok za wyjątkiem tego "Relaizy", co to za halucynacja?

    qwen2:7b (4.1GB) napisał:

    en,pl
    Relay,"Kotwica",
    Button,"Klawisz",
    Voltage,"Napięcie",
    Power,"Moc",
    Current,"Prąd",
    Options,"Opcje",
    Yes,"Tak",
    No,"Nie"

    Tu chyba słabiej, jeszcze ten "Klawisz" może bym zrozumiał, ale "Kotwica"?


    llama3:8b (4.3GB) napisał:

    Here are the completed CSV translations:


    en,pl
    Relay,Rozwij
    Button,Wybór
    Voltage,Napóź
    Power,Moc
    Current,Prąd
    Options,Opcje
    Yes,Tak
    No,Nie

    Słabo, dużo "słowotwórstwa".

    llava:latest (4.4GB) napisał:

    Here are the translations for the given words in Polish:

    Relay, relaj
    Button, przycisk
    Voltage, napięcie
    Power, moc
    Current, prąd
    Options, opcje
    Yes, tak
    No, nie

    Nieźle, ale znów ten "relaj", skąd to?



    everythinglm:latest (6.9GB) napisał:

    English: Relay, Button, Voltage, Power, Current, Options
    Polish: Relaż, Przełącznik, Napięcie, Moc, Prąd, Opcje


    EnchantedCSV's answer: Relay, Button, Voltage, Power, Current, Options

    Przecież tam było "Button", a nie "Switch". I znów dziwna próba spolszczenia "Relay".


    llama2:13b (6.9GB) napisał:

    Sure! Here are the translations for the given terms in English and Polish:


    en,pl
    Relay,
    Przełożnik,
    Voltage,
    Moc,
    Prąd,
    Opcje,
    Tak,
    Nie

    Ten model językowy, choć pamięciowo największy, z jakiegoś dziwnego powodu w ogóle pomieszał strukturę CSV. Dodatkowo czym jest "przełożnik"?


    Na koniec jeszcze potestowałem więcej codellama:latest. Dałem mu te same zadanie, ale z "Switch" zamiast "Button":
    codellama:latest (3.6GB) napisał:

    en,pl
    Relay,Przekaźnik
    Switch,Przełącznik
    Voltage,Napięcie
    Power,Moc
    Current,Prąd
    Options,Opcje
    Yes,Tak
    No,Nie

    Też nieźle! Jednakże po kilku próbach zobaczyłem, że codellama:latest i tak potrafi się na podobnym zadaniu pogubić:
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    Próbowałem nieco temu zaradzić. LLMy mają różne parametry opisujące sposób generowania tekstu, jednym z nich jest "temperatura". Określa ona tak jakby "poziom twórczości" modelu. Nieco ją zmniejszyłem z domyślnej wartości:
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko
    Niestety pomogło to tylko w niektórych przypadkach:
    Tłumaczenie pojęć przez AI przy zachowaniu kontekstu - prompt ChatGPT i nie tylko


    Podsumowanie
    ChatGPT/GPT-4o całkowicie przebija Google Translate w przypadku tego konkretnego typu tłumaczeń a nawet radzi sobie z zachowaniem formatu CSV odpowiedzi. Można by to wykorzystać i nawet po prostu zrobić sobie narzędzie-tłumacza CSV w oparciu o API od OpenAI.
    Testowane przeze mnie darmowe, lokalne LLM z kolei mają z tym wciąż pewne trudności. Nie dość, że ich znajomość naszego języka jest słaba, to do tego mają tendencję do gubienia się i do częstych "halucynacji".
    Dodatkowo też zauważyłem, że GPT daje konsystentnie poprawne odpowiedzi, a modele lokalne czasem odpowiadają źle. W małym stopniu da się je dostroić, chociażby poprzez ustawienie "temperatury" (to jest parametr określający "twórczość" modelu), ale i tak nie uzyskałem w pełni zadowalających rezultatów.
    Możliwe, że muszę poszukać jakiegoś lepszego lokalnego modelu, specjalnie przeznaczonego do tłumaczeń. Oczywiście też ważne, by wspierał różne języki, a nie tylko nasz...
    A co Wy o tym sądzicie? Czy też macie wrażenie, że mimo wszystko takie tłumaczenie przez LLM to w pewien sposób krok na przód?
    PS: Warto byłoby te testy też powtórzyć dla innych języków, to byłoby nawet ciekawsze niż przekładanie z angielskiego na polski, ale... wtedy by się przydał ktoś kto te języki zna do weryfikacji, a ja ten temat raczej traktuję jako samą prezentację pomysłu a nie jako praktyczny test.

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • REKLAMA
REKLAMA