Transformers
문장을 이해하는 AI — 감정분석 · 유사도 · 요약 · 번역
CLICK TO OPEN
문장을 이해하는 AI — 감정분석 · 유사도 · 요약 · 번역
CLICK TO OPEN
pipeline · 감정분석 · 문장유사도 · 텍스트생성 · 요약+번역
문장 유사도 비교
문장 임베딩 & 코사인 유사도
SentenceTransformer로 문장을 고정 차원 벡터(임베딩)로 변환 → 두 벡터 사잇각의 코사인값으로 의미 유사도 수치화. 단어가 달라도 의미가 같으면 1에 가까움
설치 명령어
전체 코드
용어 사전
임베딩 (Embedding) — 문장·단어를 숫자 좌표로 바꾸는 마법. 의미가 비슷하면 좌표도 가까움
예) "강아지"와 "개"는 가까운 점, "강아지"와 "비행기"는 멀리 떨어진 점
벡터 (Vector) — 숫자를 일렬로 늘어놓은 한 줄. 줄 하나 = 점 하나
· [3] → 1차원 (숫자선 위 한 점)
· [3, 5] → 2차원 (지도 위 동쪽 3걸음·북쪽 5걸음 지점)
· [3, 5, 2] → 3차원 (방 안 가로3·세로5·높이2 위치)
· [0.2, -0.7, …, 0.1] (384개) → 384차원 (의미 공간 점 하나)
그래프 화살표 = 원점에서 그 점까지 그은 선
코퍼스 (Corpus) — AI가 공부한 책더미. 인터넷·위키·뉴스·소설 수십억 문장 모아놓은 학습용 텍스트 창고
예) 사람이 책 많이 읽고 똑똑해지듯 AI도 코퍼스 읽고 언어 배움
토크나이즈 (Tokenize) — 문장을 작은 조각으로 쪼개기. 컴퓨터는 문장 통째보다 조각 단위로 인식
예) "I love cats" → ["I", "love", "cats"] (단어 3조각). 한국어는 "사과를먹다" → ["사과", "를", "먹다"]
트랜스포머 (Transformer) — 2017년 구글이 발표한 AI 두뇌 구조. 문장 속 단어들이 서로 누구를 가리키는지 한꺼번에 살핌
예) "나는 사과를 먹었다 그것은 맛있었다" → "그것"이 "사과" 가리킴을 자동 파악. ChatGPT·번역기·이미지 생성 AI 모두 이 구조 기반
Tensor (텐서) — 벡터를 N차원으로 확장한 그릇. PyTorch 데이터 형식
· 0차원 = 숫자 한 개 (스칼라) 5
· 1차원 = 벡터 [1, 2, 3] (줄)
· 2차원 = 행렬 [[1,2],[3,4]] (엑셀 시트)
· 3차원 = [[[..],[..]],[[..],[..]]] (큐브, 주사위 쌓기)
핵심: 벡터 = 1차원 텐서. 텐서는 벡터의 큰 형제. GPU로 일괄 계산 가능
벡터 시각화 (문장 = 공간의 점)
실제는 384차원이라 그릴 수 없어 2차원으로 단순화. 두 점에서 원점(0,0)으로 그은 화살표 사이 각도가 작을수록 의미가 비슷함
"He is reading a book in the library"
"He is at the library reading a book"
"The cat is sleeping on the sofa"
"Tomorrow, I have a math exam at school"
감정 분석
감정 분석 Sentiment Analysis
영어 문장 입력 → POSITIVE(긍정) · NEGATIVE(부정) 판별 + 신뢰도(0~1) 반환. 리뷰·SNS 평판 분석에 활용
전체 코드
결과 해석
• label — POSITIVE(긍정) · NEGATIVE(부정) 두 값
• score — 0~1 확률값, 1에 가까울수록 확신
• 부정 예시 "I'm having a hard time today" → NEGATIVE
• 한계 — 영어 전용, 중립·복합 감정 표현 미지원 (기본 모델 기준)
용어 사전
Forward (모델 forward) — 입력 넣어 출력 받는 한 번의 통과 = 추론(inference)
Softmax (소프트맥스) — 모델이 뽑은 날숫자 묶음을 0~1 확률값으로 변환하는 함수. 모든 값 합 = 1 (= 100%)
· 큰 값은 더 키우고, 작은 값은 더 줄임 → "이게 정답이다" 강조
· 예) 모델 원본 출력 [2.0, 1.0, 0.1] → softmax → [0.66, 0.24, 0.10] (합 1)
· 감정 분석 점수 0.9998도 softmax 통과한 확률값. 그래서 "확신도"로 읽기 가능
텍스트 생성
텍스트 생성 — GPT-2
입력 문장을 시드로 받아 뒤 단어를 한 토큰씩 예측·이어붙임 → 자동 글짓기 (영어 전용)
전체 코드
주요 옵션
• max_new_tokens — 생성 토큰 상한 (1 토큰 ≈ 영어 4글자)
• num_return_sequences — 동일 입력에 대한 후보 개수
• truncation — 1024 토큰 초과 입력 잘라내기
• 한계 — GPT-2 = 한국어 약함, 사실성 미보장
영문 요약
영문 요약 — T5-small
긴 영어 단락 → 핵심 문장 추출·재작성 (입력 영어 → 출력 영어). 인코더-디코더 구조
전체 코드
모델 특징
• T5 — Text-To-Text Transfer Transformer, 모든 NLP를 "텍스트 → 텍스트" 변환으로 통일
• min_length / max_length — summarizer(text, min_length=20, max_length=60) 형태로 호출 시 지정 (토큰 단위)
• 한계 — 영어 전용 (한국어 입력 시 품질 저하)
용어 사전
인코더 (Encoder) — 입력 문장을 받아 의미 벡터(문맥 표현)로 압축하는 부분
· 단어 하나하나가 아닌 문장 전체의 뜻을 숫자 묶음으로 요약
· 예: "고양이가 매트 위에 있다" → [0.3, -1.2, 0.8, ...] (수백 차원 벡터)
· 역할 = "원문 이해" 단계
디코더 (Decoder) — 인코더가 만든 숫자 벡터를 다시 글자(문장)로 변환하는 부분
· 인코더 = "글자 → 숫자", 디코더 = "숫자 → 글자" (반대 방향)
· 한 글자(토큰)씩 차례대로 만들어 이어붙임 → 새 문장 완성
· 인코더-디코더 결합 = 번역·요약·질의응답에 적합 (T5, BART, mT5 계열)
Task Prefix (태스크 접두사) — 모델에게 "이번엔 무슨 일 시킬게" 알려주는 머리말
· 비유: 같은 직원에게 일 시킬 때 "요약해줘:" / "번역해줘:" 라고 앞에 한 마디 붙이는 것
· T5는 학습 때부터 "summarize: 원문..." "translate English to Korean: ..." 형태로 배움 → 접두사가 곧 작업 지시
· 한 모델로 요약·번역·분류 다 가능한 비결 = 접두사만 바꾸면 됨
· 우리가 pipeline("summarization", ...) 호출하면 라이브러리가 "summarize: "를 자동으로 앞에 붙여줌 → 직접 안 써도 됨
한국어 번역
요약 + 한국어 번역 — GoogleTranslator
T5 요약 결과(영어)를 구글 번역 API로 한국어 변환 → 영어 모델 한계 보완 파이프라인
설치 명령어
전체 코드
코드 구조 한눈에
• 1~2 — 라이브러리 import (transformers + deep_translator)
• 3 — trans_en_to_ko() 번역 함수 정의 (docstring 포함)
• 4~5 — T5 요약 파이프라인 생성 + 원문 준비
• 6~8 — 요약 실행 → 영어 결과 추출 · 출력
• 9~11 — 영어 요약 → 한국어 번역 · 출력
파이프라인 흐름
• 원문(영) → T5 요약 → 요약(영) → GoogleTranslator → 요약(한)
• 장점 — 무료, API 키 불필요, 다국어 지원
• 한계 — 인터넷 필수, 호출량 과다 시 차단 가능, 번역 품질은 구글 의존