Based on sign/translate#130.
The written representation of signed languages is challenging due to the complexities of various writing systems. SignWriting, though beneficial, demand specialized linguistic expertise for effective use.
This repository aims to provide a solution for the automatic description of SignWriting in spoken languages. This solution can be used for teaching SignWriting to new learners, fine-tuning translation models, or zero-shot inference on motion generation models.
In English, we make a few examples of SignWriting with translation and description.
While the translation is language specific, the description is language agnostic.
(This was generated using signwriting_description/few_shots/readme.py
)
We start with a naive description of the SignWriting image, by describing each symbol in the image. We use the symbol names to generate a non-natural description (naive_description).
For example, the "Hello" sign above would be described as:
SIGNWRITING HEAD RIM (Head Rims) top right of the face at x: 482, y: 483
SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT (Double Straight Movement, Wall Plane) dominant hand rotated 45 degrees clockwise at x: 525, y: 467
SIGNWRITING HAND-FLAT (Flat) left hand palm facing outwards, parallel to the wall rotated 45 degrees clockwise at x: 516, y: 482
This description is not natural, but it is a good start to name the symbols and their positions.
To generate a more natural description, we use ChatGPT over the naive description, and SignWriting image. We feed in all of the above examples for few-shot prediction.
For example, if we exclude each sign from the few-shots, we predict:
We use BLEU and chrF to compare the hand-written descriptions to the ones outputted by ChatGPT using
signwriting_description/evaluation.py
, resulting in:
Model | BLEU | chrF2 |
---|---|---|
GPT-4 Vision (deprecated).md | 14.42 | 37.03 |
GPT-4 Omni (unknown).md | 10.76 | 42.41 |
GPT-4 Omni 2024-05-13.md | 12.35 | 40.81 |
GPT-4 Omni 2024-08-06.md | 9.53 | 39.60 |
Ideally, we would like to use a model that is trained on SignWriting descriptions. We can generate a dataset using ChatGPT, and then fine-tune a model on this dataset.