Downloads · 30 days
22
18% of all-time downloads
jwengr/gemma2-2b-kor-deobfuscation
gemma2-2b-kor-deobfuscation is a text generation model from jwengr. Use it when you need the model to write or continue text.
This repository is designed for restoring obfuscated Korean text.
Downloads · 30 days
22
18% of all-time downloads
All-time downloads
124
Public
Parameters
2.8B
22.2 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors11.1 GB · 100%
From the Hugging Face model README
This repository is designed for restoring obfuscated Korean text.
It was developed and validated using the dataset from the 2024 Dacon Obfuscated Korean Review Restoration AI Competition
For more details on the dataset and modeling approach, please refer to the 2024 Dacon Obfuscated Korean Review Restoration AI Competition.
This repository includes the following components:
Pretrained Korean Text Restoration Model
GemmaModel trained to restore obfuscated Korean text to its original, human-readable form.
Syllable-level Korean Tokenizer
A tokenizer tailored to process Korean at the syllable level for improved granularity and performance.
Flexible Korean Sentence Splitter
A sentence segmentation tool that handles the complexities of Korean syntax effectively.
Korean Text Obfuscator
A module for simulating text obfuscation, useful for training and evaluation.
This pretrained model restores obfuscated Korean text by converting broken or scrambled Hangul into fluent, natural Korean.
Finetuned for Korean tour review restoration
from transformers import AutoModel
# Load the tokenizer and model
hangul_tokenizer = AutoModel.from_pretrained('jwengr/gemma2-2b-kor-deobfuscation', subfolder='hangul_tokenizer', trust_remote_code=True)
hangul_deobfuscator = AutoModel.from_pretrained('jwengr/gemma2-2b-kor-deobfuscation', trust_remote_code=True)
hangul_deobfuscator.load_hangul_tokenizer(hangul_tokenizer)
# Example
text = '얀녕핥셈욧.'
restored = hangul_deobfuscator.deobfuscate(text)
print(restored) # '안녕하세요.'
from transformers import AutoModel
# Load models
hangul_tokenizer = AutoModel.from_pretrained('jwengr/gemma2-2b-kor-deobfuscation', subfolder='hangul_tokenizer', trust_remote_code=True)
sentence_tokenizer = AutoModel.from_pretrained('jwengr/gemma2-2b-kor-deobfuscation', subfolder='sentence_tokenizer', trust_remote_code=True)
hangul_deobfuscator = AutoModel.from_pretrained('jwengr/gemma2-2b-kor-deobfuscation', trust_remote_code=True)
hangul_deobfuscator.load_hangul_tokenizer(hangul_tokenizer)
# Example
sentence = '''별 한 게토 았깝땀. 왜 싸람듯릭 펼 1캐를 쥰눈징 컥꺾폰 싸람믐롯섞 맒록 섧멍핥쟈닐 탯끎룐눈 녀뮤 퀼교... 야뭍툰 둠 변 닺씨 깍낄 싫훈 굣. 깸삥읊 20여 년 댜녁뵨 곧 중 쩨윌 귑푼 낙팠떤 곶.'''
restored = hangul_deobfuscator.deobfuscate(sentence, sentence_tokenizer)
print(restored)
# '별 한 개도 아깝다. 왜 사람들이 별 1개를 주는지 겪어본 사람으로서 말로 설명하자니 댓글로는 너무 길고... 아무튼 두 번 다시 가길 싫은 곳. 캠핑을 20여 년 다녀본 곳 중 제일 기분 나빴던 곳.'
A tokenizer tailored to process Korean at the syllable level for improved granularity and performance.
from transformers import AutoModel
hangul_tokenizer = AutoModel.from_pretrained(
'jwengr/gemma2-2b-kor-deobfuscation',
subfolder='hangul_tokenizer',
trust_remote_code=True
)
encoded_ids, token_type_ids = hangul_tokenizer.encode_char('a안b녕c하d세e요!')
decoded_text = hangul_tokenizer.decode_char(encoded_ids, token_type_ids)
encoded_ids, token_type_ids = hangul_tokenizer.encode_jamo('a안b녕c하d세e요!')
decoded_text = hangul_tokenizer.decode_jamo(encoded_ids, token_type_ids)
print(decoded_text)
# Output: 'a안b녕c하d세e요!'
A sentence segmentation tool that handles the complexities of Korean syntax effectively.
from transformers import AutoModel
sentence_tokenizer = AutoModel.from_pretrained(
'jwengr/gemma2-2b-kor-deobfuscation',
subfolder='sentence_tokenizer',
trust_remote_code=True
)
text = '''아... 가격 좋고 뷰도 뻥 뚫려서 시원하지만 담배 냄새 미쳐버림. 싸게 하루만 묵겠다! 하는 사람한테만 추천. 담배 냄새가 모든 장점을 가져가는 곳. 노래방에서 각종 담배와 유흥에 쩔었을 때 나는 냄새가 계속 방에 있음 ㅆ... 싸니까 할 말 없음.'''
# 문장 분리
chunks = sentence_tokenizer.split_text(text)
print(chunks)
# Output: [
# '아... 가격 좋고 뷰도 뻥 뚫려서 시원하지만 담배 냄새 미쳐버림. 싸게 하루만 묵겠다! 하는 사람한테만 추천. ',
# '담배 냄새가 모든 장점을 가져가는 곳. 노래방에서 각종 담배와 유흥에 쩔었을 때 나는 냄새가 계속 방에 있음 ',
# 'ㅆ... 싸니까 할 말 없음.'
# ]
# 오버랩 적용
chunks_overlapped = sentence_tokenizer.overlap(chunks)
print(chunks_overlapped)
# Output:
# [
# (0, 64, '아... 가격 좋고 뷰도 뻥 뚫려서 시원하지만 담배 냄새 미쳐버림. 싸게 하루만 묵겠다! 하는 사람한테만 추천.'),
# (17, 86, '뚫려서 시원하지만 담배 냄새 미쳐버림. 싸게 하루만 묵겠다! 하는 사람한테만 추천. 담배 냄새가 모든 장점을 가져가는 곳.'),
# (42, 109, '하루만 묵겠다! 하는 사람한테만 추천. 담배 냄새가 모든 장점을 가져가는 곳. 노래방에서 각종 담배와 유흥에 쩔었을 때'),
# (64, 125, '담배 냄새가 모든 장점을 가져가는 곳. 노래방에서 각종 담배와 유흥에 쩔었을 때 나는 냄새가 계속 방에 있음'),
# (86, 130, '노래방에서 각종 담배와 유흥에 쩔었을 때 나는 냄새가 계속 방에 있음 ㅆ...'),
# (109, 134, '나는 냄새가 계속 방에 있음 ㅆ... 싸니까'),
# (125, 141, 'ㅆ... 싸니까 할 말 없음.')
# ]
# 복원된 텍스트 출력
decoded = sentence_tokenizer.decode_overlap(chunks_overlapped)
print(decoded)
# Output:
# '아... 가격 좋고 뷰도 뻥 뚫려서 시원하지만 담배 냄새 미쳐버림. 싸게 하루만 묵겠다! 하는 사람한테만 추천. 담배 냄새가 모든 장점을 가져가는 곳. 노래방에서 각종 담배와 유흥에 쩔었을 때 나는 냄새가 계속 방에 있음 ㅆ... 싸니까 할 말 없음.'
A module for simulating Korean text obfuscation, useful for training, data augmentation, and evaluation.
It generates noisy or obfuscated versions of input text to mimic real-world corrupted or user-modified input.
from transformers import AutoModel
hangul_augmentator = AutoModel.from_pretrained(
'jwengr/gemma2-2b-kor-deobfuscation',
subfolder='hangul_augmentator',
trust_remote_code=True
)
# 입력 문장
text = '안녕하세요'
# 난독화된 출력
obfuscated = hangul_augmentator(text)
print(obfuscated)
# Output: '안녕함쒷오'