언어 챗봇 만들기1. 코싸인 유사도

image.png

# 필요한 라이브러리 설치 (Colab이나 Jupyter 환경에서 실행 시 필요)
!pip install -q sentence-transformers

# 라이브러리 임포트
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from sentence_transformers import SentenceTransformer

# SentenceTransformer 모델 초기화
model = SentenceTransformer('all-MiniLM-L6-v2')

# 단어 'france'와 'french'의 임베딩 생성
embedding_a = model.encode("france").reshape(1, -1)
embedding_b = model.encode("french").reshape(1, -1)

# 코사인 유사도 계산
cosine_sim = cosine_similarity(embedding_a, embedding_b)[0][0]

# 결과 출력
print("Cosine Similarity between 'france' and 'french':", cosine_sim)

실습1. french 와 france 의 유사도를 구하기

# 필요한 라이브러리 설치 (Colab이나 Jupyter 환경에서 실행 시 필요)
#!pip install -q sentence-transformers #문자를 임베딩하는 클래스 

# 라이브러리 임포트
import numpy as np #배열을 다루는 수학 라이브러리
from sklearn.metrics.pairwise import cosine_similarity #코사인 유사도
from sentence_transformers import SentenceTransformer #문장을 임배딩

# SentenceTransformer 모델 초기화
model = SentenceTransformer('all-MiniLM-L6-v2') #간결하면서 높은 성능을 보이는 사전에 훈련된 언어 모델 

# 단어 'france'와 'french'의 임베딩 생성

#france 를 벡터로 변환하고 reshape로 2차원으로 변환
embedding_a = model.encode("france").reshape(1, -1)
#french 를 벡터로 변환하고 reshape로 2차원으로 변환
embedding_b = model.encode("french").reshape(1, -1)

print( embedding_a)

# 코사인 유사도 계산
cosine_sim = cosine_similarity(embedding_a, embedding_b)[0][0]

# 결과 출력
print("Cosine Similarity between 'france' and 'french':", cosine_sim)

Cosine Similarity between 'france' and 'french': 0.74060774

image.png

오늘의 마지막 문제. 다음의 질문을 심리 상담 언어 모델에게 했을 때 적절한 답을 할 수 있도록 a 변수의 문장과 코싸인 유사도가 높은것이 b와 c 중 무엇인지 파이썬 코드로 출력하기

a = '하루 종일 우울해요'
b = '남편만 보면 화가 치밀어 오르고 감정 조절이 안돼요'
c = '오전에 우울하다 오후가 되면 괜찮아요'


# 필요한 라이브러리 설치 (Colab이나 Jupyter 환경에서 실행 시 필요)
#!pip install -q sentence-transformers #문자를 임베딩하는 클래스 

# 라이브러리 임포트
import numpy as np #배열을 다루는 수학 라이브러리
from sklearn.metrics.pairwise import cosine_similarity #코사인 유사도
from sentence_transformers import SentenceTransformer #문장을 임배딩

# SentenceTransformer 모델 초기화
model = SentenceTransformer('all-MiniLM-L6-v2') #간결하면서 높은 성능을 보이는 사전에 훈련된 언어 모델 

# 단어 'france'와 'french'의 임베딩 생성

#france 를 벡터로 변환하고 reshape로 2차원으로 변환
embedding_a = model.encode('하루 종일 우울해요').reshape(1, -1)
#french 를 벡터로 변환하고 reshape로 2차원으로 변환
embedding_b = model.encode('남편만 보면 화가 치밀어 오르고 감정 조절이 안돼요').reshape(1, -1)
embedding_c = model.encode('오전에 우울하다 오후가 되면 괜찮아요').reshape(1, -1)

#print( embedding_a)

# 코사인 유사도 계산
cosine_sim = cosine_similarity(embedding_a, embedding_b)[0][0]
cosine_sim2 = cosine_similarity(embedding_a, embedding_c)[0][0]

# 결과 출력
print("a와 b의 유사도", cosine_sim)
print("a와 c의 유사도", cosine_sim2)

image.png

문제.