공부 정리 블로그

Llama 를 활용한 지원서 독창성 평가 본문

proyector en Chile

Llama 를 활용한 지원서 독창성 평가

따옹 2024. 12. 17. 05:00

지원서들 간의 연관성 평가는 충분히 가능합니다. LLaMA와 같은 대규모 언어 모델은 문장의 문맥적 유사성의미적 관련성을 이해하고 비교하는 데 강력한 도구가 됩니다. 이를 통해 지원서가 비슷한 맥락, 주제, 경험을 다루는지 평가할 수 있습니다.


1. 연관성 평가란?

지원서들 간의 연관성 평가란, 두 개 이상의 지원서가 다음과 같은 측면에서 얼마나 관련이 있는지 분석하는 것입니다:

  • 주제적 연관성: 지원서가 동일한 분야나 주제를 다루는지.
  • 아이디어의 일치: 지원자가 제시한 아이디어, 목표, 또는 경험이 유사한지.
  • 구조적 연관성: 지원서가 비슷한 형식이나 흐름을 따르는지.
  • 경험의 유사성: 두 지원서에서 공유되는 경력, 기술, 활동 등이 있는지.

2. LLaMA를 활용한 연관성 평가 방법

LLaMA를 사용하여 연관성을 평가하는 방식은 크게 두 가지로 나뉩니다:

2.1. 임베딩 기반 유사성 분석

LLaMA는 텍스트를 벡터(임베딩)로 변환할 수 있으며, 이 벡터를 비교해 두 텍스트 간의 연관성을 수치화할 수 있습니다.

  1. 텍스트 임베딩 생성:
    • 각 지원서를 임베딩(숫자로 표현된 의미 구조)으로 변환합니다.
  2. 유사도 계산:
    • 각 임베딩 간 코사인 유사도(Cosine Similarity)를 계산합니다.
    • 코사인 유사도가 높을수록 연관성이 강하다고 평가합니다.
  3. 코드 예시:
from sentence_transformers import SentenceTransformer, util
# 모델 로드
model = SentenceTransformer('all-MiniLM-L6-v2')

# 지원서 텍스트
text1 = "I developed an AI model to optimize logistics."
text2 = "My experience includes building machine learning models for logistics."

# 임베딩 생성
embeddings = model.encode([text1, text2])

# 코사인 유사도 계산
similarity = util.cos_sim(embeddings[0], embeddings[1])

print("연관성 점수:", similarity.item())

2.2. LLaMA의 프롬프트 활용

프롬프트를 설계하여 지원서 간의 연관성을 평가하도록 모델에 요청할 수 있습니다.

  1. 프롬프트 설계:
    • 두 텍스트의 연관성을 평가하는 기준을 설정.
    • 예: "주제의 유사성", "경험의 중복", "구조적 연관성" 등.

예시 프롬프트:

Compare the following two application essays and evaluate their relevance to each other:
Essay 1: "I worked on developing a financial model for startups."
Essay 2: "My project experience includes creating models to optimize startup funding."
Criteria:
- Are they discussing the same topic?
- Do they describe similar experiences or goals?
Output a score from 0 to 100 and provide an explanation.

   

   3. 모델의 예상 출력:

vbnet
Score: 85/100
Explanation: Both essays discuss the development of models for startups, with a focus on financial optimization. While the wording differs slightly, the core topic and goals are highly aligned.

3. 연관성 평가의 세부 요소

지원서 간 연관성을 구체적으로 평가하기 위해 다음과 같은 기준을 설정할 수 있습니다:

3.1. 주제의 일치

  • 지원서가 동일한 주제를 다루고 있는지 확인.
  • 예: "환경 지속 가능성"에 대한 지원서끼리 비교.

3.2. 경험의 유사성

  • 기술, 프로젝트, 업무 경험 등이 유사한지 분석.
  • 예: "AI 모델 개발" vs. "머신러닝 프로젝트 경험".

3.3. 목표의 일치

  • 지원자가 제시한 목표가 비슷한 방향인지 확인.
  • 예: "스타트업 지원" vs. "창업 경험과 관련된 목표".

3.4. 어휘 및 표현의 유사성

  • 비슷한 어휘와 문구를 사용했는지.
  • 예: 두 지원서 모두 "혁신", "리더십" 등 특정 키워드를 강조한다면 연관성이 있을 가능성이 높음.

4. LLaMA를 활용한 대량 연관성 분석

4.1. 데이터 구조

  • 모든 지원서를 리스트 또는 데이터프레임으로 정리.
  • 예:
    essays = [
        "I worked on AI models for startups.",
        "My experience includes machine learning optimization.",
        "I am passionate about sustainable energy solutions."
    ]
    

4.2. 지원서 간 연관성 매트릭스 생성

  • 모든 지원서를 서로 비교하여 유사도 점수 행렬 생성.
  • 코드 예시:
    import numpy as np
    
    # 모든 지원서 임베딩
    embeddings = model.encode(essays)
    
    # 코사인 유사도 매트릭스 생성
    similarity_matrix = util.cos_sim(embeddings, embeddings)
    
    print("연관성 매트릭스:\n", similarity_matrix.numpy())
    

4.3. 시각화

  • 연관성 점수를 히트맵(Heatmap)으로 시각화하여 이해도를 높임.

5. LLaMA를 활용한 연관성 평가의 장점

  1. 문맥과 의미 이해:
    • 단순한 텍스트 겹침보다 더 깊은 의미와 문맥적 연관성을 파악.
  2. 확장성:
    • 다수의 지원서를 동시에 분석하여 연관성 점수를 계산할 수 있음.
  3. 커스터마이징 가능:
    • 프롬프트를 조정하여 평가 기준을 유연하게 변경.

6. 한계와 보완책

6.1. 한계

  1. 결과 해석:
    • LLaMA의 결과는 확률적이므로, 완전한 객관성을 보장하지 못함.
  2. 데이터베이스 부족:
    • LLaMA 자체는 외부 데이터와의 비교는 어렵고, 입력된 데이터에만 의존.

6.2. 보완책

  1. 프롬프트 개선:
    • 평가 기준을 명확히 정의하여 결과의 신뢰성을 높임.
  2. 전문 도구와 결합:
    • LLaMA의 연관성 분석을 표절 탐지 도구와 함께 사용하여 데이터베이스 기반 비교를 보완.

결론

LLaMA는 지원서들 간의 연관성을 평가하는 데 강력한 도구가 될 수 있습니다. 이를 통해 단순한 텍스트 유사성뿐만 아니라, 주제적 관련성, 문맥적 유사성, 아이디어의 일치까지 평가할 수 있습니다. 적절한 프롬프트와 기술적 통합을 통해 LLaMA의 잠재력을 최대한 활용할 수 있습니다.


임베딩 방식과 프롬프트 방식 모두 쓰는 이유

2.1. 임베딩 기반 유사성 분석

임베딩 기반 유사성 분석은 수치적이고 정량적인 인사이트를 제공합니다. 이 방법은 텍스트를 벡터로 변환하고, 벡터 간의 유사성을 측정해 숫자 점수를 반환하는 과정입니다.

얻을 수 있는 인사이트

  1. 정량적 유사성 점수
    • 두 텍스트 간의 유사성 정도를 숫자로 나타냄.
    • 예: 0.85(85%)는 두 텍스트가 매우 유사함을 의미.
    • 지원서들 간의 유사성 분포를 분석하여 상위 N개의 유사 텍스트를 식별.
  2. 유사성 기준 설정
    • 일정 임계값을 정해, 유사성이 높은 지원서를 자동으로 분류하거나 플래그 처리 가능.
    • 예: 유사도가 0.8 이상이면 "연관성 높음"으로 분류.
  3. 군집 분석 및 데이터 시각화
    • 여러 지원서의 임베딩을 클러스터링하여 유사한 그룹을 식별.
    • 특정 그룹 내 지원서들이 공통된 주제나 표현을 공유하는지 확인 가능.
  4. 확장성
    • 대규모 데이터셋에서도 유사성을 효율적으로 비교.
    • 개별 지원서와 나머지 지원서들 간의 연관성을 빠르게 평가 가능.

2.2. LLaMA의 프롬프트 활용

LLaMA의 프롬프트 활용은 정성적이고 맥락적인 인사이트를 제공합니다. 모델에 특정 질문을 던지고, 답변을 통해 의미적, 맥락적 연결성을 평가할 수 있습니다.

얻을 수 있는 인사이트

  1. 맥락적 연관성
    • 단순히 텍스트의 겹침 여부를 넘어, 주제나 아이디어의 맥락적 유사성을 평가.
    • 예: "두 지원서 모두 AI 프로젝트 경험을 논의하지만, 초점은 다르다(AI 모델 개발 vs. 데이터 분석)."
  2. 세부적 차이점 도출
    • 모델이 텍스트 간의 세부적인 차이점과 유사성을 설명해줌.
    • 예: "지원서 A는 팀워크를 강조했고, 지원서 B는 개인적인 리더십 경험을 강조."
  3. 종합적 판단
    • 두 텍스트의 유사성과 차이점을 맥락적으로 평가하여 종합적인 피드백 제공.
    • 예: "이 두 텍스트는 모두 창의적 문제 해결을 다루지만, 사례의 복잡성에서 차이가 있다."
  4. 사용자 정의 평가
    • 프롬프트를 조정하여 특정 기준에 따라 평가.
    • 예: "지원서의 독창성", "목표의 일치 여부", "글의 구조적 유사성" 등.
  5. 의미적 연결성 강조
    • 비슷한 맥락을 가진 문장이 패러프레이징된 경우에도 이를 탐지.
    • 예: "텍스트는 표현은 다르지만 동일한 주제를 논의함."

두 방법의 비교

특징 임베딩 기반 유사성 분석 (2.1) LLaMA의 프롬프트 활용 (2.2)

결과 형식 수치적 점수 (0~1) 설명적 답변 (문장 또는 단락)
유사성 측정 방식 단어, 문장, 문맥 간의 벡터적 유사성 문맥, 주제, 의미적 연결성에 기반한 정성적 평가
분석 초점 전체적인 유사성 분포와 숫자로 비교 가능한 평가 맥락적, 주제적 차이점과 세부적인 설명
확장성 대규모 데이터셋에도 적합, 빠른 처리 가능 소규모 텍스트 비교나 세부적 맥락 분석에 적합
인사이트 예시 "유사성 점수는 0.85로 매우 높음." "두 텍스트 모두 같은 프로젝트를 논의하지만 초점이 다름."
커스터마이징 가능성 기준 값(Threshold) 설정 가능 평가 기준(프롬프트) 자유롭게 설정 가능
한계 문맥적/의미적 차이점 설명 어려움 대규모 데이터셋 분석 속도 제한

활용 방안

  • 임베딩 기반 유사성 분석:
    • 지원서 간의 정량적 비교가 필요한 경우 사용.
    • 예: 지원서 데이터베이스에서 가장 유사한 5개의 문서를 빠르게 찾기.
  • LLaMA의 프롬프트 활용:
    • 세부적이고 맥락적인 비교가 필요한 경우 사용.
    • 예: "지원서 A와 B가 동일한 프로젝트를 다루는지, 또는 다른 관점을 제시하는지 분석."

결론

  • **임베딩 기반 유사성 분석(2.1)**은 대규모 데이터셋의 유사성을 빠르게 분석하고 정량적인 인사이트를 제공.
  • **LLaMA의 프롬프트 활용(2.2)**은 맥락과 의미를 기반으로 텍스트의 깊이 있는 관련성을 도출.
  • 두 방법을 병합하여 사용하면, 데이터의 정량적 유사성과 정성적 관련성을 함께 분석하여 더 풍부한 인사이트를 얻을 수 있습니다.

네, 벡터 임베딩을 활용하여 특정 그룹 내 지원서들이 공통된 주제나 표현을 공유하는지 확인함으로써, 개별 지원서의 독창성을 점수화할 수 있습니다. 이를 위해 다음과 같은 단계를 설계할 수 있습니다:


1. 벡터 임베딩과 독창성 점수화 개념

  1. 텍스트 벡터화:
    • 각 지원서를 임베딩(숫자로 표현된 의미 구조)으로 변환.
    • 임베딩은 텍스트의 주제, 표현, 문맥 등을 벡터 공간에 매핑.
  2. 유사성 분석:
    • 임베딩 간의 유사성을 비교(코사인 유사도 등)하여, 그룹 내 지원서들의 공통점과 차이점을 확인.
  3. 독창성 평가:
    • 그룹 내 지원서들의 평균 유사도를 기준으로 개별 지원서의 독창성을 점수화.
    • 특정 지원서가 그룹 평균 유사도에서 얼마나 벗어나는지를 기준으로 독창성을 계산.

2. 독창성 점수화 방법

2.1. 단계별 프로세스

  1. 지원서 텍스트를 벡터 임베딩으로 변환:
    • Sentence-BERT 또는 다른 NLP 모델을 사용해 지원서를 벡터로 변환.
  2. 그룹 내 평균 유사도 계산:
    • 모든 지원서 간 코사인 유사도를 계산.
    • 그룹 내 평균 유사도를 구하여, 지원서들이 얼마나 비슷한 주제를 공유하는지 확인.
  3. 독창성 점수 계산:
    • 특정 지원서의 평균 유사도가 그룹 평균과 얼마나 다른지를 기준으로 독창성을 점수화.
    • 독창성 점수는 유사성이 낮을수록 높아지는 방식으로 설정.

2.2. 독창성 점수 계산 공식

  • DiD_i (독창성 점수) = 100×(1−Si)100 \times (1 - S_i)
    • SiS_i: 지원서 ii와 그룹 평균 임베딩 간의 유사도(코사인 유사도).
    • 100으로 스케일링하여 직관적인 점수로 변환.

3. Python 코드 예시

3.1. 데이터 준비

from sentence_transformers import SentenceTransformer, util
import numpy as np

# 지원서 데이터
essays = [
    "I developed an AI model for logistics optimization.",
    "My experience includes creating predictive analytics models.",
    "I participated in a project for healthcare data analysis.",
    "I worked on optimizing supply chain operations using AI.",
    "My work involved creating dashboards for logistics data."
]

3.2. 텍스트 임베딩 생성

# 모델 로드
model = SentenceTransformer('all-MiniLM-L6-v2')

# 텍스트 임베딩
embeddings = model.encode(essays)

# 임베딩 간 코사인 유사도 계산
similarity_matrix = util.cos_sim(embeddings, embeddings).numpy()

3.3. 독창성 점수 계산

# 그룹 평균 유사도 계산
group_avg_similarity = np.mean(similarity_matrix, axis=0)

# 독창성 점수 계산
originality_scores = [100 * (1 - sim) for sim in group_avg_similarity]

# 결과 출력
for i, score in enumerate(originality_scores):
    print(f"Essay {i + 1} Originality Score: {score:.2f}")

4. 시각화

4.1. 히트맵을 통해 유사성 확인

import matplotlib.pyplot as plt
import seaborn as sns

# 히트맵 생성
plt.figure(figsize=(10, 8))
sns.heatmap(similarity_matrix, annot=True, fmt=".2f", cmap="Blues", xticklabels=[f"Essay {i+1}" for i in range(len(essays))], yticklabels=[f"Essay {i+1}" for i in range(len(essays))])
plt.title("Similarity Matrix of Essays")
plt.show()

4.2. 독창성 점수 시각화

# 막대 그래프 생성
plt.figure(figsize=(8, 5))
plt.bar(range(1, len(originality_scores) + 1), originality_scores)
plt.xticks(range(1, len(originality_scores) + 1), [f"Essay {i}" for i in range(1, len(originality_scores) + 1)])
plt.title("Originality Scores of Essays")
plt.xlabel("Essay")
plt.ylabel("Originality Score")
plt.show()

5. 인사이트 도출

5.1. 높은 독창성 점수

  • 독창성 점수가 높은 지원서는 그룹 내 다른 지원서들과 겹치는 정도가 적음.
  • 예: 특정 주제나 표현을 독창적으로 다루었거나 새로운 관점을 제시.

5.2. 낮은 독창성 점수

  • 독창성 점수가 낮은 지원서는 그룹 내 다른 지원서들과 유사성이 높음.
  • 예: 동일한 주제, 구조, 또는 표현을 반복적으로 사용.

5.3. 그룹 전체 분석

  • 그룹 평균 유사도가 높다면, 그룹 전체가 비슷한 주제를 다루고 있음을 의미.
  • 특정 지원서가 독창성에서 돋보이는 경우, 이는 평가에서 주목할 만한 지원서일 가능성이 큼.

6. 한계와 보완

한계

  1. 임베딩 모델의 한계:
    • 임베딩 모델은 텍스트의 의미적 유사성을 측정하지만, 완벽한 평가를 보장하지는 않음.
    • 세부적인 차이나 문장 수준의 맥락을 간과할 수 있음.
  2. 데이터 품질:
    • 입력 텍스트의 품질이 낮다면, 임베딩 결과와 독창성 점수도 정확도가 낮아질 수 있음.

보완책

  1. LLaMA와 결합:
    • 독창성 점수가 낮은 지원서에 대해 LLaMA를 활용해 세부적으로 겹치는 부분을 식별하거나, 독창적인 요소를 설명하도록 요청.
  2. 다중 기준 평가:
    • 유사성 기반 점수 외에도 문장 구조의 다양성이나 어휘적 독창성을 추가적으로 고려.

7. 결론

벡터 임베딩을 활용해 그룹 내 지원서들의 유사성을 평가하고, 이를 기반으로 독창성을 점수화할 수 있습니다. 이 방법은 정량적이고 자동화된 평가를 제공하며, 독창성이 돋보이는 지원서를 효과적으로 식별할 수 있습니다. 추가적으로, LLaMA와 같은 모델과 결합하여 세부적인 인사이트를 보완하면 더욱 강력한 평가 시스템을 구축할 수 있습니다.