-
Notifications
You must be signed in to change notification settings - Fork 284
오분석 패치
기계학습 모델에 의해 분석한 결과는 오류가 있을 수 있습니다. 모든 입력에 대해 100% 정확한 형태소 분석기는 현실적으로 불가능합니다. 오분석 패치는 기계학습 모델의 결과로 출력된 오분석을 정분석으로 바로잡기 위한 사용자 사전입니다.
기분석 사전과 오분석 패치는 아래와 같은 차이점이 있습니다.
기분석 사전 | 오분석 패치 |
---|---|
기계학습 모델 실행 전에 적용 | 기계학습 모델의 결과에 적용 |
분석 속도를 빠르게 함 | 분석 속도가 느려짐 |
단일 어절에 한해 적용 가능 | 어절과 형태소 개수에 제한이 없음 |
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)를 나타내는 것이라 생각하면 됩니다.
마지막 엔트리와 같이 문장의 처음과 끝에 동시에 '|'를 사용하면 문장 내에서 일부가 아니라 정확한 전체 문장에 한해 적용이 가능하므로 부작용을 방지할 수 있습니다. 또한 검색 질의나 짧은 대화문으로 구축한 코퍼스로부터 기계학습 모델이 오분석을 발생하는 경우 자동으로 패치를 생성할 수 있습니다.