언어학 기반의 욕설 확장형 패턴 구축 # 음성학 #음운론 #욕설 필터링

나옹
saraminlab
Published in
6 min readJul 30, 2021

들어가며

온라인 속 익명성은 의견 표출의 자유성을 보장하지만 욕설 및 음란어 등을 포함한 언어폭력 사례를 양산한다는 역기능이 있다. 이를 제재하기 위한 필터 기능 개발에는 (1) 욕설 사전 구축을 통한 단어 매칭, 혹은 (2) 라벨링된 데이터를 학습시키는 방법이 있다. (1)과 (2) 의 장단점은 다음과 같다:

사람인에서 제공하는

취준진담, 면접후기, 기업리뷰, 채팅 플랫폼, We 라운지, 파랑새, K프로젝트, 인재풀, 직무키워드 입력 서비스

에 메세지 필터링 기능을 적용하기 위해 (1)과 (2)의 장점은 살리면서 단점은 줄일 수 있는 하이브리드 방법을 고안하였다.

이 글에서는 (1)의 단점을 줄이기 위한 비속어 사전 확장 방법에 대해서 기술하도록 하겠다.

데이터 수집

사람인 내부 욕설사전과 네이버 금칙어 리스트를 사용하여 비속어를 수집하였다. 추가적으로 일간베스트의 연예, 정치 게시판을 크롤링해 수동 추출하는 방법도 병행하였다.

그 안에서 기본 욕설과 확장형을 다음과 같이 구분하였다.

확장형은 필터링을 회피하기 위해 유저들이 유사 발음으로 생성해낸 것으로, (예, “시파”는 발음이 “시발”과 유사하여 욕설의 늬앙스를 전달하지만 사전 비매칭으로 필터링에 실패한다) 이는 한국어의 음성학적, 음운론적 규칙을 따르고 있다. 언어학 비전공자가 어떻게 규칙을 알아서 따른다는 것인가?

화자(speakers)들은 발화할 때 무의식적으로 그들의 모국어에 대한 언어학적 규칙을 인지하고 있다.

간단하게 테스트를 해보자:

“씨파 존나 아프네” vs. “시갈 존나 아프네”

이 문장에서 당신이 한국어 모국어 화자라면 어렵지 않게 ‘시발’과 유사한 단어는 ‘시파’라고 판단할 것이다.

이제, 수집된 데이터를 자동 확장하기 위해 한국어 자음과 모음의 발성 (articulation)과 음운 배열(phonological rules)에 기반하여 변형형 생성 규칙을 정의하도록 하자.

데이터 확장

1. 한국어 음성학

음성학이란 자음과 모음의 생산에 대한 연구이다. 한국어의 자음은 조음방법 (Manner of articulation)과 조음위치 (Place of articulation)에 따라 다음과 같이 분류된다.

Manner of articulation은 발성 시, air 흐름의 방해도에 따라

(방해도 높음) Stop > Affricate > Fricative > Nasal > Liquid (방해도 낮음)

의 순서로 정렬된다. 예를 들어, Stop인 ㅂ(/p/), ㅃ(/p’/),ㅍ(/ph/)는 Liquid인 ㄹ(/l/)과 비교했을 때 oral cavity 안에서 공기의 흐름이 매끄럽다.

Place of articulation은 조음 위치로, 예를 들어, Bilabial인ㅂ(/p/), ㅃ(/p’/),ㅍ(/ph/)는 윗입술과 아랫입술의 마찰로 발성된다.

자음 변형형은 대개 기본형과 유사한 Manner of articulation 과 Place of articulation 군집에서 일어난다. 이에, 아래와 같이 자음 변형 규칙을 작성하여 수집된 데이터를 확장하였다.

‘시발’의 예를 다시 들면, 첫 음절의 ㅅ(/s/)은 Alveolar Fricative로 변형은 Alveolar Fricative인 ㅆ(/s’/)과 Alveolar Stop인 ㄷ(/t/), ㄸ(/t’/), ㅌ(/th/)에 제한됨을 알 수 있다.

다음은 모음 분류에 대해 알아보자.

모음은 고설성(Tongue Height)과 전설성 (Tongue Frontness)로 다음과 같이 분류된다.

자음과 마찬가지로, 모음 변형은 기본형과 유사한 Tongue Height과 Tongue Frontness 군집에서 일어나며 그에 따라 아래 표를 작성하여 사전을 확장하였다.

2. 한국어 음운론

1차적으로 자음과 모음을 이용하여 변형형을 생성하였고 음운론적 규칙(neighbouring sounds에 의한 말소리 변화 규칙)을 추가 적용하여 확장형 사전을 최종 완성하였다. Sohn (1999, pp.163~196)에는 한국어 음운 변화 규칙이 자세히 기술되어 있는데 적용 가능한 부분만 선별하여 다음과 같이 사용하였다.

h-aspiration (pp. 166): “When the initial or final lax stop of a morpheme and the initial or final h of another morpheme become contiguous, they merge into an aspirated stop.”

적용 예시) 전 음절에 받침이 없고 바로 다음 음절의 초성 자음이 ㅍ,ㅌ,ㅋ,ㄹ,ㅊ인 경우, 해당 자음이 ㅍ->ㅂ, ㅌ->ㄷ, ㅋ->ㄱ, ㅊ->ㅈ, ㄹ->ㄹ로 바뀌어 받침으로 가고 공백은 “ㅎ”이 됨

씨팔 -> 씹할, 개새키 -> 개색히, 부랄 -> 불할 등

나가며

지금까지 설명한 비속어 변형형 구축 작업으로 사전의 볼륨을 늘려 회피 표현 커버리지를 넓혔다. 하지만, 사전 매칭으로는 (1) 모든 회피 표현을 커버하는데 한계가 있고 (2)오탐, 그리고 (3) 다의성 커버의 문제 또한 남아있다.

(1) 자음 여러개를 활용한 회피 표현

“ㅆㅋ발” — 비속어 인식 실패

(2) 오탐

“ 5개년 개발 정책을 발표했다” — ‘개년’을 욕설로 인식

(3) 다의성

“걔 쓰레기야” — 비속어 인식 실패: 문맥 상 뜻을 구별하는데 한계

다음 장에서는 사전을 활용한 관리 내역을 축적하여 어떻게 이러한 한계를 극복하는지 딥러닝 기반 학습 모델에 대해서 다루어 보겠다.

References

[1] 네이버 금칙어 리스트http://www.technote.co.kr/php/technote1/board.php?board=apple2&command=body&no=168

[2] Sohn (1999), The Korean Language, CUP

--

--