채용공고를 chat-GPT가 읽고, 직무명을 분류하는 문제를 풀고 있다.
채용공고 정형 웹사이트의 정보는 주요 업무와 자격요건 정보를 갖고 바로 직무명을 추론할 수 있지만
비정형 웹사이트의 경우 통일 되지 않은 형식으로 업로드된 채용공고를 txt파일로 크롤링하고, 파싱을 거쳐야만 한다.
For문으로 정보를 파싱할 수 있을까?
만약 위의 예시처럼 꽤 정형화된 데이터라면 가능할 수도 있지만,
한 예로 '주요업무'를 의미하는 단어들이 회사마다 달랐고, 정형화된 형식 없이 줄글로 업로드된 정보도 많았다.
자연어를 잘 아는 Chat-GPT를 활용하면 필요한 정보만 추출할 수 있을것 같았다.
내가 주의해야할 문제는 아래와 같다.
1. 할루시네이션 방지
주어진 자료에서만 정보를 추출하고, 충분하지 않다면 새로 만들어 내지 않도록 주의
2. 필요한 정보만 추출
회사소개, 직무명, 주요 업무, 자격요건, 우대사항, 복지 등 많은 정보가 포함된 채용공고에서
GPT가 새로운 직무를 고를 때 쓸 수 있는 정보만 추출한다. 기존 직무명, 주요 업무, 자격요건에만 해당되는 정보 추출
def parser_job(Text):
delimiter = "'''"
Prompt = f"""
#Order #명령문임을 나타냄
Extract relevant information from the text delimited by triple quotes.
#Extract(추출하다)를 사용해서 정보 추출 명령
Your task is to present this information in a specific format to aid individuals in their job hunting endeavors.
#업무 지정, 도움을 주기 위해 정보를 주어진 형식대로 보여줘야함을 명령
If you encounter insufficient information, respond honestly that you don't know.
Avoid generating answers.
Stick to the information available in the text.
#할루시네이션 방지
#1. 정보가 충분하지 않다면 모르겠다고 말하게 하기 2. 주어진 정보 안에서만 말하게 하기
Don't repeating the explanation.
#설명을 반복하지 않도록 명령
Follow this format:
#Format #형식 예시 제공
-<job name> Relate to the job name.
-<main duties> Relate to the main duties. up to 20 words.
-<job qualifications> Relate to the job qualifications. up to 20 words.
Text:
"""
Assistant = f"""Okay. I understand. I must follow the format.
I'll respond without reiterating the explanation.
#System프롬프트를 이해한 것 처럼 속이기
I assure you that I will not extract any information unrelated to the 'job name', 'main duties', or 'job qualifications'.
#직무명, 주요업무, 자격요건에 관한 정보만 추출할 것을 약속
Furthermore, I will not using fictitious expressions. Answer in Korean.
#응답을 한글로 하도록
"""
messages = [{'role': 'system', 'content': Prompt},
{'role': 'user', 'content': f'{delimiter}{Text}{delimiter}.'},
{'role': 'assistant', 'content': Assistant}
]
# 입력 데이터 간단한 전처리
Text = re.sub(r'\d+\.', "", Text)
Text = re.sub(r"[^\w\s]", "", Text).replace('ㆍ', '')
만약, 들어오는 데이터가 좋지 못하면 어쩌지?
약 4천번의 API사용결과 5달러가 청구되었다. 4천 개의 데이터를 추론하는 동안 5시간이 소요되었다.
그렇게 돈과 시간을 쓰면서 결과는 좋기만 했을까?
[GOOD CASE]
ChatGPT:
- AI 기술팀 NLP AI
- 대용량 언어모델BERT GPT 등 비즈니스에 적용하고 서비스 환경에 맞게 튜닝 수행, Machine Reading Comprehension 및 QA 기술 연구개발, 대용량 Text Analytics 연구개발 개체명 키워드 토픽 관계 유형 분석 및 요약 등, 딥러닝 기반 대화 및 생성 모델 연구개발 NLU 대화모델 NLG 등, NLP AI 기술 분석 및 연구지원, 프로젝트 분석 및 설계지원
- Python을 이용한 개발 경험, 최신 딥러닝 자연어처리 기술에 대한 이해 및 코드구현 능력, Deep Learning 알고리즘 연구개발 경험 보유, 자연어 처리분야 프로젝트연구 업무 대회 경험, NLP AI 기술 및 AI 아키텍처 이해
[BAD CASE]
ChatGPT:
-삼성리서치 생성형 언어코드모델 개발
-언어코드모델 개발, 최대 20 단어.
-학사 취득 후 2년 이상 유관경력 보유자, 석박사 학위취득예정자의 경우 수학기간을 경력기간으로 인정, 최대 20 단어.
-삼성리서치 생성형 이미지모델 개발
-이미지모델 개발, 최대 20단어.
-학사 취득 후 2년 이상 유관경력 보유자, 석박사 학위취득예정자의 경우 수학기간을 경력기간으로 인정, 최대 20 단어.
-삼성리서치 생성형 AI 데이터 플랫폼 개발
-AI 데이터 플랫폼 개발, 최대 20단어.
-학사 취득 후 2년 이상 유관경력 보유자, 석박사 학위취득예정자의 경우 수학기간을 경력기간으로 인정, 최대 20 단어.
-삼성리서치 생성형 AI 검증 자동화 도구 개발
-AI 검증 자동화 도구 개발, 최대 20단어.
-학사 취득 후 2년 이상 유관경력 보유자, 석박사 학위취득예정자의 경우 수학기간을 경력기간으로 인정, 최대 20 단어.
입력되는 데이터에 여러 직무가 한꺼번에 있거나, 채용 공고 내용이 좋지 않으면 형식을 깨버린다.
이 문제를 어떻게 풀어야 할까 고민이 되던 중 직접 채용 사이트에 직무를 검색해 봤다.
검색 초반에는 관련도가 높은 정보가 나오지만 후반에는 유사하다고 볼 수는 있지만 정확히 원하는 정보라고 볼 수 없다.
실제로 크롤링한 데이터의 후반부 데이터에는 광고 형식으로 반복된 채용공고가 더 많았다.
모든 공고를 파싱 하지 말고 필요한 만큼만 밀도 있게 해야겠다는 생각이 들었다.
'Prompt > 프롬프트 작성' 카테고리의 다른 글
Targeting (0) | 2023.09.05 |
---|---|
단어 하나에 민감한 우리 챗GPT (0) | 2023.08.07 |
프롬프트로 분류 문제 풀기 (0) | 2023.07.08 |