|
--- |
|
license: apache-2.0 |
|
language: |
|
- ko |
|
pipeline_tag: text2text-generation |
|
--- |
|
|
|
# korean Formal Convertor Using Deep Learning |
|
์กด๋๋ง๊ณผ ๋ฐ๋ง์ ํ๊ตญ์ด์์๋ง ์กด์ฌํฉ๋๋ค, ๋ณธ ๋ชจ๋ธ์ ๋ฐ๋ง(informal)์ ์กด๋๋ง(formal)๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ณํ๊ธฐ(convertor) ์
๋๋ค. <br> |
|
*ํ๋ณดํ ์กด๋๋ง ๋ฐ์ดํฐ์
์๋ "ํด์์ฒด"์ "ํฉ์ผ์ฒด" ๋ ์ข
๋ฅ๊ฐ ์กด์ฌํ์ง๋ง ๋ณธ ๋ชจ๋ธ์ "ํด์์ฒด"๋ก ํต์ผํ์ฌ ๋ณํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. |
|
|
|
|ํฉ์ผ์ฒด|*ํด์์ฒด| |
|
|------|---| |
|
|์๋
ํ์ญ๋๊น.|์๋
ํ์ธ์.| |
|
|์ข์ ์์นจ์
๋๋ค.|์ข์ ์์นจ์ด์์.| |
|
|๋ฐ์์์ง ์์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.|๋ฐ์์์ง ์์์ผ๋ฉด ์ข๊ฒ ์ด์.| |
|
|
|
## ๋ฐฐ๊ฒฝ |
|
- ์ด์ ์ ์กด๋๋ง๊ณผ ๋ฐ๋ง์ ๊ตฌ๋ถํ๋ ๋ถ๋ฅ๊ธฐ(https://github.com/jongmin-oh/korean-formal-classifier) ๋ฅผ ํ์ตํ์ต๋๋ค.<br> |
|
๋ถ๋ฅ๊ธฐ๋ก ๋งํฌ๋ฅผ ๋๋ ์ฌ์ฉํ๋ คํ์ง๋ง, ์๋์ ์ผ๋ก ์กด๋๋ง์ ๋น์ค์ด ์ ์๊ณ ๋ฐ๋ง์ ์กด๋๋ง๋ก ๋ฐ๊พธ์ด ์กด๋๋ง ๋ฐ์ดํฐ์ ๋น์ค์ ๋๋ฆฌ๊ธฐ์ํด ๋ง๋ค๊ฒ ๋์์ต๋๋ค. |
|
|
|
## ํ๊ตญ์ด ์กด๋๋ง ๋ณํ๊ธฐ |
|
- ์กด๋๋ง ๋ณํ๊ธฐ๋ T5๋ชจ๋ธ ์ํคํ
์ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ Text2Text generation Task๋ฅผ ์ํํจ์ผ๋ก ๋ฐ๋ง์ ์กด๋๋ง๋ก ๋ณํํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
|
- ๋ฐ๋ก ์ฌ์ฉํ์ค ๋ถ๋ค์ ๋ฐ์ ์์ ์ฝ๋ ์ฐธ๊ณ ํด์ huggingFace ๋ชจ๋ธ('j5ng/et5-formal-convertor') ๋ค์ด๋ฐ์ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค. |
|
|
|
## Base on PLM model(ET5) |
|
- ETRI(https://aiopen.etri.re.kr/et5Model) |
|
|
|
## Base on Dataset |
|
- AIํ๋ธ(https://www.aihub.or.kr/) : ํ๊ตญ์ด ์ด์ฒด ๋ณํ ์ฝํผ์ค |
|
1. KETI ์ผ์์คํผ์ค ๋ํ 1,254 ๋ฌธ์ฅ |
|
2. ์๋ํ๊น
๋ณ๋ ฌ๋ฐ์ดํฐ |
|
|
|
- ์ค๋ง์ผ๊ฒ์ดํธ ๋งํฌ ๋ฐ์ดํฐ ์
(korean SmileStyle Dataset) |
|
|
|
### Preprocessing |
|
1. ๋ฐ๋ง/์กด๋๋ง ๋ฐ์ดํฐ ๋ถ๋ฆฌ("ํด์์ฒด"๋ง ๋ถ๋ฆฌ) |
|
- ์ค๋ง์ผ๊ฒ์ดํธ ๋ฐ์ดํฐ์์ (['formal','informal']) ์นผ๋ผ๋ง ์ฌ์ฉ |
|
- ์๋ํ๊น
๋ณ๋ ฌ๋ฐ์ดํฐ์์ ["*.ban", "*.yo"] txt ํ์ผ๋ง ์ฌ์ฉ |
|
- KETI ์ผ์์คํผ์ค ๋ฐ์ดํฐ์์(["๋ฐ๋ง","ํด์์ฒด"]) ์นผ๋ผ๋ง ์ฌ์ฉ |
|
|
|
2. ๋ฐ์ดํฐ ์
๋ณํฉ(3๊ฐ์ง ๋ฐ์ดํฐ ์
๋ณํฉ) |
|
3. ๋ง์นจํ(.)์ ์ผํ(,)์ ๊ฑฐ |
|
4. ๋ฐ๋ง(informal) ์นผ๋ผ ์ค๋ณต ์ ๊ฑฐ : 1632๊ฐ ์ค๋ณต๋ฐ์ดํฐ ์ ๊ฑฐ |
|
|
|
### ์ต์ข
ํ์ต๋ฐ์ดํฐ ์์ |
|
|informal|formal| |
|
|------|---| |
|
|์ ๊ณ ๋ง์|๋ค ๊ฐ์ฌํด์| |
|
|๋๋ ๊ทธ ์ฑ
์ฝ์์ด ๊ต์ฅํ ์๊ธด ์ฑ
์ด์์ด|์ ๋ ๊ทธ ์ฑ
์ฝ์์ต๋๋ค ๊ต์ฅํ ์๊ธด ์ฑ
์ด์์ด์| |
|
|๋ฏธ์ธ๋จผ์ง๊ฐ ๋ง์ ๋ ์ด์ผ|๋ฏธ์ธ๋จผ์ง๊ฐ ๋ง์ ๋ ์ด๋ค์| |
|
|๊ด์ฐฎ๊ฒ ์ด?|๊ด์ฐฎ์ผ์ค๊น์?| |
|
|์๋์ผ ํ์๊ฐ ์ ์ ๋ค์ ์์ด ์ค๋นํด์ค|์๋์์ ํ์๊ฐ ์ ์ ๋ค์ ์์ด์ ์ค๋นํด์ฃผ์ธ์| |
|
|
|
#### total : 14,992 ์ |
|
|
|
*** |
|
|
|
## How to use |
|
```python |
|
import torch |
|
from transformers import T5ForConditionalGeneration, T5Tokenizer |
|
|
|
# T5 ๋ชจ๋ธ ๋ก๋ |
|
model = T5ForConditionalGeneration.from_pretrained("j5ng/et5-formal-convertor") |
|
tokenizer = T5Tokenizer.from_pretrained("j5ng/et5-formal-convertor") |
|
|
|
device = "cuda:0" if torch.cuda.is_available() else "cpu" |
|
# device = "mps:0" if torch.cuda.is_available() else "cpu" # for mac m1 |
|
|
|
model = model.to(device) |
|
|
|
# ์์ ์
๋ ฅ ๋ฌธ์ฅ |
|
input_text = "๋ ์ง์ง ํ๋ฌ์ด ์ง๊ธ" |
|
|
|
# ์
๋ ฅ ๋ฌธ์ฅ ์ธ์ฝ๋ฉ |
|
input_encoding = tokenizer("์กด๋๋ง๋ก ๋ฐ๊ฟ์ฃผ์ธ์: " + input_text, return_tensors="pt") |
|
|
|
input_ids = input_encoding.input_ids.to(device) |
|
attention_mask = input_encoding.attention_mask.to(device) |
|
|
|
# T5 ๋ชจ๋ธ ์ถ๋ ฅ ์์ฑ |
|
output_encoding = model.generate( |
|
input_ids=input_ids, |
|
attention_mask=attention_mask, |
|
max_length=128, |
|
num_beams=5, |
|
early_stopping=True, |
|
) |
|
|
|
# ์ถ๋ ฅ ๋ฌธ์ฅ ๋์ฝ๋ฉ |
|
output_text = tokenizer.decode(output_encoding[0], skip_special_tokens=True) |
|
|
|
# ๊ฒฐ๊ณผ ์ถ๋ ฅ |
|
print(output_text) # ์ ์ง์ง ํ๋ฌ์ต๋๋ค ์ง๊ธ. |
|
``` |
|
|
|
*** |
|
|
|
## With Transformer Pipeline |
|
```python |
|
import torch |
|
from transformers import T5ForConditionalGeneration, T5Tokenizer, pipeline |
|
|
|
model = T5ForConditionalGeneration.from_pretrained('j5ng/et5-formal-convertor') |
|
tokenizer = T5Tokenizer.from_pretrained('j5ng/et5-formal-convertor') |
|
|
|
typos_corrector = pipeline( |
|
"text2text-generation", |
|
model=model, |
|
tokenizer=tokenizer, |
|
device=0 if torch.cuda.is_available() else -1, |
|
framework="pt", |
|
) |
|
|
|
input_text = "๋ ๊ฐ์ง ์ ์์๊ฑฐ๋ผ ์๊ฐํ์ด" |
|
output_text = typos_corrector("์กด๋๋ง๋ก ๋ฐ๊ฟ์ฃผ์ธ์: " + input_text, |
|
max_length=128, |
|
num_beams=5, |
|
early_stopping=True)[0]['generated_text'] |
|
|
|
print(output_text) # ๋น์ ์ ๊ฐ์ง ์ ์์๊ฑฐ๋ผ ์๊ฐํ์ต๋๋ค. |
|
``` |
|
|
|
## Thanks to |
|
์กด๋๋ง ๋ณํ๊ธฐ์ ํ์ต์ ์ธ๊ณต์ง๋ฅ์ฐ์
์ตํฉ์ฌ์
๋จ(AICA)์ GPU ๋ฆฌ์์ค๋ฅผ ์ง์๋ฐ์ ํ์ต๋์์ต๋๋ค. |
|
|
|
|
|
|
|
|