Natural Language Processing (NLP)
자연어 처리(NLP)는 컴퓨터가 토큰부터 LLM까지 인간 언어를 분석하고 이해하며 생성하도록 하는 AI 분야입니다.
자연어 처리 (NLP)는 컴퓨터가 텍스트와 음성으로 인간의 언어를 분석하고 이해하며 생성하도록 하는 인공지능 (AI)의 한 분야입니다. 문장에서 이름을 찾는 것부터 책을 번역하거나 대화를 나누는 것까지 다양한 작업을 포함하며, 계산 언어학을 머신 러닝 및 딥러닝과 결합합니다. 웹 검색, 스팸 필터, 음성 어시스턴트, 휴대폰 키보드 제안 기능, 대규모 언어 모델 (LLM)을 기반으로 하는 챗봇은 모두 NLP를 사용합니다.
규칙 기반 시스템에서 대규모 언어 모델까지#
1954년 Georgetown-IBM 실험은 250개 단어 어휘와 6개 문법 규칙을 사용해 러시아어 문장 60개 이상을 영어로 번역했으며, Joseph Weizenbaum의 ELIZA(1966)는 키워드에 따라 미리 작성된 응답을 선택해 심리치료사를 흉내 냈습니다. 직접 작성한 규칙은 실제 텍스트의 모호성과 다양성을 처리하지 못했기 때문에 1980년대 후반부터 통계 NLP는 주석이 달린 텍스트에서 확률을 학습했습니다. 은닉 마르코프 모델은 품사를 태깅했고, 통계적 기계 번역은 수백만 개의 번역된 문장 쌍을 학습했습니다.
2010년대에는 신경망이 주류가 되었습니다. Word2vec(2013)은 관련 단어를 서로 가까이 배치하는 임베딩을 학습했으며, 순환 신경망 (RNN)은 문장을 한 번에 한 단어씩 읽었습니다. 트랜스포머(2017)는 순환 구조를 셀프 어텐션으로 대체해 모든 단어가 다른 모든 단어와 병렬로 관계를 맺도록 했습니다. BERT 및 GPT와 같은 사전 학습 트랜스포머는 라벨이 없는 텍스트로 언어를 학습한 뒤 각 작업에 필요한 소량의 라벨 데이터만 추가로 사용했습니다. 2022년 11월 ChatGPT 출시 이후 LLM은 작성된 지시만으로 다양한 NLP 작업을 처리해 왔습니다.
NLP 시스템의 텍스트 표현 방법#
최신 NLP 시스템은 먼저 토큰화로 텍스트를 전체 단어 또는 하위 단어 조각인 토큰으로 분할한 다음, 각 토큰을 임베딩 벡터에 매핑합니다. 일반적으로 트랜스포머인 신경망은 이 시퀀스를 각 토큰의 벡터가 주변 토큰을 반영하는 문맥 벡터로 변환하며, 작업별 출력은 전체 텍스트에 대한 하나의 라벨, 토큰별 태그, 답변 구간의 시작과 끝 또는 새로 생성된 토큰을 읽어 냅니다. 의미가 벡터에 담기므로 단어가 서로 달라도 문장이 서로 가까운 위치에 나타날 수 있습니다. all-MiniLM-L6-v2 문장 인코더가 이를 보여 줍니다.
from sentence_transformers import SentenceTransformer
# A small sentence encoder maps each text to a 384-dimensional vector
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
query = "How do I reset my password?"
candidates = ["I forgot my login credentials", "How do I reset my router?"]
# Encode all texts, then compare the query with each candidate by cosine similarity
embeddings = model.encode([query, *candidates])
scores = model.similarity(embeddings[0], embeddings[1:])[0]
for text, score in zip(candidates, scores):
print(f"{score:.2f} {text}")바꿔 쓴 문장인 "로그인 자격 증명을 잊어버렸습니다"는 질문과 0.68의 점수를 얻은 반면, 질문의 여섯 단어 중 다섯 단어를 반복하는 "라우터를 어떻게 재설정하나요?"는 0.53의 점수를 얻었습니다. 시맨틱 검색과 검색 증강 생성 (RAG)의 검색 단계에서도 동일한 비교 방식을 사용해 문서 순위를 매깁니다.
일반적인 NLP 작업#
- 감성 분석: 리뷰, 게시물 또는 설문 응답에 담긴 의견을 긍정, 부정 또는 중립으로 분류합니다.
- 개체명 인식 (NER): 사람, 조직, 장소 또는 날짜가 언급된 각 항목에 태그를 지정합니다.
- 질의응답: 문서 목록 대신 질문에 대한 답변을 반환합니다.
- 텍스트 요약: 문서의 핵심 내용을 유지하면서 더 짧은 텍스트로 압축합니다.
- 텍스트 생성: 토큰을 한 번에 하나씩 새 텍스트를 작성하며, 챗봇과 코딩 어시스턴트의 기반이 되는 작업입니다.
컴퓨터 비전에서의 NLP#
언어는 사람들이 컴퓨터 비전 모델에 무엇을 찾아야 하는지 알려 주는 수단이기도 합니다. NLP와 비전의 결합으로 이미지에 대해 읽고 쓸 수 있는 모델이 만들어졌습니다. 비전-언어 모델 (VLM)은 사진에 대한 질문에 답하고 이미지 캡션을 작성하며, CLIP은 이미지와 텍스트로 구성된 4억 개의 이미지-캡션 쌍을 사용해 공유 임베딩 공간을 학습했습니다. 오픈 보캐뷸러리 탐지기는 클래스 목록을 텍스트로 입력받습니다. Ultralytics YOLOE-26 모델에서 set_classes(["double-decker bus", "person"])를 호출하면 각 이름을 CLIP 토크나이저로 토큰화하고 Apple의 MobileCLIP2 텍스트 인코더로 인코딩합니다. 탐지기는 해당 텍스트 임베딩을 이미지 영역과 비교해 학습한 적이 없는 카테고리를 탐지하고 분할합니다.
NLP와 관련 용어 비교#
- 자연어 이해 (NLU): 사용자의 의도나 대명사가 가리키는 대상처럼 의미를 다루는 NLP 분야입니다. 텍스트를 생성하는 자연어 생성 (NLG)은 NLP의 또 다른 주요 분야입니다.
- 대규모 언어 모델: 수십억 개의 파라미터를 가진 트랜스포머 언어 모델로, 프롬프트를 통해 다양한 NLP 작업을 수행하지만 특정 작업 하나를 위해 학습된 소형 모델보다 요청당 비용이 높습니다.
- 음성 인식: 음성 오디오를 텍스트로 변환하며, NLP 모델은 변환된 텍스트를 해석합니다.
- 광학 문자 인식 (OCR): 인쇄되거나 손으로 쓴 텍스트의 이미지를 문자로 변환하며, 스캔한 문서를 NLP가 읽기 전에 수행하는 첫 단계입니다.










