"-ment" vs "-ity" - 영단어 접미사 분석

NeCu1029·2025년 12월 11일

프로젝트 회고

목록 보기
2/6

이 블로그는 경기과고 정보과학2에서 진행한 "데이터 분석 프로젝트" 수행평가의 내용을 재구성한 것임을 알립니다.

영어에는 ment으로 끝나는 단어가 많을까요, ity로 끝나는 단어가 많을까요? 오늘은 영어 접미사를 분석하여 이 문제의 답을 구해 볼 것입니다.

데이터 수집

영어로 된 글을 가장 많이 얻어낼 수 있는 곳은 단연 Wikipedia입니다. 무려 7백만 개가 넘는 문서가 있습니다. 저는 영어라는 언어 자체의 특성을 조사하고자 하기 때문에, 랜덤 문서를 2천 개 수집할 것입니다. 문서를 자동으로 수집하는 것은 크롤링을 사용한다 쳐도 (위키백과는 크롤링을 허용합니다), 랜덤 문서는 어떻게 할까요? 이 기능을 원하는 사람이 많았는지, 랜덤 문서 기능은 이미 위키백과에 구현되어 있습니다. https://en.wikipedia.org/wiki/special:random 링크로 들어가면 무작위 문서로 이동할 수 있죠.

코드 자체는 간단합니다. Python의 requests 라이브러리로 위 URL의 내용을 요청하면 됩니다. 하지만 위키백과는 user-agent가 설정되지 않으면 접근을 거부하므로, 헤더에 관련 정보를 넣어 줍니다. 여기에 추가로, 문서 내용이 아닌 것을 걸러내는 절차가 필요합니다. 걸러내는 대상은 다음과 같습니다.

  • <p> 태그 안에 있지 않은 내용
  • <style>, <script> 태그와 그 안의 내용
  • <a> 등의 태그

이런 것들을 제거하는 파싱을 해 주고, 남은 것들을 공백으로 연결하여 txt 파일에 저장합니다. 그러면 약 5.74MB의 텍스트를 얻을 수 있습니다.

데이터 가공

앞서 내용이 아닌 것들을 모두 제거했다면, 이번에는 영단어가 아닌 것을 제거합니다. 기본적으로 공백이나 줄바꿈 같은 whitespace를 기준으로 단어를 나누고, 아래 과정을 거칩니다.

  • 단어에 1234567890/\\ 중 하나 이상의 문자가 있다면 단어로 보지 않습니다. (이런 것들이 포함된 것은 대부분 LaTeX\LaTeX 수식이나 URL, 혹은 1st와 같은 축약어입니다)
  • 다이어크리틱이 있다면 일반적인 아스키 알파벳으로 바꿉니다.
  • 단어에서 알파벳 대소문자만 남깁니다.
  • 단어의 길이가 2 이하라면 단어 전체를 삭제합니다. (이유는 아래 "접미어"의 정의를 보면 알 수 있습니다)

이렇게 하고 남은 단어에서 중복을 제거합니다. 이는 "the"처럼 매우 자주 등장하는 단어가 통계를 오염하는 것을 막기 위함입니다. 이것들을 정렬한 뒤 (이분 탐색의 가능성을 염두에 두고 정렬했지만, 실제 활용하지는 않았습니다), 공백으로 연결하여 다른 txt 파일에 저장합니다. 55376개의 단어를 찾을 수 있었으며, 용량은 475KB로 크게 줄어들었습니다. 기록된 가장 긴 단어는 sapindaceaeaceraceaehippocastanaceae로, 세 개의 식물 과 이름이 합쳐진 것입니다. 원문은 sapindaceae-aceraceae-hippocastanaceae일 것으로 추정됩니다.

접미사 추출

먼저 용어 정리를 하고 갑시다. "접미어"란 단어의 맨 끝에 위치하는 부분 문자열로, 그 길이는 1보다 크고 (한 글자짜리는 무시합니다) 원래 단어의 길이보다 작습니다. 즉, 길이가 2 이하인 단어에는 접미어가 없습니다. "접미사"는 문법적 의미를 갖는 접미어로, 본 프로젝트는 접미어 중에서 접미사를 찾는 것을 목표로 합니다.

본격적으로 접미사를 찾기 전 해야 할 것이 있습니다. 접미어의 종류와 그 빈도를 저장하는 것입니다. Python의 dict 자료형을 활용하여 접미어와 그 등장 횟수를 짝지어 저장합니다. 접미사 추출 단계에서의 편의를 위해, 여기에서는 접미어의 원래 정의와 달리 1글자 접미어도 저장합니다. 발견한 접미어의 개수는 총 133097개입니다.

이제 유의미한 접미사를 찾는 방법에 대해 생각해 봅시다. 3글자 접미어 ion을 갖는 단어 중에는 4글자 접미어 tion을 갖는 것이 가장 많고, tion을 갖는 단어 중에는 5글자 접미어로 ation을 갖는 것이 가장 많습니다. 같은 방법으로 ation을 접미어로 갖는 단어 중에는 6글자 접미어 ration을 갖는 것이 가장 많습니다. 네 접미어 ion, tion, ation, ration의 빈도는 각각 1026, 837, 578, 86입니다. 비율을 보면 tion / ion = 81.6%, ation / tion = 69.1%, ration / ation = 14.9%입니다.

비율을 살펴보면 ration에서 비율이 급감하는 것을 알 수 있습니다. 이를 반영하듯 Oxford English Dictionary에 접미사 -ion, -tion, -ation은 등록되어 있지만, -ration은 없습니다. 따라서 아래와 같은 추측을 할 수 있습니다.

문자 CC와 문자열 SS가 있을 때, C+SC+S가 접미사이려면 SS로 끝나는 단어의 P%P\% 이상은 C+SC+S로 끝나야 한다. 이때 PP는 적당한 실수이다.

추출 방법 수정

P%=30%P\%=30\%로 잡고 유의미한 접미사를 도출해 본 결과, 문제점이 발견되었습니다. SS로 끝나는 단어의 수 자체가 적어 접미사가 아닌 것이 접미사로 인식되는 것입니다. 예를 들어, lw로 끝나는 단어는 극히 적습니다. 그중에서 그나마 많은 수가 flw로 끝나기 때문에 flw가 접미사로 인식되어 버립니다! 이것을 고치기 위해 아래 조건을 추가합니다.

C+SC+S가 접미사이려면, 위 조건을 만족함과 동시에 C+SC+S의 출현 빈도가 QQ 이상이어야 한다. 이때 QQ는 적당한 정수이다.

P%=40%,Q=100P\%=40\%,Q=100으로 잡고 다시 실행해 보았더니 결과는 다음과 같았습니다.

ed ng al ow er ic ov ish ist and 
ard ent ing age ine ity ate ive ons ers 
nce ess ion ngs tor land ley ics ght ates 
able ents ance ence ists ings ions ism ally ized 
onal tion tive tors ical ering ment ness ation ered 
tions ations ments

전보다는 확실히 나은 결과이지만, 아직 아쉬운 점이 보입니다. ng의 경우, ing의 일부분으로 보는 것이 타당할 것입니다. 그러나 g로 끝나는 단어의 대부분이 ing로 끝나기 때문에, 그 중간에 있는 ng도 접미사로 판단된 것입니다. 따라서 아래와 같은 3번째 조건을 추가합니다.

C+SC+S가 접미사이려면, 위의 두 조건을 만족함과 동시에, 임의의 문자 DD에 대하여 D+C+SD+C+S의 출현 빈도가 C+SC+S 출현 빈도의 PP%를 넘는 것이 없어야 한다.

D+C+SD+C+S가 접미사라면 C+SC+S는 접미사가 될 수 없습니다. P%=40%,Q=100P\%=40\%,Q=100으로 잡고 다시 실행해 보았더니 결과는 다음과 같았습니다.

ed al ow er ic ov ish ist ard ing 
age ine ity ate ers land ley ates able ance 
ence ists ings ism ally ized tive ical ering ment 
ness ation ered ations ments

몇 개의 접미사를 살펴 봅시다. ov는 슬라브인의 이름에 자주 등장하는 접미사인데, 인물 관련 정보가 많은 위키백과 특성상 섞여 들어간 것으로 보입니다. agelineage 등에서 볼 수 있는 접미사입니다. er는 형용사나 부사의 비교급에 사용되는 접미사로 잘 알려져 있지만, er로 끝나는 동사가 많은지 eredering도 유의미한 접미사로 나타나 있습니다. 한 가지 의외인 것이 있는데, tion이 없습니다! 앞서 말한 것처럼tion으로 끝나는 단어의 69.1%가 ation으로 끝나기 때문입니다.

추출한 접미사 35개 중 Merriam-Webster 사전에 접미사(suffix)로 등록된 것은 23개, 65.7%였습니다.

데이터 시각화

추출한 접미사마다 단어 수를 막대그래프로 나타내면 아래 그림과 같습니다.

그림과 같이 eding가 가장 많은 것을 알 수 있습니다. 제목에 있었던 mentity의 경우, ity를 접미사로 갖는 단어가 더 많았습니다.

결론

저는 ment파였는데 아쉽네요. 감사합니다.

profile
경기과고 43rd

0개의 댓글