--- license: mit language: - ko pipeline_tag: text-generation tags: - Language - Dialect --- # JEJUMA-001 LLM으로 사라져가는 우리 방언 지키기 프로젝트1: 제주도 방언 ## 왜 시작하게 되었나요? ### 빠르게 사라져가는 지역방언: 제주도 * 여러 지역 방언, 특히 제주도의 방언이 빠르게 사라지고 있습니다. * 유네스코는 제주어(제주방언)을 **아주 심각하게 위기에 처한 언어** 로 분류했습니다. * 제주도민 중 **제주어를 아는 사람의 비율은 36.1%** 에 그치고 있습니다. * 특히, 타지역과의 교류가 활발해지면서 젊은 층에선 제주어보단 표준어를 선호하는 현상이 나타납니다. ### 지역방언에 약한 언어모델 * 온라인 소스는 표준어로 구성되어 있기에, 자료가 적은 지역방언을 잘 모릅니다. * 특히 제주어는 표준어와 차이가 크기 때문에, 유명한 단어나 문장 외에는 모델이 이해할 수 없습니다. ## 어떻게 이를 해결했나요? * 언어모델을 통해 어려운 제주어를 표준어로 변경하여 제주어가 잊혀지지 않도록 합니다. * 언어모델을 통해 표준어의 제주어 버전을 생성하여 확인할 수 있도록 합니다. * 언어모델을 사용한 이유는 기존에 학습된 다양한 내용을 그대로 이어갈 수 있도록 하기 위함입니다. ## 개발한 언어모델에 대한 설명 * 제주도 방언 데이터를 바탕으로 Llama3.1을 다양한 테스크가 가능하도록 파인튜닝하여, 제주도 방언과 관련된 여러 테스크를 수행하도록 합니다. * `JEJUMA-001`은 현재 방언과 표준어간 변경, 방언 탐지 등의 역할을 수행할 수 있습니다. * `JEJUMA-001`을 모델을 훈련하기 위해 약 105만개의 제주방언-서울말 페어 데이터를 수집하고, 그 중 제주어가 잘 들어난 데이터 17만개를 선별하였습니다. * 이를 바탕으로 총 4가지의 테스크를 수행하도록 훈련 데이터를 생성하였으며, 이는 총 약 34만개의 데이터입니다. * LlamaFactory를 통해 LoRA 방식으로 훈련하였으며, 모든 데이터에 대해 1에폭 학습하였습니다. * 어려운 제주도 말에 대해서, gpt4o와 국산 모델인 업스테이지 Solar, 네이버 HCX 높은 번역 정확도를 보입니다. ### 제주어 -> 표준어 | **입력 문장** | **자이 폴에 독솔 막 난 거 보난 언 생이우다** | | ----------------------------- | ----------------------------------------------------| | **정답** | **재 팔에 닭살이 막 난 거 보니, 추운 모양이다.** | | Upstage Solar 출력 | 그 바위에 뱀이 나타나는 걸 보니까 정말 놀랐다. | | Naver HCX 출력 | 재의 풀에 독초가 마구 난 것을 보니 어린 소나무입니다. | | GPT-4o 출력 | 저기 바위에 독사가 막 나타난 걸 보니까 정말 놀랐다. | | **JEJUMA-001 출력** | | ### 표준어 -> 제주어 | **입력 문장** | **귤나무에 그냥 가서 너네 아버지좀 찾아와라.** | | ----------------------------- | ----------------------------------------------------| | **정답** | **미깡낭 경 가심 너네 아방 좀 데령** | | Upstage Solar 출력 | 귤 나무에 가서 네 아버지를 좀 찾아와. | | Naver HCX 출력 | 귤낭에 강 느네 아방 좀 데령오라. | | GPT-4o 출력 | 귤나무에 걍 가서 햄신 아방 좀 찾아와라. | | **JEJUMA-001 출력** | 미깡낭에 그냥 강 너네 아방좀 촞아오라 | ## 어떻게 사용하나요? * 정의된 탬플릿에서 `dialect_to_standard`, `standard_to_dialect`, `detect_dialect`, `detect_dialect_and_convert` 중 하나를 사용할 수 있습니다. * `dialect_to_standard`: 제주어를 표준어로 변경 * `standard_to_dialect`: 표준어를 제주어로 변경 * `detect_dialect`: 제주어/표준어 감지 * `detect_dialect_and_convert`: 자동으로 제주어/표준어를 감지하여 표준어/제주어로 변경 ```python import transformers import torch model_id = "JEJUMA/JEJUMA-001" pipeline = transformers.pipeline( "text-generation", model=model_id, model_kwargs={"torch_dtype": torch.bfloat16}, device_map="auto", ) terminators = [ pipeline.tokenizer.eos_token_id, pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>") ] class JejuPromptTemplate: @staticmethod def dialect_to_standard(text): return [{"role":"user", "content":"Convert the following sentence or word which is Jeju island dialect to standard Korean: " + text},] @staticmethod def standard_to_dialect(text): return [{"role":"user", "content":"Convert the following sentence or word which is standard Korean to Jeju island dialect: " + text},] @staticmethod def detect_dialect(text): return [{"role":"user", "content":"Detect the following sentence or word is Jeju island dialect or standard Korean: " + text},] @staticmethod def detect_dialect_and_convert(text): return [{"role":"user", "content":"Detect the following sentence or word is Jeju island dialect or standard Korean and convert the following sentence or word to Jeju island dialect or standard Korean: " + text},] outputs = pipeline( JejuPromptTemplate.standard_to_dialect("자이 폴에 독솔 막 난 거 보난 언 생이우다"), max_new_tokens=512, eos_token_id=terminators, do_sample=True, temperature=0.1, top_p=0.9, ) print(outputs[0]["generated_text"][-1]) ``` ## 추후 계획 * JEJUMA-002는 국내의 모든 방언 데이터를 바탕으로 훈련을 진행하여 동일한 테스크를 수행할 수 있도록 할 계획입니다. * JEJUMA-003는 국내의 모든 방언 데이터와 이를 설명하는 테스크를 바탕으로 데이터에 없는 방언(연변방언, 북한어, 제3의 언어)를 일부 번역할 수 있도록 할 계획입니다. * JEJUMA-003이 본 연구에 최종 단계이며, 이를 위해 번역모델이나 더 작은 모델이 아니라 8B 크기의 언어모델을 사용하고 있습니다.