■ SentenceTransformer 클래스의 encode 메소드를 사용해 문장 유사도를 구하는 방법을 보여준다.
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
from sentence_transformers import SentenceTransformer, util # 모델을 로드한다. sentenceTransformer = SentenceTransformer("all-MiniLM-L6-v2") # 문장 리스트를 설정한다. sentenceList = ["This is an example sentence", "Each sentence is converted"] # 문장을 벡터로 변환한다. embeddingNDArray1 = sentenceTransformer.encode(sentenceList) # 벡터를 출력한다. for sentence, embedding in zip(sentenceList, embeddingNDArray1): print(f"문장 : {sentence}") print(f"임베딩 : {embedding[:10]}...") # 벡터의 처음 10개 값만 출력한다. print() # 문장 유사도를 계산한다. sentence1 = "This is a test sentence" sentence2 = "This sentence is a test" # 문장을 벡터로 변환한다. embeddingNDArray2 = sentenceTransformer.encode(sentence1) embeddingNDArray3 = sentenceTransformer.encode(sentence2) # 유사도를 계산한다. similarity = util.pytorch_cos_sim(embeddingNDArray2, embeddingNDArray3) print(f"유사도 : {similarity.item()}") |
▶ 실행 결과
1 2 3 4 5 6 7 8 9 10 11 |
문장 : This is an example sentence 임베딩 : [ 0.06765687 0.06349589 0.04871309 0.07930496 0.03744806 0.00265279 0.03937496 -0.00709843 0.05936143 0.03153701]... 문장 : Each sentence is converted 임베딩 : [ 0.0864386 0.10276263 0.00539459 0.00204441 -0.00996337 0.02538547 0.04928759 -0.03062659 0.06872549 0.01013658]... 유사도 : 0.9119110107421875 |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
certifi==2024.6.2 charset-normalizer==3.3.2 filelock==3.14.0 fsspec==2024.6.0 huggingface-hub==0.23.3 idna==3.7 Jinja2==3.1.4 joblib==1.4.2 MarkupSafe==2.1.5 mpmath==1.3.0 networkx==3.3 numpy==1.26.4 nvidia-cublas-cu12==12.1.3.1 nvidia-cuda-cupti-cu12==12.1.105 nvidia-cuda-nvrtc-cu12==12.1.105 nvidia-cuda-runtime-cu12==12.1.105 nvidia-cudnn-cu12==8.9.2.26 nvidia-cufft-cu12==11.0.2.54 nvidia-curand-cu12==10.3.2.106 nvidia-cusolver-cu12==11.4.5.107 nvidia-cusparse-cu12==12.1.0.106 nvidia-nccl-cu12==2.20.5 nvidia-nvjitlink-cu12==12.5.40 nvidia-nvtx-cu12==12.1.105 packaging==24.0 pillow==10.3.0 PyYAML==6.0.1 regex==2024.5.15 requests==2.32.3 safetensors==0.4.3 scikit-learn==1.5.0 scipy==1.13.1 sentence-transformers==3.0.1 sympy==1.12.1 threadpoolctl==3.5.0 tokenizers==0.19.1 torch==2.3.1 tqdm==4.66.4 transformers==4.41.2 triton==2.3.1 typing_extensions==4.12.1 urllib3==2.2.1 |
※ pip install sentence-transformers 명령을 실행했다.