Chrono-gram을 이용해 라틴어 고문헌 연대 추정하기

Posted by 적분 ∫2tdt=t²+c
2019. 9. 16. 23:35 프로그래밍/NLP

졸업 논문으로 연구했던게 통시적 단어 임베딩 기법이었습니다. 고전 그리스어로 '시간'을 뜻하는 단어 χρόνος와 '글'을 뜻하는 단어 γράμμα를 합쳐서 Chrono-gram(CG)이라고 이름을 붙였었는데요, 이 모형은 시간에 따른 언어의 변화를 포착하는데에 특화되어 있어서 텍스트의 연대를 추정하는데에 사용할 수 있습니다. 문제는 모형을 학습하려면 오랜 기간동안 변화를 보여주는 말뭉치를 구해야 하는데 이것이 생각보다 쉽지가 않습니다. 다행히도 구글에서 Google Books Ngram이라는 15세기부터 21세기까지의 Google Books의 책들을 바탕으로 빈도분석을 수행한 말뭉치를 공개해준 덕분에 이걸 바탕으로 논문을 마무리할 수 있었습니다.

논문을 어찌어찌 끝내고 놀다보니 불현듯 고문헌 이미지를 수집해서 OCR을 돌려놨던 라틴어 아카이브 문서들이 생각이 났습니다. 고문헌이다보니 메타데이터 중 작성 연대 정보가 누락된 경우도 많고, 잘못 입력된 경우도 잦습니다. 혹은 아예 문헌 자체에 작성 연대가 드러나 있지 않아 추정만 해야하는 경우도 있구요. 그래서 이런 문헌들을 대상으로 연대 추정을 수행해보면 재밌겠다는 생각이 들었습니다. 마침 이에 필요한 도구도 개발한 상황이었으니깐요. 그래서 지금까지 OCR된 약 15000개 문헌(약 1700만 문장)을 모아서 전처리했습니다. Sentence Piece를 통해 tokenizing을 수행하였고, 그 뒤 연대 정보가 있는 문헌들에 대해서만 CG 모델을 학습했습니다. 학습 데이터는 약 5기가였지만, 멀티스레딩 덕분에 학습은 의외로 금방 끝났습니다. (16스레드 만세!)

그리고 연대 정보가 누락된 문헌에 대해 CG을 통해 작성 연대를 추정하는 작업을 수행했습니다. 그 결과물 중 일부를 간단하게 소개합니다.

1641년에 작성된 라틴어 문헌 모델의 예측결과. 1605년 근방이 로그가능도 최고점인걸 확인할 수 있음

이 문헌은 MDCXLI, 즉 1641년에 작성된 철학 관련 서적입니다. CG모델은 작성연대가 1605년 즈음이라고 예측했었습니다.


1840년에 작성된 라틴어 문헌 모형이 예측한 결과. 1825년 즈음이 최고점을 보이고 있음

이 책은 1840년에 작성된 로마의 신들에 관한 책입니다. CG모델은 작성연대로 1825년즈음을 예측했습니다.

작성연대를 알 수 없는 라틴어 문헌. 양식 및 상태로보아 15세기나 그 이전의 문헌으로 예상됨 모형의 예측 결과. 1480년 즈음에서 로그 가능도가 최고점을 보이고 있음.

이 문헌에는 아예 연대 정보가 없습니다. 예언자에 관련된 책이라는데, 폰트의 모양으로 보아 학자들은 15세기즈음 작성된것으로 예상합니다. CG모델은 1480년대를 예상하고 있네요.

몇 가지 근접하게 예측이 잘 된 사례를 뽑아보았습니다. 약 3~40년 내외의 오차로 작성연대를 잘 예측하고 있는 것 같습니다. OCR 과정에서 발생한 노이즈도 많고, 라틴어 문헌으로 분류되었으나 라틴어가 아닌 다른 언어로 작성된 문헌들도 많기 때문에 정제된 영어 데이터로 실험한 것과는 성능 차이가 좀 날 수 밖에 없습니다. 그렇지만 충분히 재밌는 결과를 내고 있네요. 물론 모형의 예측이 틀리는 경우도 잦습니다. 모형이 예측에 실패하는 이유는 여럿 있겠지만, 범주화하여 정리해보자면, 

  1. 학습 데이터에서 발견된 패턴이 평가 데이터에서는 발견되지 않는 경우 => 학습 데이터를 추가 확충하여 해결 가능

  2. 모형 자체가 학습하기에는 패턴이 너무 복잡한 경우 => 모형의 하이퍼파라미터를 수정해보거나, 모형의 한계를 인정하고 다른 모형을 찾아보기

  3. 평가 데이터가 틀린 경우 => ???

위의 세 가지 정도가 될것 같네요. 이 중 가장 흥미로운 시나리오는 3번입니다. 충분히 고르고 많은 양의 학습데이터로 모형을 학습한 뒤, 1500년에 작성된 문헌을 평가했는데, 자꾸 1700년대에 작성되었다고 결과가 나온다면, 실제로 그 문헌에서 등장하는 텍스트의 패턴은 1500년대가 아닌 1700년대에 유사하다고 판단할 수도 있을 것입니다. 만일 그것이 사실이라면, 그 문헌의 작성 연대가 잘못 적혔거나, 더 나아가 후대의 위작일 가능성도 고려해볼 수 있겠지요. 단, 현재의 모형은 완전히 Blackbox라서 예측 결과가 나오는 이유를 파악하기가 쉽지 않습니다. 만약 CG모델이 어떤 문헌을 1700년대에 작성된걸로 예측한다해도, 어떤 특징 때문에 그 문헌을 1700년대에 작성된것으로 예측하는지를 알기는 어렵다는 것이죠. 좀 더 신뢰성 있는 예측 결과를 위해서는 예측의 근거까지 함께 내어줄 수 있는 모형을 고민해볼 필요도 있는 것 같습니다.

이에 대해서는 앞으로 좀 더 고민해보도록 하고, 오늘의 삽질까지는 여기까지 하도록 하겠습니다.


Chrono-gram 모형의 경우 전체 코드를 오픈소스로 공개하였으니 누구나 직접 다운받아 설치하여 유사한 실험을 진행해 볼 수 있습니다.

https://github.com/bab2min/chronogram


이 댓글을 비밀 댓글로
    • ㅎㅎㅎ
    • 2019.10.31 00:24
    ㅎㅎㅎ 잘 봤습니당 광고를 누를까... 말까.. 누를까.... 말까..... 고민하다 올만에 왔으니 특별히 누르고 갑니다 번창하십쇼 ㅎㅎ 그럼 수고바위~