전체 글
[NLP]. 한국어(Korean)에서 반말(informal)을 존댓말(formal)로 바꿔주는 변환기(convertor) - korean Formal Convertor Using Deep Learning
존댓말과 반말은 한국어에서만 존재합니다, 본 모델은 반말(informal)을 존댓말(formal)로 바꿔주는 변환기(convertor) 입니다. *확보한 존댓말 데이터셋에는 "해요체"와 "합쇼체" 두 종류가 존재했지만 본 모델은 "해요체"로 통일하여 변환하기로 결정했습니다. 합쇼체 *해요체 안녕하십니까. 안녕하세요. 좋은 아침입니다. 좋은 아침이에요. 바쁘시지 않았으면 좋겠습니다. 바쁘시지 않았으면 좋겠어요. 배경 이전에 존댓말과 반말을 구분하는 분류기(https://github.com/jongmin-oh/korean-formal-classifier) 를 학습했습니다. 분류기로 말투를 나눠 사용하려했지만, 상대적으로 존댓말의 비중이 적었고 반말을 존댓말로 바꾸어 존댓말 데이터의 비중을 늘리기위해 만들게 ..
[NLP]. 한국어 메신저(구어체)대화 맞춤법(typos) 오타 교정기(Corrector) 모델 : Korean Typos(Spelling) Corrector Using Deep Learning
한국어 맞춤법 교정기 ETRI-et5 모델을 기반으로 fine-tuning한 한국어 구어체 전용 맞춤법 교정기 입니다. 바로 사용하실 분들은 밑에 예제 코드 참고해서 모델('j5ng/et5-typos-corrector') 다운받아 사용하실 수 있습니다. Base on PLM model(ET5) ETRI(https://aiopen.etri.re.kr/et5Model) Base on Dataset 모두의 말뭉치(https://corpus.korean.go.kr/request/reausetMain.do?lang=ko) 맞춤법 교정 데이터 예시 original corrected 이런게 눔 ㄱ ㅣ찮아서 ㅠㅠ 이런 게 넘 귀찮아서 ㅠㅠ 어쩌다 가게되써 어쩌다 가게 됐어? 이따 얘기하쟈 이따 얘기하자 ㅋㅋㅋㅋㅋㅋ언넝..
[NLP]. 크로스 인코더(Cross Encoder) Onnx Runtime 양자화 하기
문제 발생 크로스 인코더(Cross-Encoder)는 바이 인코더(Bi-Encoder)와 다르게 질문(S1)과 답변(S2)을 함께 임베딩하고 그 유사도를 학습하는 방식이다. 일반적으로 속도 때문에 Bi-Encoder를 사용해서 미리 임베딩한 뒤 비교하는 방식을 사용했지만, 크로스 인코더를 사용하면 유사도 스코어가 많이 증가한다, (실제로 73 -> 83 까지 올라갔다.) 하지만 크로스 인코더의 단점은 바로 속도... 최대한 가벼운 모델을 사용해 속도를 최소화 했고 이미 많이 사용해서 쓰고있는 Onnx 모델로 변환하고 양자화를 사용해 모델 속도를 최소화 하려고했다. 하지만 Sentence-Transfomer 모듈에서 학습한 모델은 임베딩만 해주더라. ONNX Runtime을 사용하였더니 output 값이 ..
[NLP]. Ray와 Sklearn Pipeline을 사용하여 Pandas 데이터 전처리하기
import pandas as pd import ray import re from sklearn.pipeline import Pipeline from sklearn.preprocessing import FunctionTransformer # 예시 데이터프레임 df = pd.DataFrame({'question': ['Q1', 'Q2', 'Q3'], 'answer': ['Answer 1', 'Answer 2', 'Answer 3']}) # HTML 태그 제거 함수 @ray.remote def remove_html_tags(text): clean_text = re.sub('', '', text) # 정규식을 이용하여 HTML 태그 제거 return clean_text # 데이터프레임의 'answer' 칼럼에..
[AWS]. EC2 생성 시 기본 셋팅하기(메모용)
기본적으로 OS는 아마존 리눅스를 사용했습니다(Centos랑 비슷) 1. htop 설치 htop은 운영체제의 CPU, Memory 등의 정보를 실시간으로 모니터링하기 위해서 사용됩니다 sudo yum update -y && yum install -y htop 2. 아나콘다 설치 설치경로 : /home/ec2-user/ wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh bash Anaconda3-2023.03-Linux-x86_64.sh 환경 변수 설정 vi ~/.bashrc 맨 윗줄에 추가 export PATH="/home/ec2-user/anaconda3/bin:$PATH" 적용 source ~/.bashrc
[딥러닝]. 자연어 처리 모델 경량화 순서
[모델 경량화 기법 적용 순서] 딥러닝 모델의 크기를 줄이는 경량화 기법은 다음과 같이 적용 순서를 결정할 수 있습니다. Pruning: 불필요한 가중치를 제거하여 모델의 크기를 줄입니다. 모델의 크기가 대폭 축소되면서도 모델의 정확도는 크게 감소하지 않습니다. Quantization: 모델의 가중치와 활성화 함수 값을 낮은 비트 수로 표현하여 모델의 크기를 줄입니다. 모델의 크기가 줄어들어 메모리 사용량이 줄어들면서도 모델의 정확도는 크게 감소하지 않습니다. Knowledge distillation: 대규모 모델의 지식을 작은 모델에 전달하여 작은 모델의 성능을 향상시킵니다. 작은 모델이 큰 모델의 성능을 따라잡게 되어 큰 모델의 정확도에 근접한 성능을 얻을 수 있습니다. Low-rank approxi..
[Elastic]. elastic search Docker Setup
설치 정보 Verson 8.4.2 Single Node Setting localhost 에 설치 네트워크 생성 docker network create elastic 도커 이미지 다운로드 & 도커 런 docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.4.2 패스워드 재설정 docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic 패스워드 메모 : Gz-YD7e0hGc*5NsMRjvj 인증서파일 복사 docker cp es-node01:..
[NLP]. HuggingFace Tokenizer에 token 추가(add)하기
from transformers import AutoTokenizer tokenzer = AutoTokenizer.from_pretrained({model_path}) # new tokens new_tokens = "[NEW]" tokenizer.add_special_tokens({"additional_special_tokens" : [new_tokens]}) model.resize_token_embeddings(len(tokenizer)) resize_token_embeddings(len(tokenizer))를 안해주게 되면 임베딩 에러 발생 + 추가 Sbert의 경우 # ADD tokens tokens = ["[NEW]"] embedding_model = model._first_module() emb..
[Event]. Langcon 2023 참가후기.
2023년 2월 18일에 열린 LangCon 2023에 다녀왔다. 태크니컬한 얘기는 추후 포스팅하도록 하고 소감을 얘기하고 싶다. 일단 블로그와 깃허브 또는 오픈 채팅방에서 봤던 사람들을 실제로 발표자로 만나게 되어 너무 신기했다. 나에겐 BTS 보다 더 멋진 사람들이라 가슴이 벅차올랐다. 그리고 발표자분들 중 몇 명의 오픈 소스는 실제로 우리 서비스에 적용이 되어있기 때문에 감사인사를 전하고 싶었지만 내가 좀 더 훌륭한 개발자가 된 모습으로 감사인사를 전하고 싶어 참았다. 1. ELACTRA 2. Pecab 3. klue 등등.. 앞으로도 이런 콘퍼런스가 있으면 꼭 참여해야겠다. 자연어 처리 분야의 전문가들과 함께 하는 자리는 비록 얻어 가지 못할지라도, 큰 도움이 된다. (실제 얻어간 부분은 상당하다..
[졸업]. 했습니다
졸업식을 따로 하지 않아서 졸업한 지도 모르고 지내다가. 문득 생각이나서 학교홈페이지에 가서 확인해 보니 졸업이 되어있었다. 29살에 졸업하는게 뭔가 이상하지만 나에겐 좀 뜻깊은 일이다. 처음 전문대에 입학하고 게임기획자가 되고자 했던 나는 산업체를 경험하고 개발자의 필요성, 중요성을 깨달았고 뒤늦게 25살에 복학해서 프로그래밍을 배웠다. 물리를 싫어했던 나는 게임개발이 적성에 맞지 않았고 통계가 좋아 인공지능을 시작했다. 3번의 교육기관을 걸쳐 취업을 했고, 직장을 다니면서 야간으로 4년제 학위를 취득했다. 내 이전 전문대학교 성적은 2.7 , 3.0이 넘지 않지만 확실히 내가 흥미 있는 분야를 공부하니까 성적은 저절로 따라왔다. 단 한 번도 성적을 위해 공부했던 적이 없다, 그냥 재미있고 배우고 싶어..