이번 글에서는 Azure AI Language의 여러 기능 중에서 NER와 PII를 중심으로 살펴보겠습니다.
이전 글에서 Azure AI Language가 텍스트를 이해하고 분석하는 NLP 서비스라는 큰 그림을 봤다면, 이번 글은 조금 더 좁혀서 텍스트 안에서 사람 이름, 장소, 조직명, 날짜, 전화번호, 이메일 같은 정보를 어떻게 찾아내는지에 집중합니다.
예를 들어 고객 상담 기록에 이런 문장이 있다고 해보겠습니다.
김민수님은 6월 15일 서울 강남점에 방문했고,
연락처는 minsu.kim@example.com입니다.
사람은 이 문장을 읽고 바로 알 수 있습니다. 김민수는 사람 이름이고, 6월 15일은 날짜이고, 서울 강남점은 장소이고, 이메일 주소는 개인정보에 가깝습니다. 하지만 프로그램이 이걸 자동으로 이해하려면 텍스트를 분석하는 과정이 필요합니다. 그 역할을 하는 대표 기능이 바로 NER와 PII 탐지입니다.
1. NER란?
NER는 Named Entity Recognition의 약자입니다. 한국어로는 보통 명명된 엔티티 인식이라고 합니다.
말이 조금 어렵지만, 뜻은 단순합니다. 문장 안에서 이름이 붙은 중요한 정보를 찾아내고, 그것이 어떤 종류인지 분류하는 기능입니다.
여기서 Entity는 텍스트 안에서 의미 있는 정보 단위를 말합니다. 예를 들어 사람 이름, 장소, 회사명, 날짜, 금액, 이메일 주소 같은 것들이 엔티티가 될 수 있습니다.
NER를 한 줄로 말하면
NER는 자유롭게 작성된 문장 속에서 사람, 장소, 조직, 날짜, 수량 같은 의미 있는 정보를 찾아내고, 각각의 종류를 붙여주는 기술입니다.
예를 들어 다음 문장을 보겠습니다.
이민정은 2026년 6월 20일에 서울에서 Microsoft 세미나에 참석했다.
NER를 적용하면 대략 이런 식으로 분석할 수 있습니다.
| 텍스트 | 분류 | 의미 |
|---|---|---|
| 이민정 | Person | 사람 이름 |
| 2026년 6월 20일 | DateTime | 날짜와 시간 정보 |
| 서울 | Location | 장소 |
| Microsoft | Organization | 조직 또는 회사 |
이렇게 분석된 결과는 검색, 자동 분류, 문서 태깅, 고객 상담 자동화, 개인정보 보호 등에 활용할 수 있습니다.
2. 비정형 텍스트에서 엔티티를 찾는다는 것
NER가 필요한 이유를 이해하려면 먼저 비정형 텍스트를 이해해야 합니다. 비정형 텍스트는 정해진 표나 양식 없이 자유롭게 작성된 글을 말합니다.
예를 들어 엑셀 표처럼 이름, 날짜, 전화번호가 각각 다른 열에 들어 있다면 분석하기 쉽습니다. 하지만 고객 상담 메모나 이메일처럼 한 문장 안에 모든 정보가 섞여 있으면 프로그램이 바로 처리하기 어렵습니다.
| 구분 | 예시 | 특징 |
|---|---|---|
| 정형 데이터 | 이름 / 날짜 / 연락처가 각각 열로 구분된 표 | 규칙이 명확해서 프로그램이 처리하기 쉬움 |
| 비정형 텍스트 | “김민수님이 어제 강남점에 방문했습니다.” | 정보가 문장 안에 섞여 있어 의미 분석이 필요함 |
NER는 이 비정형 텍스트를 조금 더 구조화된 형태로 바꿔줍니다. 문장을 읽고 “여기는 사람 이름”, “여기는 장소”, “여기는 날짜”처럼 표시해주는 것입니다.
NER와 단순 키워드 검색의 차이
NER를 처음 보면 “그냥 단어 검색이랑 비슷한 거 아닌가?”라고 생각할 수 있습니다. 하지만 둘은 다릅니다.
단순 키워드 검색은 특정 단어가 있는지만 찾습니다. 반면 NER는 문맥을 보고 그 단어가 어떤 역할을 하는지 판단합니다.
| 구분 | 단순 키워드 검색 | NER |
|---|---|---|
| 기준 | 글자가 일치하는지 확인 | 문맥 속 의미를 보고 분류 |
| 예시 | “서울”이라는 단어가 있는지 찾음 | “서울”이 장소인지, 조직명 일부인지 판단 |
| 장점 | 단순하고 빠름 | 의미 기반 분석이 가능함 |
| 한계 | 표현이 조금만 달라져도 놓칠 수 있음 | 모델 판단이 틀릴 수 있음 |
예를 들어 “애플”이라는 단어가 있을 때, 단순 검색은 그냥 애플이라는 글자를 찾습니다. 하지만 NER나 Entity Linking은 문맥을 보고 과일을 말하는지, Apple Inc.라는 회사를 말하는지 구분하려고 합니다.
3. NER가 찾을 수 있는 범주
Azure AI Language의 NER는 여러 종류의 엔티티를 찾을 수 있습니다.
대표적으로 사람, 직업 유형, 장소, 조직, 사건, 제품, 주소, 전화번호, 이메일, URL, IP, 날짜, 수량 등이 있습니다.
| 범주 | 의미 | 예시 |
|---|---|---|
| Person | 사람 이름 | 김민수, Jane Smith |
| PersonType | 직업, 역할, 사람 유형 | 의사, 학생, 관리자 |
| Location | 장소, 지역, 지리적 위치 | 서울, 강남역, 한강 |
| Organization | 회사, 기관, 단체 | Microsoft, 서울대학교, 국민은행 |
| Event | 사건, 행사, 이벤트 | 올림픽, 콘퍼런스, 세미나 |
| Product | 제품이나 물리적 개체 | 노트북, 스마트폰, 자동차 |
| Address | 주소 | 서울특별시 강남구... |
| PhoneNumber | 전화번호 | 010-1234-5678 |
| 이메일 주소 | name@example.com | |
| URL | 웹사이트 주소 | https://example.com |
| IP | 네트워크 IP 주소 | 192.168.0.1 |
| DateTime | 날짜와 시간 | 2026년 6월 20일, 내일 오후 3시 |
| Quantity | 숫자와 수량 | 3개, 20%, 15kg |
주의할 점
기능과 범주는 언어별로 지원 수준이 다를 수 있습니다. 특히 한국어에서는 일부 범주가 영어보다 제한적으로 동작할 수 있으므로, 실습 전 지원 언어와 Region을 확인하는 것이 좋습니다.
4. PII란?
PII는 Personally Identifiable Information의 약자입니다. 한국어로는 개인 식별 정보라고 볼 수 있습니다.
PII는 특정 개인을 직접 또는 간접적으로 식별할 수 있는 정보입니다. 이름, 전화번호, 이메일, 주소, 계좌번호, 주민등록번호에 해당하는 유형의 정보가 대표적입니다.
NER가 “문장 속에서 여러 종류의 개체를 찾는 기능”이라면, PII 탐지는 그중에서도 개인정보 보호와 관련된 민감한 정보를 찾는 기능이라고 이해하면 됩니다.
| 구분 | 주요 목적 | 예시 |
|---|---|---|
| NER | 텍스트 속 의미 있는 개체를 분류 | 사람, 장소, 조직, 날짜, 수량 |
| PII 탐지 | 개인을 식별할 수 있는 민감 정보를 찾음 | 이메일, 전화번호, 주소, 계좌번호 |
PII를 자동 탐지해야 하는 이유
고객 상담 기록, 지원 티켓, 설문 응답, 이력서, 이메일에는 개인정보가 섞여 들어갈 수 있습니다. 이 데이터를 분석하거나 공유할 때 개인정보가 그대로 노출되면 문제가 생길 수 있습니다.
예를 들어 고객 불만 분석을 위해 상담 기록을 데이터 분석팀에 넘긴다고 해보겠습니다. 분석팀이 꼭 고객의 전화번호와 이메일을 볼 필요는 없습니다. 이럴 때 PII 탐지를 이용해 개인정보를 미리 찾아내고 마스킹할 수 있습니다.
원본:
김민수 고객님 연락처는 010-1234-5678이고 이메일은 minsu@example.com입니다.
마스킹 후:
김민수 고객님 연락처는 [전화번호]이고 이메일은 [이메일]입니다.
이처럼 PII 탐지는 단순한 분석 기능을 넘어서 데이터 보호와 연결됩니다. 텍스트 분석을 잘하는 것도 중요하지만, 보호해야 할 정보를 보호하는 것이 더 중요할 때가 많습니다.
5. Language Studio에서 NER 실행하기

NER를 처음 실습할 때는 코드를 바로 작성하기보다 Language Studio에서 먼저 실행해보는 것이 좋습니다. Language Studio는 Azure AI Language 기능을 웹 화면에서 테스트할 수 있는 도구입니다.
실습 흐름은 크게 다음과 같습니다.
- Language Studio에 접속한다.
- Azure Language 리소스를 선택한다.
- Extract information 메뉴로 이동한다.
- Extract named entities 기능을 선택한다.
- 분석할 텍스트를 입력하거나 파일을 업로드한다.
- 실행 버튼을 눌러 결과를 확인한다.


| 단계 | 작업 | 확인할 것 |
|---|---|---|
| 1 | Language Studio 접속 | Azure 계정 로그인 여부 |
| 2 | Language 리소스 선택 | 올바른 Region의 리소스인지 확인 |
| 3 | Extract named entities 선택 | NER 기능을 선택했는지 확인 |
| 4 | 텍스트 입력 | 언어 설정과 입력 텍스트 확인 |
| 5 | Run 실행 | 결과 카드와 원문 하이라이트 확인 |
예제로 다음 문장을 입력해보겠습니다.



실행 결과에서는 원문 텍스트 안의 특정 단어가 하이라이트되고, 오른쪽 또는 아래쪽 결과 영역에서 각 엔티티의 값, 범주, 신뢰도를 확인할 수 있습니다.
6. 실행 결과 해석하기
NER 결과를 볼 때는 단순히 “찾았다”만 보면 안 됩니다. 보통 다음 세 가지를 함께 확인해야 합니다.
- Entity value: 실제로 찾아낸 텍스트 값
- Category: 해당 값이 어떤 종류로 분류되었는지
- Confidence score: 모델이 그 판단을 얼마나 확신하는지
| 항목 | 의미 | 예시 |
|---|---|---|
| Entity value | 모델이 실제로 찾은 단어나 구 | 홍길동 |
| Category | 그 값이 어떤 종류인지 나타내는 분류 | Person |
| Confidence score | 모델이 자신의 판단을 얼마나 확신하는지 나타내는 값 | 0.98 |
Confidence Score는 어떻게 봐야 할까?
Confidence score는 보통 0과 1 사이의 값으로 표현됩니다. 1에 가까울수록 모델이 더 확신한다는 의미입니다.
하지만 여기서 조심해야 할 점이 있습니다. Confidence score가 높다고 항상 정답이라는 뜻은 아닙니다. 모델이 강하게 확신했지만 틀릴 수도 있고, 낮은 점수로 맞출 수도 있습니다.
| Confidence Score | 해석 | 실무에서의 처리 |
|---|---|---|
| 높음 | 모델이 해당 분류를 강하게 확신 | 자동 처리 후보로 둘 수 있음 |
| 중간 | 판단은 했지만 확신이 애매함 | 검토 대상으로 분류 |
| 낮음 | 모델 판단을 신뢰하기 어려움 | 자동 처리하지 않고 사람이 확인 |
즉, confidence score는 정답 여부가 아니라 모델의 확신 정도입니다. 그래서 중요한 개인정보 처리나 법적 판단에는 이 점수를 그대로 믿고 자동 처리하기보다 검토 단계를 두는 것이 좋습니다.
7. True Positive / False Positive / False Negative
NER와 PII 탐지 결과는 맞을 수도 있고 틀릴 수도 있습니다. 이때 결과를 평가하기 위해 자주 사용하는 개념이 True Positive, True Negative, False Positive, False Negative입니다.
처음에는 용어가 헷갈릴 수 있으니 PII 탐지를 예로 들어보겠습니다. 우리가 찾고 싶은 것은 전화번호입니다.
| 구분 | 의미 | 전화번호 탐지 예시 |
|---|---|---|
| True Positive | 찾아야 할 것을 제대로 찾음 | 010-1234-5678을 전화번호로 정확히 인식 |
| True Negative | 없다고 판단해야 할 것을 제대로 없음으로 판단 | 전화번호가 없는 문장에서 아무것도 찾지 않음 |
| False Positive | 아닌데 맞다고 잘못 찾음 | 상품번호 1234-5678을 전화번호로 오인 |
| False Negative | 찾아야 하는데 놓침 | 010-1234-5678이 있는데 전화번호로 인식하지 못함 |
쉽게 기억하는 방법
Positive는 “모델이 찾았다”는 뜻이고, Negative는 “모델이 찾지 않았다”는 뜻입니다. True는 그 판단이 맞은 경우, False는 그 판단이 틀린 경우입니다.
PII 탐지에서는 특히 False Negative가 위험할 수 있습니다. 개인정보가 있는데도 모델이 놓치면, 마스킹되지 않은 개인정보가 그대로 노출될 수 있기 때문입니다.
반대로 False Positive가 너무 많으면 문제가 아닌 정보까지 개인정보로 처리되어 데이터 활용성이 떨어집니다. 따라서 좋은 모델은 필요한 정보를 잘 찾으면서도, 불필요한 오탐은 줄여야 합니다.
8. NER 결과를 평가하는 방법
NER 결과를 제대로 평가하려면 단순히 “몇 개 맞았다”만 보면 부족합니다. 왜냐하면 모델이 많이 찾는다고 항상 좋은 것도 아니고, 조심스럽게 적게 찾는다고 항상 좋은 것도 아니기 때문입니다.
이때 자주 사용하는 지표가 Precision, Recall, F1-score입니다.
| 지표 | 의미 | 쉽게 말하면 |
|---|---|---|
| Precision | 모델이 찾았다고 한 것 중 실제로 맞은 비율 | 헛짚지 않는 능력 |
| Recall | 실제로 찾아야 할 것 중 모델이 찾아낸 비율 | 놓치지 않는 능력 |
| F1-score | Precision과 Recall의 균형을 보는 지표 | 정확하게 찾고, 놓치지도 않는 균형 |
간단한 예시로 이해하기
어떤 문서에 실제 전화번호가 10개 있다고 해보겠습니다. 모델은 전화번호라고 8개를 찾았습니다. 그중 6개는 진짜 전화번호였고, 2개는 전화번호가 아닌데 잘못 찾은 값이었습니다.
| 항목 | 값 | 해석 |
|---|---|---|
| 실제 전화번호 수 | 10개 | 정답 기준 |
| 모델이 찾은 수 | 8개 | 모델이 Positive라고 판단한 수 |
| 맞게 찾은 수 | 6개 | True Positive |
| 잘못 찾은 수 | 2개 | False Positive |
| 놓친 수 | 4개 | False Negative |
이 경우 Precision과 Recall은 다음처럼 계산할 수 있습니다.
Precision = True Positive / (True Positive + False Positive)
= 6 / (6 + 2)
= 0.75
Recall = True Positive / (True Positive + False Negative)
= 6 / (6 + 4)
= 0.60
Precision이 높다는 것은 모델이 “찾았다”고 한 것들이 대체로 맞다는 뜻입니다. Recall이 높다는 것은 실제로 찾아야 할 정보를 많이 놓치지 않았다는 뜻입니다.
PII 탐지처럼 개인정보 누락이 큰 문제가 되는 상황에서는 Recall을 특히 중요하게 볼 수 있습니다. 반대로 잘못 탐지된 값 때문에 업무 흐름이 많이 꼬이는 상황이라면 Precision도 중요합니다.
한국어에서 NER가 어려운 이유
한국어 NER는 영어보다 어려운 경우가 많습니다. 한국어는 조사와 어미가 붙고, 띄어쓰기가 일관되지 않을 수 있으며, 이름이나 장소가 문맥에 따라 다르게 해석될 수 있기 때문입니다.
| 어려운 이유 | 예시 | 영향 |
|---|---|---|
| 조사 결합 | 서울에서, 민정이가, 회사로 | 엔티티의 정확한 경계를 잡기 어려움 |
| 띄어쓰기 차이 | 강남점 / 강남 점 | 같은 의미라도 다르게 인식될 수 있음 |
| 동음이의어 | 애플, 카카오, 한강 | 조직인지 장소인지 문맥 판단이 필요함 |
| 신조어와 약어 | 줄임말, 브랜드명, 커뮤니티 표현 | 일반 모델이 놓칠 수 있음 |
그래서 한국어 데이터를 다룰 때는 결과를 직접 확인해보고, 필요한 경우 사용자 지정 NER나 후처리 규칙을 함께 고려하는 것이 좋습니다.
9. 개인정보 처리 시 주의할 점
PII 탐지는 편리하지만, 개인정보를 다루는 기능이기 때문에 사용 목적과 처리 범위를 신중하게 정해야 합니다.
개인정보 처리에서 가장 중요한 원칙은 단순합니다. 필요한 목적에 맞게 최소한만 수집하고, 동의된 목적 안에서만 사용하며, 필요가 끝나면 안전하게 삭제해야 한다는 것입니다.
개인정보 처리 주의
PII 탐지 기능을 사용한다고 해서 개인정보를 마음대로 수집하거나 활용해도 되는 것은 아닙니다. 탐지 결과는 보호와 최소 수집을 위한 보조 도구로 사용해야 하며, 사용 목적과 동의 범위를 벗어나면 안 됩니다.
개인정보 마스킹과 데이터 보호
PII 탐지의 대표적인 활용 방식은 마스킹입니다. 마스킹은 민감한 값을 그대로 보여주지 않고, 일부 또는 전체를 가리는 작업입니다.
| 원본 정보 | 마스킹 예시 | 목적 |
|---|---|---|
| 010-1234-5678 | 010-****-5678 | 연락처 노출 최소화 |
| minsu@example.com | m****@example.com | 이메일 식별 가능성 줄이기 |
| 서울시 강남구... | [주소] | 주소 정보 보호 |
예를 들어 상담 기록을 품질 평가용으로 공유할 때, 상담 내용은 필요하지만 고객의 전화번호나 이메일은 필요하지 않을 수 있습니다. 이 경우 PII 탐지로 민감 정보를 찾아 마스킹한 뒤 공유하는 방식이 더 안전합니다.
PII 탐지 결과도 완벽하지 않다
중요한 점은 PII 탐지 결과도 완벽하지 않다는 것입니다. 모델이 개인정보를 놓칠 수도 있고, 개인정보가 아닌 것을 개인정보로 잘못 판단할 수도 있습니다.
따라서 개인정보가 포함된 데이터를 다룰 때는 다음과 같은 보호 장치를 함께 고려해야 합니다.
- PII 탐지 결과를 사람이 검토하는 단계 추가
- 중요 데이터는 자동 처리하지 않고 승인 절차 적용
- 마스킹 후에도 원본 접근 권한을 제한
- 로그나 저장소에 개인정보가 남지 않도록 관리
- 데이터 사용 목적과 보관 기간을 명확히 설정
AI 기능은 개인정보 보호를 도와주는 도구가 될 수 있지만, 책임은 여전히 시스템을 설계하고 운영하는 사람에게 있습니다.
10. 정리
NER는 비정형 텍스트에서 사람, 장소, 조직, 날짜, 수량 같은 의미 있는 엔티티를 찾아내는 기능입니다. 단순히 특정 단어가 있는지 찾는 것이 아니라, 문맥을 바탕으로 그 단어가 어떤 종류의 정보인지 분류합니다.
PII는 개인을 식별할 수 있는 정보입니다. 전화번호, 이메일, 주소처럼 민감한 정보가 텍스트에 포함되어 있을 때 이를 자동으로 탐지하면, 마스킹이나 접근 제한 같은 데이터 보호 작업에 활용할 수 있습니다.
하지만 NER와 PII 탐지 결과는 항상 완벽하지 않습니다. Confidence score는 모델의 확신 정도일 뿐 정답 보장이 아니며, True Positive, False Positive, False Negative처럼 결과를 평가하는 기준을 함께 이해해야 합니다.
특히 개인정보를 다룰 때는 자동 탐지 기능을 그대로 신뢰하기보다, 사용 목적, 동의 범위, 최소 수집, 마스킹, 검토 절차를 함께 고려해야 합니다.
11. 전체 흐름 한 번에 정리
| 흐름 | 설명 | 예시 |
|---|---|---|
| 1. 텍스트 입력 | 분석할 비정형 텍스트를 준비 | 고객 상담 기록, 이메일, 리뷰 |
| 2. NER 실행 | 문장 안의 엔티티를 찾고 범주를 분류 | Person, Location, Organization |
| 3. PII 탐지 | 개인을 식별할 수 있는 민감 정보를 찾음 | 전화번호, 이메일, 주소 |
| 4. 결과 해석 | Entity value, Category, Confidence 확인 | 서울 → Location, 0.99 |
| 5. 성능 평가 | 맞게 찾았는지, 놓쳤는지, 잘못 찾았는지 평가 | TP, FP, FN, Precision, Recall |
| 6. 보호 조치 | 필요한 경우 개인정보를 마스킹하거나 접근 제한 | 010-****-5678 |
한 줄로 정리하면
NER는 텍스트 속 의미 있는 이름표를 찾아주는 기능이고, PII 탐지는 그중에서도 개인정보처럼 보호가 필요한 정보를 찾아내는 기능입니다.
12. 핵심 키워드 정리
| 키워드 | 의미 |
|---|---|
| NER | 텍스트에서 사람, 장소, 조직 같은 개체를 찾고 분류하는 기능 |
| Named Entity Recognition | NER의 전체 이름으로, 명명된 엔티티 인식을 의미 |
| Entity | 텍스트 안에서 의미 있는 정보 단위 |
| PII | 개인을 식별할 수 있는 개인정보 |
| Personally Identifiable Information | PII의 전체 이름으로, 개인 식별 정보를 의미 |
| Person | 사람 이름에 해당하는 NER 범주 |
| Location | 장소나 지리적 위치에 해당하는 NER 범주 |
| Organization | 회사, 기관, 단체에 해당하는 NER 범주 |
| DateTime | 날짜와 시간 정보를 나타내는 NER 범주 |
| Quantity | 수량, 비율, 숫자 값을 나타내는 NER 범주 |
| Confidence Score | 모델이 자신의 판단을 얼마나 확신하는지 나타내는 값 |
| True Positive | 찾아야 할 정보를 정확히 찾은 경우 |
| True Negative | 없어야 할 정보를 찾지 않은 올바른 경우 |
| False Positive | 아닌 정보를 맞다고 잘못 찾은 경우 |
| False Negative | 찾아야 할 정보를 놓친 경우 |
| Precision | 모델이 찾은 것 중 실제로 맞은 비율 |
| Recall | 실제로 찾아야 할 것 중 모델이 찾아낸 비율 |
| F1-score | Precision과 Recall의 균형을 나타내는 지표 |
13. 다음 글 예고
이번 글에서는 NER와 PII의 개념, 실행 결과 해석 방법, 성능 평가와 개인정보 처리 시 주의할 점을 살펴봤습니다. 다음 글에서는 Azure AI Language의 감정 분석과 핵심 구 추출을 활용해 고객 리뷰를 분석하는 방법을 알아보겠습니다.