Skip to content

오분석 패치

krikit edited this page Dec 8, 2018 · 5 revisions

기계학습 모델에 의해 분석한 결과는 오류가 있을 수 있습니다. 모든 입력에 대해 100% 정확한 형태소 분석기는 현실적으로 불가능합니다. 오분석 패치는 기계학습 모델의 결과로 출력된 오분석을 정분석으로 바로잡기 위한 사용자 사전입니다.

기분석 사전 vs 오분석 패치

기분석 사전과 오분석 패치는 아래와 같은 차이점이 있습니다.

기분석 사전 오분석 패치
기계학습 모델 실행 전에 적용 기계학습 모델의 결과에 적용
분석 속도를 빠르게 함 분석 속도가 느려짐
단일 어절에 한해 적용 가능 어절과 형태소 개수에 제한이 없음

사전 파일

rsc/src 디렉토리 아래에는 네개의 파일이 존재합니다.

  • base.errpatch.auto: 코퍼스로부터 base 모델의 오분석 패치를 자동으로 추출한 엔트리가 있는 파일
  • base.errpatch.manual: 사용자가 base 모델의 오분석을 수정하기 위해 엔트리를 넣을 파일
  • large.errpatch.auto: 코퍼스로부터 large 모델의 오분석 패치를 자동으로 추출한 엔트리가 있는 파일
  • large.errpatch.manual: 사용자가 large 모델의 오분석을 수정하기 위해 엔트리를 넣을 파일

오분석 패치는 기계학습 모델의 결과에 적용하는 것이므로, base, large 모델에 대해 각각 한쌍씩 존재합니다. 기분석 사전과 마찬가지로 base.errpatch.로 시작하는 모든 파일을 이용하여 빌드합니다. 또한 사전에 엔트리를 추가하여 변경된 경우 반드시 make resource 명령을 통해 사전을 다시 빌드해 줘야합니다.

사전 포맷

오분석 패치의 포맷은 한 행에 탭으로 구분된 3개의 열이 있는 형태입니다. 아래는 사전 내용 예시입니다.

원문 오분석 정분석
중증급성호흡기증후군 중증급/NNG + 성호흡기/NNG + 증후군/NNG 중증/NNG + 급성/NNG + 호흡기/NNG + 증후군/NNG
된다는 것 되/XSV + ㄴ다/EF + 는/ETM + _ + 것/NNB 되/XSV + ㄴ다는/ETM + _ + 것/NNB
하지만, | + 하지/MAJ + 만/EC + ,/SP | + 하지만/MAJ + ,/SP
# 아래는 설명을 위한 가상의 엔트리입니다.
 복잡하다. _ + 복잡/XR + 하/XSV + 다/EC + ./SF + | _ + 복잡/XR + 하/XSA + 다/EF + ./SF + |
검색질의 | + 검색/NNG + 질/XSN + 의/JKG + | | + 검색/NNG + 질의/NNG + |

원문에 공백을 쓸 수 있으며 이는 어절의 경계를 의미합니다. 만약 원문에 공백이 있다면 오분석 및 정분석에는 그에 대응하는 특수한 형태소인 '_'를 맞춰서 써줘야 합니다. 원문에서 공백을 맨 앞이나 맨 뒤에 넣을 수도 있으므로 지워지지 않게 주의하여 작성하시기 바랍니다.

또 하나 특수한 형태소인 '|'는 입력된 전체의 처음과 끝을 의미합니다. 위 예에서 두번째 엔트리는 "하지만,"이란 원문이 입력의 맨 앞에 있을 경우에 한해 적용되며, 네번째 엔트리는 "복잡하다."란 원문이 입력의 맨 뒤에 있을 경우에 한해 적용됩니다. 쉽게 말해 문장의 처음(begin of sentence)과 끝(end of sentence)를 나타내는 것이라 생각하면 됩니다.

마지막 엔트리와 같이 문장의 처음과 끝에 동시에 '|'를 사용하면 문장 내에서 일부가 아니라 정확한 전체 문장에 한해 적용이 가능하므로 부작용을 방지할 수 있습니다. 또한 검색 질의나 짧은 대화문으로 구축한 코퍼스로부터 기계학습 모델이 오분석을 발생하는 경우 자동으로 패치를 생성할 수 있습니다.

문서가 아직 작성 중입니다..

사전 빌드

음절 단위 정렬

알려진 문제

Clone this wiki locally