KR20200044208A - 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템 - Google Patents

음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템 Download PDF

Info

Publication number
KR20200044208A
KR20200044208A KR1020180120987A KR20180120987A KR20200044208A KR 20200044208 A KR20200044208 A KR 20200044208A KR 1020180120987 A KR1020180120987 A KR 1020180120987A KR 20180120987 A KR20180120987 A KR 20180120987A KR 20200044208 A KR20200044208 A KR 20200044208A
Authority
KR
South Korea
Prior art keywords
error
text
korean
error correction
hangul
Prior art date
Application number
KR1020180120987A
Other languages
English (en)
Other versions
KR102143745B1 (ko
Inventor
송치성
이경님
조훈영
한명수
Original Assignee
주식회사 엔씨소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엔씨소프트 filed Critical 주식회사 엔씨소프트
Priority to KR1020180120987A priority Critical patent/KR102143745B1/ko
Publication of KR20200044208A publication Critical patent/KR20200044208A/ko
Application granted granted Critical
Publication of KR102143745B1 publication Critical patent/KR102143745B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/232Orthographic correction, e.g. spell checking or vowelisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템이 개시된다. 한글 오류 보정 방법은, 오류가 존재하지 않는 클린 텍스트에서 오류 텍스트를 생성하는 동작; 상기 클린 텍스트와 상기 오류 텍스트에 대해 음절 기반의 벡터화를 수행하는 동작; 및 상기 클린 텍스트로부터 도출된 벡터와 상기 오류 텍스트로부터 도출된 벡터를 이용하여 한글 오류 보정을 위한 학습을 수행하는 동작을 포함할 수 있다.

Description

음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템 {METHOD AND SYSTEM FOR ERROR CORRECTION OF KOREAN USING VECTOR BASED ON SYLLABLE}
아래의 설명은 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 시스템에 관한 것으로, 보다 구체적으로는 오류가 포함되지 않은 텍스트에 오류 생성 패턴에 따라 오류를 생성하고, 오류가 생성된 텍스트를 벡터로 표현한 후 학습하는 한글 오류 보정을 수행하는 방법 및 시스템에 관한 것이다.
최근에 다양한 어플리케이션이 사용되면서, 사용자가 텍스트를 직접 입력하는 텍스트 기반의 서비스가 증가하고 있다. 예를 들어, 모바일 메신저를 통해 사용자들 간에 언어 소통이 이루어지고 있다. 또한, 최근에는 채팅봇 형태로 콜센터나 쇼핑 도우미, 고객 상담 등을 위한 대화형 서비스가 제공되고 있다.
이와 같은 텍스트 기반의 서비스를 위해서는 사용자가 작성한 텍스트의 오류를 보정할 수 있는 기능이 필요하다. 이러한 기능을 위해, 오류를 보정하기 위한 딥러닝, 기계 학습 등을 통해 처리하는 것이 필요한데, 사용자가 작성한 텍스트(UGT; User Generated Text)들은 구어체적인 특성이 나타난다.
구체적으로, 구어체의 경우 학습 데이터로는 사용하기 어려운 노이즈를 많이 포함하고 있기 때문에, 컴퓨터와 같은 시스템들은 구어체를 통해 표현되는 다양한 오류들을 정확하게 인식하지 못하는 어려움이 있다. 아무리 정교한 문자열 패턴을 적용하더라도, 컴퓨터는 사용자가 작성한 텍스트의 문맥 정보를 충분하게 고려하기 어려울 뿐만 아니라 사용자가 의도한 중의성을 포함하는 오류를 인식하기 어려운 문제가 있다. 뿐만 아니라, 사용자가 입력하는 텍스트의 경우, 사용자가 의도하던 의도하지 않던 오류의 패턴이 계속해서 변화하기 때문에, 컴퓨터가 오류를 보정하기 위한 모든 규칙을 찾기 위한 노력이 요구된다.
일실시예에 따르면, 사용자가 작성한 텍스트에서 한글을 입력할 때의 오류 패턴을 분석하여 규칙 기반의 오류 패턴과 지식 사전 기반의 오류 패턴을 생성하고, 오류가 없는 클린 텍스트에 오류 문장을 자동으로 생성하여 학습하는 방법 및 시스템이 제공된다.
일실시예에 따르면, 한글의 언어적 특성을 고려하여 한글의 문자열을 음절 단위로 학습하기 위해 음절 기반의 벡터 표현을 사용함으로써 보다 정확하고 빠른 오류 정정이 가능한 방법 및 시스템이 제공된다.
일실시예에 따른 한글 오류 보정 방법은 오류가 존재하지 않는 클린 텍스트에서 오류 텍스트를 생성하는 동작; 상기 클린 텍스트와 상기 오류 텍스트에 대해 음절 기반의 벡터화를 수행하는 동작; 및 상기 클린 텍스트로부터 도출된 벡터와 상기 오류 텍스트로부터 도출된 벡터를 이용하여 한글 오류 보정을 위한 학습을 수행하는 동작을 포함할 수 있다.
상기 오류 텍스트를 생성하는 동작은, 사용자가 작성한 텍스트를 이용하여, 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 통해 클린 텍스트로부터 오류 텍스트를 생성할 수 있다.
상기 규칙 기반의 오류 생성 과정은, 상기 클린 텍스트의 각 음절을 자소 레벨로 분리하여 오류를 추가하고, 오류를 추가한 이후에 다시 음절 단위로 재조합하는 과정일 수 있다.
상기 지식 사전 기반의 오류 생성 과정은, 오류 패턴과 오류 보정 간의 매핑 관계를 정의한 지식 사전을 고려하여, 클린 텍스트가 오류 보정인 경우, 오류 보정에 대응하는 오류 패턴으로 변환하는 과정일 수 있다.
상기 음절 기반의 벡터화를 수행하는 동작은, 상기 클린 텍스트와 오류 텍스트를 한글 영역과 한글외 영역으로 분리하는 동작; 상기 한글 영역에 대해서는 초성, 중성 및 종성의 음절 단위로 구분하여 벡터화하는 동작; 상기 한글외 영역의 경우, 한글 이외의 문자, 기호, 숫자, 공백을 단일 토큰으로 정규화한 후 벡터화하는 동작을 포함할 수 있다.
상기 학습을 수행하는 동작은, 입력 시퀀스 벡터를 하나의 벡터로 추상화하는 인코더와 추상화된 입력 시퀀스 벡터를 출력 시퀀스 벡터와 매핑하는 디코더로 구성된 학습 모델을 이용하여 학습을 수행할 수 있다.
상기 학습 모델은, 한글 오류 보정을 위해 현재 시퀀스의 이전 시퀀스 또는 다음 시퀀스의 정보를 이용하기 위해 양방향 RNN 방식으로 구성될 수 있다.
일실시예에 따른 한글 오류 보정 방법은 한글 오류 보정을 위한 학습 모델을 읽는 동작; 상기 학습 모델을 이용하여 타겟 텍스트에서 오류를 보정하는 동작을 포함하고, 상기 학습 모델은, 오류가 없는 클린 텍스트에서 오류 텍스트를 생성하고, 클린 텍스트와 오류 텍스트를 벡터화함으로써 학습하고, 상기 오류를 보정하는 동작은, 상기 학습 모델의 출력 결과인 출력 벡터에 대해 멀티 라벨 추론 방식에 따라 추론함으로써 오류를 보정하는 학습 모델일 수 있다.
상기 학습 모델은, 사용자가 작성한 텍스트를 이용하여, 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 통해 클린 텍스트로부터 오류 텍스트를 생성할 수 있다.
상기 규칙 기반의 오류 생성 과정은, 상기 클린 텍스트의 각 음절을 자소 레벨로 분리하여 오류를 추가하고, 오류를 추가한 이후에 다시 음절 단위로 재조합하는 과정일 수 있다.
상기 지식 사전 기반의 오류 생성 과정은, 오류 패턴과 오류 보정 간의 매핑 관계를 정의한 지식 사전을 고려하여, 클린 텍스트가 오류 보정인 경우, 오류 보정에 대응하는 오류 패턴으로 변환하는 과정일 수 있다.
상기 학습 모델은, 상기 클린 텍스트와 오류 텍스트를 한글 영역과 한글외 영역으로 분리하는 동작; 상기 한글 영역에 대해서는 초성, 중성 및 종성의 음절 단위로 구분하여 벡터화하는 동작; 상기 한글외 영역의 경우, 한글 이외의 문자, 기호, 숫자, 공백을 단일 토큰으로 정규화한 후 벡터화하는 동작을 이용하여 벡터화를 수행할 수 있다.
상기 학습 모델은, 입력 시퀀스 벡터를 하나의 벡터로 추상화하는 인코더와 추상화된 입력 시퀀스 벡터를 출력 시퀀스 벡터와 매핑하는 디코더로 구성된 학습 모델을 이용하여 학습을 수행할 수 있다.
상기 오류를 보정하는 동작은, N차원의 라벨들에 대해 독립적으로 예측된 확률값을 추론 규칙에 따라 음절로 조합함으로써 추론을 수행할 수 있다.
상기 추론 규칙은, 이전 시퀀스의 출력 벡터에서 추론에 사용된 값이면, 현재 시퀀스의 확률값을 일정 비율로 감소하는 동작; 한글 영역의 확률 분포와 한글외 영역의 확률 분포를 비교하여 현재 시퀀스가 한글 음절인지 여부를 판단하는 동작, 상기 현재 시퀀스가 한글 음절로 판단된 경우, 초성, 중성, 종성 중 각각의 확률값이 최대인 자소를 결합하여 음절을 추론하는 동작, 상기 현재 시퀀스가 한글 음절이 아닌 것으로 판단된 경우, 확률값이 최대인 문자를 추론하는 동작을 포함할 수 있다.
상기 추론 규칙은, 출력 벡터의 엔트로피가 임계값 이상인 경우, 입력 시퀀스의 동일한 음절 또는 문자로 추론하는 동작을 포함할 수 있다.
일실시예에 따른 한글 오류 보정 시스템은 프로세서를 포함하고, 상기 프로세서는, 오류가 존재하지 않는 클린 텍스트에서 오류 텍스트를 생성하는 동작; 상기 클린 텍스트와 상기 오류 텍스트에 대해 음절 기반의 벡터화를 수행하는 동작; 및 상기 클린 텍스트로부터 도출된 벡터와 상기 오류 텍스트로부터 도출된 벡터를 이용하여 한글 오류 보정을 위한 학습을 수행하는 동작을 수행할 수 있다.
일실시예에 따른 한글 오류 보정 시스템은 프로세서를 포함하고, 상기 프로세서는, 한글 오류 보정을 위한 학습 모델을 읽는 동작; 상기 학습 모델을 이용하여 타겟 텍스트에서 오류를 보정하는 동작을 포함하고, 상기 학습 모델은, 오류가 없는 클린 텍스트에서 오류 텍스트를 생성하고, 클린 텍스트와 오류 텍스트를 벡터화함으로써 학습하고, 상기 오류를 보정하는 동작은, 상기 학습 모델의 출력 결과인 출력 벡터에 대해 멀티 라벨 추론 방식에 따라 추론함으로써 오류를 보정할 수 있다.
일실시예에 따르면, 사용자가 작성한 텍스트에서 한글을 입력할 때의 오류 패턴을 분석하여 규칙 기반의 오류 패턴과 지식 사전 기반의 오류 패턴을 생성하고, 오류가 없는 클린 텍스트에 오류 문장을 자동으로 생성하여 학습함으로써 보다 정확한 오류 정정이 가능하다.
일실시예에 따르면, 한글의 언어적 특성을 고려하여 한글의 문자열을 음절 단위로 학습하기 위해 음절 기반의 벡터 표현을 사용함으로써 보다 정확하고 빠른 오류 정정이 가능하다.
도 1은 일실시예에 따른 한글 오류 보정 방법에 대한 전체 과정을 도시한 도면이다.
도 2는 일실시예에 따른 한글 오류 보정 시스템의 전체 구성을 나타낸 도면이다.
도 3은 일실시예에 따른 한글 오류 보정 시스템에서 학습하는 과정을 나타낸 플로우차트이다.
도 4는 일실시예에 따른 한글 오류 보정 시스템에서 학습한 결과를 적용하는 과정을 나타낸 플로우차트이다.
도 5는 일실시예에 따른 클린 텍스트로부터 오류 텍스트를 생성하는 과정을 나타낸 도면이다.
도 6은 일실시예에 따른 사용자들이 작성한 텍스트에서 나타나는 오류의 종류를 설명하는 도면이다.
도 7은 일실시예에 따른 규칙 기반 오류와 사전 기반 오류의 예시를 도시한 도면이다.
도 8은 일실시예에 따른 벡터로 표현하고자 하는 한글 영역과 한글외 영역을 구분하는 예시를 도시한 도면이다.
도 9는 일실시예에 따른 음절 기반의 벡터화를 수행하는 과정을 도시한 도면이다.
도 10은 일실시예에 따른 특정 예시에 대한 벡터화의 결과를 도시한 도면이다.
도 11은 일실시예에 따른 학습 모델을 구성하는 인코더와 디코더의 동작을 설명하기 위한 도면이다.
도 12는 일실시예에 따른 학습 결과에 따라 음절 또는 문자를 추론하는 과정을 도시한 도면이다.
도 13은 일실시예에 따른 시퀀스의 길이를 고려하여 추론하는 과정을 도시한 도면이다.
이하, 일실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 일실시예에 따른 한글 오류 보정 방법에 대한 전체 과정을 도시한 도면이다.
도 1은 한글 오류 보정 방법을 학습 수행 과정과 학습 수행 과정을 통해 학습된 모델을 이용한 학습 적용 과정을 설명하고 있다. 일실시예에 따르면, 디노이징(denoising)이 적용된 시퀀스 투 시퀀스 디노이징 오토인코더(sequence to sequence denoising autoencoder)를 이용한 한글 오류 보정 방법이 제안된다. 한글 오류 보정 방법은 도 2에서 설명하는 한글 오류 보정 시스템에 의해 수행될 수 있다.
시퀀스 투 시퀀스 디노이징 오토인코더는 원본 데이터에 오류가 추가되었을 때 오류를 제거하여 원본 데이터를 추출하는 모델이다. 이 때, 한글 오류 보정 시스템은 고의적으로 입력 데이터에 오류(noise)를 추가하고, 추가된 오류를 기반으로 시퀀스 투 시퀀스 디노이징 오토인코더에 의해 도출된 출력 데이터가 오류를 추가하기 전의 입력 데이터인지 여부를 확인한다.
학습 수행 과정은 다음 과정을 통해 진행될 수 있다.
(i) 전처리 과정(Preprocessing): 일실시예에서 제시하는 학습 모델은 한글 오류를 보정하기 위한 모델이므로, 전처리 과정을 통해 한글 이외의 다른 문자를 정규화할 필요가 있다. 이 때, 한글 이외의 숫자와 알파벳은 정규화될 수 있다.
그리고, 오류가 없는 클린 텍스트에 오류 생성 패턴을 통해 발생된 오류를 적용함으로써 오류 텍스트가 생성될 수 있다. 그리고, 한글 오류 보정 시스템은 오류 텍스트로부터 도출된 입력 시퀀스와 클린 텍스트로부터 도출된 출력 시퀀스에 대한 쌍을 생성한 후, 입출력 쌍을 벡터화할 수 있다.
(ii) 학습 과정(Training): 한글 오류 보정 시스템은 전처리 과정을 통해 생성된 입력 시퀀스와 출력 시퀀스의 벡터쌍을 이용하여 인코더와 디코더로 구성된 학습 모델을 학습할 수 있다. 여기서, 학습 모델은 디노이징 기법이 적용된 시퀀스 투 시퀀스 디노이징 오토인코더가 적용될 수 있다.
위에서 설명한 과정을 구체화하면, 한글 오류 보정 시스템은 사용자가 작성한 텍스트를 이용하여 한글을 입력할 때의 오류 패턴을 분석하여 규칙 기반 및 지식 사전 기반의 오류 생성을 수행하고, 구어체 코퍼스로 구성된 클린 텍스트로부터 고의로 오류를 생성하여 오류 텍스트를 결정하고, 클린 텍스트와 오류 텍스트의 데이터 쌍을 이용한 디노이징 오토인코더에 대응하는 학습 모델로 학습한다.
학습 적용 과정은 다음 과정을 통해 진행될 수 있다.
(i) 오류 보정 과정(Inference): 한글 오류 보정 시스템은 검증하고자 하는 타겟 텍스트에서 예측되는 자소 기반의 확률값을 도출하고, 확률값을 통해 규칙 기반의 음절을 조합하여 최종적인 디노이징 결과를 추론할 수 있다.
도 2는 일실시예에 따른 한글 오류 보정 시스템의 전체 구성을 나타낸 도면이다.
도 2의 한글 오류 보정 시스템은 임의로 오류를 생성하여 클린 텍스트로부터 오류 텍스트를 생성할 수 있다. 그리고, 한글 오류 보정 시스템은 오류 텍스트로부터 도출된 입력 시퀀스와 클린 텍스트로부터 도출된 출력 시퀀스의 쌍을 벡터화한 후 인코더와 디코더로 구성된 학습 모델을 통해 학습할 수 있다. 이 때, 입력 시퀀스의 벡터는 인코더에 입력되고, 출력 시퀀스의 벡터는 디코더에 입력함으로써 학습 모델을 학습할 수 있다. 여기서, 학습 모델은 시퀀스 투 시퀀스에 대응하는 오류 텍스트와 클린 텍스트를 이용한 디노이징 오토인코더가 적용될 수 있다.
그리고, 한글 오류 보정 시스템은 반복적으로 학습된 학습 모델을 이용하여 타겟 텍스트(text A)를 검증할 수 있다. 즉, 한글 오류 보정 시스템은 학습 모델을 이용하여 타겟 텍스트(text A)에서 오류를 확인한 후 이를 보정함으로써 오류가 보정된 최종 텍스트(text B)를 출력할 수 있다. 이하에서는 한글 오류 보정 시스템이 어떤 과정을 통해 학습하고(도 2), 학습한 결과를 어떻게 한글 오류 보정 과정에 적용하는지(도 3)에 대해 구체적으로 설명하기로 한다.
도 3은 일실시예에 따른 한글 오류 보정 시스템에서 학습하는 과정을 나타낸 플로우차트이다.
단계(301)에서, 한글 오류 보정 시스템은 클린 텍스트로부터 오류 텍스트를 생성할 수 있다. 이 때, 한글 오류 보정 시스템은 클린 텍스트에 고의로 오류를 적용하여 오류 텍스트를 생성할 수 있다. 여기서, 오류는 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 통해 생성될 수 있다. 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정은 도 5 내지 도 7을 통해 구체적으로 설명하기로 한다.
단계(302)에서, 한글 오류 보정 시스템은 클린 텍스트와 오류 텍스트에 대해 음절 기반의 벡터화를 수행할 수 있다. 일실시예에 의하면, 한글 오류 보정 시스템은 클린 텍스트와 오류 텍스트 각각으로부터 도출된 시퀀스에 대해 한글 영역과 한글외 영역으로 구분한 후, 한글 영역에 대해 하나의 음절을 초성/중성/종성 각각에 대해 벡터를 도출할 수 있다. 이러한 과정을 음절 기반의 멀티핫(multi-hot) 벡터화로 표현될 수 있다. 이와 같은 벡터화 과정에 대해서는 도 8 내지 도 10을 통해 구체적으로 설명하기로 한다.
단계(303)에서, 한글 오류 보정 시스템은 클린 텍스트로부터 도출된 벡터와 오류 텍스트로부터 도출된 벡터를 이용하여 학습을 수행할 수 있다. 여기서, 학습은 디노이징 오토 인코더와 같은 학습 모델을 통해 수행될 수 있다. 오토 인코더는 인코딩과 디코딩을 함께 수행한다. 한글 오류 보정 시스템은 학습 데이터인 클린 텍스트를 그대로 사용하지 않고, 클린 텍스트에 노이즈인 오류를 추가한 후 RNN 출력 생성과정에서 클린 텍스트와 오류 텍스트 간의 보간(interpolation)을 적용하여 생성할 단어의 확률을 계산하는 딥러닝 기법을 적용한다.
시퀀스-투-시퀀스 디노이징 오토 인코더의 인코더는 오류 텍스트로부터 벡터를 생성할 수 있다. 그리고, 시퀀스-투-시퀀스 디노이징 오토 인코더의 디코더는 인코더에서 생성한 벡터으로부터 텍스트를 도출할 수 있다. 학습 모델의 정확도가 높으면 디코더를 통해 도출된 텍스트는 클린 텍스트에 가까운 결과를 나타낼 수 있다. 이 때, 시퀀스 데이터를 다루기에 적합한 순환 신경망(recurrent neural network)이 인코더와 디코더에 사용될 수 있다.
도 4는 일실시예에 따른 한글 오류 보정 시스템에서 학습한 결과를 적용하는 과정을 나타낸 플로우차트이다.
단계(401)에서, 한글 오류 보정 시스템은 도 3을 통해 학습된 학습 모델을 불러올 수 있다. 여기서, 학습 모델은 인코더와 디코더로 구성된 디노이징 오토인코더에 대응할 수 있다.
단계(402)에서, 한글 오류 보정 시스템은 학습 모델을 이용하여 검증하고자 하는 타겟 텍스트에서 오류를 보정할 수 있다. 학습 모델에 포함된 인코더와 디코더의 학습이 반복될수록 오류 보정의 정확도는 향상될 수 있다.
도 5는 일실시예에 따른 클린 텍스트로부터 오류 텍스트를 생성하는 과정을 나타낸 도면이다.
도 5를 참고하면, 한글 오류 보정 시스템은 클린 텍스트(구어체 코퍼스)에 대해 오류를 생성하여 오류 텍스트를 생성할 수 있다. 여기서, 한글 오류 보정 시스템은 한글 배치 사이즈에 따라 한번에 벡터화를 수행할 수 있다. 도 5는 학습 배치 사이즈가 4인 경우를 나타내며, 이 경우 도 5와 같이 백터화 과정이 수행될 수 있다. 이 때, 백터화된 이미지는 서로 다르다고 가정한다.
도 6은 일실시예에 따른 사용자들이 작성한 텍스트에서 나타나는 오류의 종류를 설명하는 도면이다.
도 6은 사용자가 작성한 텍스트에서 발생되는 다양한 오류들을 나타낸다. 여기서, 오류는 사용자가 의도한 오류이거나 또는 사용자가 의도하지 않은 오류를 포함할 수 있다. 사용자가 의도한 오류는 사용자가 오류라고 인식하면서도 발생한 오류를 의미하며, 주로 편리함을 위해 단어를 축약하거나, 어체/말투를 변형하거나 또는 발음을 변형/축약하는 형태를 포함할 수 있다. 그리고, 사용자가 의도하지 않은 오류는 사용자가 텍스트를 입력함으로써 실수나 오타 등으로 발생된 경우를 의미한다.
사용자가 작성한 텍스트의 오류 발생 과정은 매우 다양하게 발생되기 때문에 이를 바로 학습 데이터로 활용하기는 쉽지 않다. 그래서, 일실시예에 의하면, 한글 오류 보정 시스템은 도 6에 도시된 오류 패턴을 분석하고, 오류 패턴에 따라 임의로 오류를 생성할 수 있다.
도 7은 일실시예에 따른 규칙 기반 오류와 사전 기반 오류의 예시를 도시한 도면이다.
일실시예에서 설명하는 학습 모델은 시퀀스 투 시퀀스 디노이징 오토인코더와 같이 디노이징 과정을 적용하기 때문에, 입력 데이터에 임의로 노이즈에 해당하는 오류를 추가할 필요가 있다. 이 때, 한글 오류 보정 시스템은 랜덤한 오류를 발생시키기 보다는 사용자가 텍스트를 입력하는 과정에서 실제로 발생될 것으로 예상되는 오류를 생성하기 위해 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 이용한다.
(1) 규칙기반 오류 생성
규칙 기반 오류 생성을 위해서, 한글 오류 보정 시스템은 아래 과정을 수행한다. 한글 오류 보정 시스템은 자소 레벨에서의 오류를 발생하기 위해 각 음절을 모두 자소 레벨로 분리하여 오류를 추가하고 이를 다시 음절 단위로 재조합하는 방식으로 학습을 위한 오류 텍스트를 생성하였다.
오류 텍스트를 생성하기 위해서 아래와 같은 방식이 고려되었으며, 각각의 방식은 랜덤한 위치의 자소에 대해 적용될 수 있다.
-삽입(Insertion) : 자소의 추가, 반복 입력(Repetition), 공백 추가(spacing)
-삭제(Deletion) : 무작위의 자소를 제거, 공백 삭제(spacing)
-교체(Substitution) : 무작위의 자소 또는 동일 초성/중성/종성 클래스의 자소로 대체, 키보드의 쉬프트가 적용 가능한 자소에 대해 쉬프트키 사용 오류
-교환(Replace) : 인접한 두 자소 자리 교체
(2) 사전기반 오류 생성
사용자의 행동으로 인해서 발생되는 오류를 도메인에 적용하기 위해 다수의 오류 패턴 및 오류 보정을 서로 매핑한 지식 사전이 적용될 수 있다. 클린 텍스트가 이미 생성한 지식 사전의 오류 보정 결과에 대응한다면, 한글 오류 보정 시스템은 지식 사전에서 오류 보정 결과에 매핑된 오류 패턴을 생성할 수 있다.
도 8은 일실시예에 따른 벡터로 표현하고자 하는 한글 영역과 한글외 영역을 구분하는 예시를 도시한 도면이다.
일실시예에 의하면, 음절 단위 벡터 표현 방법이 사용된다. 이 때, 벡터 표현 방법은 multi-hot 벡터 표현 방법을 의미한다. 음절 단위 multi-hot 벡터 표현을 위해, 텍스트가 한글 영역과 한글외 영역으로 구분되며, 한글 영역일 때에는 초성/중성/종성과 같은 음절 단위로 다시 세분화될 수 있다.
도 8에서, 한글 영역의 초성/중성/종성의 Null은 '깨'처럼 음절 안에 종성이 없는 경우이거나 'ㅏ'처럼 단일 자모를 표현하기 위해 추가되었다. 또한, 한글 오류 보정을 위해 한글이 아닌 영어, 숫자에 대해서는 한글외 영역에서 단일 토큰으로 정규화되었다. 이와 같이, 초성/중성/종성의 한글 영역과 한글외 영역은 각각 벡터로 표현될 수 있다.
도 9는 일실시예에 따른 음절 기반의 벡터화를 수행하는 과정을 도시한 도면이다.
도 9는 텍스트가 "각", "깨", "ㅏ", "!"인 경우에 백터화하는 과정을 나타낸다. 도 9는 multi-hot 벡터화 방식을 통해 한글 영역의 초성/중성/중성과 한글외 영역과 같이 4개의 영역을 고려하여 벡터화하는 과정을 나타낸다.
구체적으로, 한글 오류 보정 시스템은 음절/문자별 매핑 규칙에 따라 텍스트를 한글 음절인지 한글 외 문자로 구분하고, 한글이면 자소단위(초성/중성/종성) 분리한 후 한글 영역의 자소 단위마다 0 또는 1의 값을 설정하고, 한글 이 아닌 경우 한글외 영역에 0 또는 1의 값을 설정할 수 있다.
여기서, 한글 영역과 한글외 영역은 도 8에서 설명한 사항이 그대로 적용될 수 있다. 이 때, 한글 영역의 자소 구분은 도 8에 정의된 초성/중성/중성으로 설명될 수 있다. 그리고, 알파벳이나 숫자의 경우는 한글외 영역으로, 단일 토큰으로 정규화될 수 있다.
한글 오류 보정 시스템은 시퀀스에 대해 한글 음절이냐 한글이 아닌 문자/기호 등을 구분하여 벡터 형태로 인코딩할 수 있다. 구체적으로, 한글 오류 보정 시스템을 한글 음절은 초성/중성/종성의 자소를 분리한 후, 초성/중성/종성 각각에 대해 1 또는 0으로 설정한다. 그리고, 한글 오류 보정 시스템은 영어, 숫자, 구두점 등을 한글외 영역으로 할당한 후, 1 또는 0을 설정한다. 이를 통해, 한글 영역은 70차원, 한글외 영역은 10차원으로 표현될 수 있다.
한편, 초성/중성/종성 각각의 Null은 해당값이 없을 때 설정된다. 도 8에서 설명한 바와 같이, '깨'의 경우 종성이 없으므로 종성이 Null, 단일 자소인 'ㅏ'인 경우 중성이 Null이 된다.
Multi-hot 벡터화를 적용하는 경우, 다음과 같은 효과를 기대할 수 있다.
첫번째로 한글의 언어적 특성을 고려하여 오류가 좀더 정확하게 보정될 수 있다. 사용자가 작성한 텍스트의 오류 보정을 위해서 위해 먼저 문자열을 토큰화하고 문자열을 표현해야 한다. 숫자, 영어, 특수문자의 경우에는 문자열 자체가 1차원적인 문자의 결합으로 이루어져 있다. 그렇기 때문에 오류 보정을 위해서는 Character 단위로 토큰화하여 문자열을 표현할 수 있다.
하지만 한글의 경우에 사용자는 키보드, 초성, 중성, 종성 3가지의 자소를 별개로 입력하고, 그 결합으로 한 Character(음절)이 만들어 진다. 이 때문에 타자 실수로 인한 오타는 음절 단위보다 자소 단위로 일어나는 경우가 많다. 예를 들어 선어말어미 '겠'의 경우 편리성을 위해 온라인상에서 'ㅅ'을 탈락시켜 '하겟다'로 작성하는 경우가 빈번하다. 음절 단위 multi-hot 벡터 표현은 자소 단위의 정보를 담고 있기 때문에 이러한 한글의 언어적 특성을 잘 반영할 수 있다.
두번째로 음절 단위 multi-hot 벡터 표현은 모든 완성형 한글 조합을 표현할 수 있다. 음절 단위 multi-hot 벡터 표현은 한글 음절에 대해 70개의 비교적 적은 차원안에서 모든 완성형 한글 및 단일 한글 자모를 표현하는 것이 가능하다.
세번째로 음절 단위 multi-hot 벡터 표현은 계산이 효율적이다. 음절 단위 multi-hot 벡터 표현의 경우는 문자열이 길어지지 않을 뿐만 아니라, 자소별 정보도 모두 포함하고 있기 때문에 효율적으로 계산이 이루어진다.
도 9에서 한글외 영역은 표 1과 같이 정의될 수 있으며, 오류 보정을 위해 한글외 영역의 정의는 달라질 수 있다.
<표 1>
Figure pat00001
도 10은 일실시예에 따른 특정 예시에 대한 벡터화의 결과를 도시한 도면이다.
도 9에서 설명한 multi-hot 벡터화를 통해 샘플 문장 '하셨스빈까???'를 벡터로 표현하고 이를 오른쪽 그래프인 히트맵(heat map)으로 시각화하면 도 10과 같다. 도 10의 그래프에서 가로축은 문자열 시퀀스를 의미하고, 세로축은 벡터 영역을 의미한다.
이 중에서 오류라고 인정될 수 있는 음절 '스'와 문자 '?'에 대한 multi-hot 벡터 표현은 왼쪽 그래프로 표현된다. 왼쪽 그래프에서 첫번째 그래프는 "스"에 대한 벡터 표현이고, 두번째 그래프는 "?"에 대한 벡터 표현이다.
도 11은 일실시예에 따른 학습 모델을 구성하는 인코더와 디코더의 동작을 설명하기 위한 도면이다.
앞서 설명한 바와 같이 일실시예에 따른 학습 모델은 시퀀스 투 시퀀스 디노이징 오토인코더가 적용될 수 있다. 여기서, 오토인코더는 시계열, 문자열 등 시퀀스 데이터에 주로 사용되는 모델로 RNN 기반의 셀을 이용하여 길이가 다르더라도 입력 시퀀스와 출력 시퀀스를 서로 매핑하여 입력 시퀀스와 출력 시퀀스 간의 매핑 관계를 학습하는 딥러닝 아키텍쳐이다.
디노이징 오토인코더는 인코더(Encoder) 영역과 디코더(decoder) 영역으로 구성된다. 인코더 영역에서, 입력 시퀀스 벡터를 하나의 벡터로 추상화하는 과정이 진행되고, 디코더 영역에서, 추상화된 입력 시퀀스 벡터를 출력 시퀀스 벡터와 매핑하는 과정이 진행된다. 입력 시퀀스 데이터와 출력 시퀀스 데이터가 동일할 경우, 오토인코더입력 시퀀스 데이터를 추상화하고 이를 원래의 입력 시퀀스 데이터의 형태로 재구성한다. 그래서, 입력 시퀀스에 오류와 같은 잡음을 추가하면 이를 잡음이 없는 형태로 재구성하려는 성질을 갖게 되면서 잡음에 강건한 모델이 학습되며, 이를 통해 한글 오류 보정이 가능하다.
도 11에서 볼 수 있듯이, 시퀀스 투 시퀀스 디노이징 오토인코더는 복수의 LSTM(Long Short-Term Memory) cell이 이용된다. Recurrent Neural Networks(RNNs)를 이용하면 시계열 데이터를 효과적으로 모델링할 수 있다. 하지만 RNNs는 시간에 따라 학습이 계속 진행됨에 따라, 앞에서 인풋으로 받은 정보가 학습에 미치는 영향이 점점 감소하다가 결국에는 사라져버리는 Vanishing Gradient Problem을 가지고 있다. 이를 위해, LSTM Cell은 최초 시간 구간 1에 입력 데이터를 받은 후 Input Gate를 닫아버려서 새로운 인풋을 받지 않고, Forget Gate를 열어놔서 최초 시간 구간 1에 입력 데이터를 계속 전달하면, 최초 시간 구간 1에서의 입력 데이터의 영향력을 계속해서 가져갈 수 있다. 마지막으로, LSTM Cell은 Output Gate를 열고 닫으면서, 최초 시간 구간 1에서의 입력 데이터의 영향력을 반영하거나 반영하지 않을 수 있다.
한편, 한글 오류를 보정하기 위해, 처리하고자 하는 현재 문자열의 이전에 위치한 이전 문자열과 다음에 위치한 다음 문자열의 정보도 필요하기 때문에 시퀀스 투 시퀀스 디노이징 오토인코더는 양방향 RNN 방식으로 구성될 수 있다. 여기서, 문자열은 시퀀스를 의미한다.
도 12는 일실시예에 따른 학습 결과에 따라 음절 또는 문자를 추론하는 과정을 도시한 도면이다.
일실시예에 따르면, multi-hot 벡터화를 통해 출력되는 결과는 도 12와 각 시퀀스 지점에서 각각의 라벨(label)이 예측될 확률값을 의미한다. 한글 오류 보정 시스템은 확률값을 이용하여 몇 개의 자소 라벨로, 어떻게 조합하여 최종적인 음절로 예측할지에 대한 추가적인 추론 과정이 필요하다. 도 12의 추론 과정은 한글 오류를 보정하기 위해 처리되는 과정이며, 학습 모델을 학습하는 과정이 아닌 타겟 텍스트에 포함된 오류를 보정할 때 학습 모델이 처리한 결과인 출력 벡터에 적용될 수 있다.
일실시예에 의하면, 한글 오류 보정 시스템은 시퀀스를 한글 영역, 한글 외 영역으로 분류하고, 각 영역별로 개별적인 규칙을 적용하여 최종적인 디노이징 결과를 추론한다.
한글 오류 보정 시스템의 경우, 여러 개의 후보 라벨 중 어느 하나의 라벨로 분류하기 위해 소프트맥스 함수를 이용하여 최대값을 선택하는 방법을 이용하지 않는다. 한글 오류 보정 시스템은 multi-hot 벡터 표현을 통해 학습하고, 학습 모델의 출력도 multi-hot 벡터 형태이기 때문에, N차원의 라벨들에 대해 독립적으로 예측된 확률값을 추론 규칙에 따라 음절로 조합함으로써 추론을 수행할 수 있다. 여기서, N차원은 도 8에서 정의한 한글 영역(세부적으로는 초성/중성/종성으로 구분)과 한글외 영역 각각에 포함된 80개 차원을 의미한다. 추론 과정은 80차원의 각 피쳐(feature)가 sigmoid를 통해 독립적인 확률값으로 예측되고, 추론 규칙에 따라 음절 단위로 조합함으로써 추론이 수행될 수 있다.
그래서, 80개 차원 label 중 어떤 피쳐들이 결합하여 한글 음절이 될지 또는 결합하지 않고 독립적으로 문자로 추론될지를 판단하는 과정이 필요하며, 이는 아래 과정을 통해 진행될 수 있다. 다만, 도 12의 과정은 추론 과정에서 시퀀스의 길이가 변경되지 않는 경우를 의미한다. 만약 추론 과정에서 시퀀스의 길이가 변경된 경우, 도 13에서 설명하는 추론 규칙에 따라 추론이 수행된다. 이러한 추론 과정은 학습 모델을 구성하는 디코더로부터 출력된 결과인 출력 벡터에 대해 수행될 수 있다.
< multi-label 추론 규칙 (시퀀스별 독립적으로 수행됨)>
- 아래 추론 과정은 매 시퀀스의 출력 벡터마다 반복될 수 있다. 출력 벡터는 시퀀스 투 시퀀스 디노이징 오토인코더에 대응하는 학습 모델을 통해 도출된 벡터이다. 이 때, 학습 모델은 도 11과 같이 인코더 및 디코더를 포함하고 있고, 학습 모델의 마지막 과정은 디코더를 통해 수행되므로, 출력 벡터는 디코더의 출력 결과를 의미할 수 있다,
(i) 출력 벡터의 '한글 영역' 확률 분포와 '한글 외 영역'의 확률 분포를 비교하여 해당 시퀀스가 한글인지 아닌지 판별함
(ii)한글 음절일 경우에는 초성/중성/종성 영역 중 각각의 최대값으로 자소 결합하여 음절 추론함
(iii) 한글 외 문자일 경우에는 최대값을 선택하여 추론함
(iv) 출력 벡터의 엔트로피가 임계값(threshold) 이상이면 입력 시퀀스에서의 동일한 음절(혹은 문자)로 추론함으로써 보정 오류를 최소화할 수 있음
(ii)에서 초성/중성/종성의 각 영역별로 확률값의 최대값이 존재하지 않는 경우, 한글 오류 보정 시스템은 각 영역에서 N-best의 확률의 평균값을 비교함으로써 추론할 수 있다.
도 12의 경우, "까"와 "?"의 추론 과정을 설명한다. 도 12의 첫번째 그래프의 경우, 한글 영역의 확률값이 크고, 각각의 초성/중성/종성 영역에서 "ㄲ", "ㅏ", "null"의 시퀀스에 대응하는 확률값이 크기 때문에, "까"의 음절로 추론될 수 있다. 도 12의 두번째 그래프의 경우, 한글외 영역의 확률값이 크며, 그 중에서 "PADDING" 시퀀스의 확률값이 가장 크기 때문에 "?"로 추론될 수 있다.
도 13은 일실시예에 따른 시퀀스의 길이를 고려하여 추론하는 과정을 도시한 도면이다.
도 13에서 오른쪽 그래프는 '하셨스빈까???'가 학습 모델을 통해 예측된 시퀀스별 확률값을 히트맵 형태로 시각화한 결과를 나타낸다. 이러한 시퀀스별 확률값을 통해 한글 음절과 한글외 영역의 문자를 추론할 필요가 있다.
도 12에서 설명한 multi-label 추론 규칙을 적용하면, '하셨십니까?'가 추론된다. 이 때, '십'으로 추론된 26번째 시퀀스를 살펴보면 왼쪽 그래프로 표현된다. 이 때, ???에서 불필요하게 반복된 '?'의 중복이 삭제되면서 시퀀스의 길이가 달라지며, 시퀀스의 길이 변경으로 인해서 중성 'ㅣ'의 예측 확률값이 'ㅡ'를 역전하며 이상적인 예측값인 '습'이 아닌 '십'으로 예측된 결과가 도 13에 도시된다.
이와 같이 추론 과정에서 시퀀스의 길이가 변경되어 추론 결과의 정확도가 달라지는 것을 방지하기 위해, 도 12에서 설명한 multi-label 추론 규칙을 적용하기 이전에 각각의 시퀀스별 확률에서 이전/다음 시퀀스의 영향을 줄이게 확률값을 보정하여 해결할 수 있다. 앞서 설명한 바와 같이, 도 12의 과정은 추론 과정에서 시퀀스의 길이가 변경되지 않는 경우를 의미한다. 만약 추론 과정에서 시퀀스의 길이가 변경된 경우, 도 13에서 설명하는 추론 규칙에 따라 추론이 수행된다. 이러한 추론 과정은 학습 모델을 구성하는 디코더로부터 출력된 결과인 출력 벡터에 대해 수행될 수 있다.
< multi-label 추론 규칙 (시퀀스별 영향 고려함)>
- 아래 항목을 매 시퀀스의 출력벡터마다 반복
(i) 이전 시퀀스의 출력벡터에서 추론에 사용된 값이면 다음 시퀀스의 확률값에서 일정 비율 감소 (추가된 항목)
(ii) 출력 벡터의 '한글 영역' 확률 분포와 '한글 외 영역'의 확률 분포를 비교하여 해당 시퀀스가 한글인지 아닌지 판별
(iii) 해당 시퀀스가 한글 음절일 경우에는 초성/중성/종성 영역 중 각각의 최대값으로 자소 결합하여 음절 추론함
(iv) 한글 외 문자일 경우에는 최대값을 나타내는 확률값을 선택하여 추론함
(v) 출력 벡터의 엔트로피가 임계값 이상이면 입력 시퀀스에서의 동일한 음절(혹은 문자)로 추론하여 보정 오류를 최소화함
한편, 일실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 시스템, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 예를 들어 기계 판독가능 저장 시스템(컴퓨터 판독가능 매체) 또는 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 시스템들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 시스템들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 예로서 반도체 메모리 시스템들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
한편, 본 명세서와 도면에 개시된 일실시예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 권리 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (19)

  1. 오류가 존재하지 않는 클린 텍스트에서 오류 텍스트를 생성하는 동작;
    상기 클린 텍스트와 상기 오류 텍스트에 대해 음절 기반의 벡터화를 수행하는 동작; 및
    상기 클린 텍스트로부터 도출된 벡터와 상기 오류 텍스트로부터 도출된 벡터를 이용하여 한글 오류 보정을 위한 학습을 수행하는 동작
    을 포함하는 한글 오류 보정 방법.
  2. 제1항에 있어서,
    상기 오류 텍스트를 생성하는 동작은,
    사용자가 작성한 텍스트를 이용하여, 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 통해 클린 텍스트로부터 오류 텍스트를 생성하는 한글 오류 보정 방법.
  3. 제2항에 있어서,
    상기 규칙 기반의 오류 생성 과정은,
    상기 클린 텍스트의 각 음절을 자소 레벨로 분리하여 오류를 추가하고, 오류를 추가한 이후에 다시 음절 단위로 재조합하는 과정인 한글 오류 보정 방법.
  4. 제2항에 있어서,
    상기 지식 사전 기반의 오류 생성 과정은,
    오류 패턴과 오류 보정 간의 매핑 관계를 정의한 지식 사전을 고려하여, 클린 텍스트가 오류 보정인 경우, 오류 보정에 대응하는 오류 패턴으로 변환하는 과정인 한글 오류 보정 방법.
  5. 제1항에 있어서,
    상기 음절 기반의 벡터화를 수행하는 동작은,
    상기 클린 텍스트와 오류 텍스트를 한글 영역과 한글외 영역으로 분리하는 동작;
    상기 한글 영역에 대해서는 초성, 중성 및 종성의 음절 단위로 구분하여 벡터화하는 동작;
    상기 한글외 영역의 경우, 한글 이외의 문자, 기호, 숫자, 공백을 단일 토큰으로 정규화한 후 벡터화하는 동작
    을 포함하는 한글 오류 보정 방법.
  6. 제1항에 있어서,
    상기 학습을 수행하는 동작은,
    입력 시퀀스 벡터를 하나의 벡터로 추상화하는 인코더와 추상화된 입력 시퀀스 벡터를 출력 시퀀스 벡터와 매핑하는 디코더로 구성된 학습 모델을 이용하여 학습을 수행하는 한글 오류 보정 방법.
  7. 제6항에 있어서,
    상기 학습 모델은,
    한글 오류 보정을 위해 현재 시퀀스의 이전 시퀀스 또는 다음 시퀀스의 정보를 이용하기 위해 양방향 RNN 방식으로 구성되는 한글 오류 보정 방법.
  8. 한글 오류 보정을 위한 학습 모델을 읽는 동작;
    상기 학습 모델을 이용하여 타겟 텍스트에서 오류를 보정하는 동작
    을 포함하고,
    상기 학습 모델은,
    오류가 없는 클린 텍스트에서 오류 텍스트를 생성하고, 클린 텍스트와 오류 텍스트를 벡터화함으로써 학습하고,
    상기 오류를 보정하는 동작은,
    상기 학습 모델의 출력 결과인 출력 벡터에 대해 멀티 라벨 추론 방식에 따라 추론함으로써 오류를 보정하는 한글 오류 보정 방법.
  9. 제8항에 있어서,
    상기 학습 모델은,
    사용자가 작성한 텍스트를 이용하여, 규칙 기반의 오류 생성 과정과 지식 사전 기반의 오류 생성 과정을 통해 클린 텍스트로부터 오류 텍스트를 생성하는 한글 오류 보정 방법.
  10. 제9항에 있어서,
    상기 규칙 기반의 오류 생성 과정은,
    상기 클린 텍스트의 각 음절을 자소 레벨로 분리하여 오류를 추가하고, 오류를 추가한 이후에 다시 음절 단위로 재조합하는 과정인 한글 오류 보정 방법.
  11. 제9항에 있어서,
    상기 지식 사전 기반의 오류 생성 과정은,
    오류 패턴과 오류 보정 간의 매핑 관계를 정의한 지식 사전을 고려하여, 클린 텍스트가 오류 보정인 경우, 오류 보정에 대응하는 오류 패턴으로 변환하는 과정인 한글 오류 보정 방법.
  12. 제9항에 있어서,
    상기 학습 모델은,
    상기 클린 텍스트와 오류 텍스트를 한글 영역과 한글외 영역으로 분리하는 동작;
    상기 한글 영역에 대해서는 초성, 중성 및 종성의 음절 단위로 구분하여 벡터화하는 동작;
    상기 한글외 영역의 경우, 한글 이외의 문자, 기호, 숫자, 공백을 단일 토큰으로 정규화한 후 벡터화하는 동작
    을 이용하여 벡터화를 수행하는 한글 오류 보정 방법.
  13. 제9항에 있어서,
    상기 학습 모델은,
    입력 시퀀스 벡터를 하나의 벡터로 추상화하는 인코더와 추상화된 입력 시퀀스 벡터를 출력 시퀀스 벡터와 매핑하는 디코더로 구성된 학습 모델을 이용하여 학습을 수행하는 한글 오류 보정 방법.
  14. 제9항에 있어서,
    상기 오류를 보정하는 동작은,
    N차원의 라벨들에 대해 독립적으로 예측된 확률값을 추론 규칙에 따라 음절로 조합함으로써 추론을 수행하는 한글 오류 보정 방법.
  15. 제14항에 있어서,
    상기 추론 규칙은,
    이전 시퀀스의 출력 벡터에서 추론에 사용된 값이면, 현재 시퀀스의 확률값을 일정 비율로 감소하는 동작;
    한글 영역의 확률 분포와 한글외 영역의 확률 분포를 비교하여 현재 시퀀스가 한글 음절인지 여부를 판단하는 동작,
    상기 현재 시퀀스가 한글 음절로 판단된 경우, 초성, 중성, 종성 중 각각의 확률값이 최대인 자소를 결합하여 음절을 추론하는 동작,
    상기 현재 시퀀스가 한글 음절이 아닌 것으로 판단된 경우, 확률값이 최대인 문자를 추론하는 동작,
    을 포함하는 한글 오류 보정 방법.
  16. 제15항에 있어서,
    상기 추론 규칙은,
    출력 벡터의 엔트로피가 임계값 이상인 경우, 입력 시퀀스의 동일한 음절 또는 문자로 추론하는 동작
    을 포함하는 한글 오류 보정 방법.
  17. 한글 오류 보정 시스템에 있어서,
    프로세서를 포함하고, 상기 프로세서는,
    오류가 존재하지 않는 클린 텍스트에서 오류 텍스트를 생성하는 동작;
    상기 클린 텍스트와 상기 오류 텍스트에 대해 음절 기반의 벡터화를 수행하는 동작; 및
    상기 클린 텍스트로부터 도출된 벡터와 상기 오류 텍스트로부터 도출된 벡터를 이용하여 한글 오류 보정을 위한 학습을 수행하는 동작
    을 수행하는 한글 오류 보정 시스템.
  18. 한글 오류 보정 시스템에 있어서,
    프로세서를 포함하고, 상기 프로세서는,
    한글 오류 보정을 위한 학습 모델을 읽는 동작;
    상기 학습 모델을 이용하여 타겟 텍스트에서 오류를 보정하는 동작
    을 포함하고,
    상기 학습 모델은,
    오류가 없는 클린 텍스트에서 오류 텍스트를 생성하고, 클린 텍스트와 오류 텍스트를 벡터화함으로써 학습하고,
    상기 오류를 보정하는 동작은,
    상기 학습 모델의 출력 결과인 출력 벡터에 대해 멀티 라벨 추론 방식에 따라 추론함으로써 오류를 보정하는 한글 오류 보정 시스템.
  19. 제1항 내지 제16항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
KR1020180120987A 2018-10-11 2018-10-11 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템 KR102143745B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180120987A KR102143745B1 (ko) 2018-10-11 2018-10-11 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180120987A KR102143745B1 (ko) 2018-10-11 2018-10-11 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200093388A Division KR102236639B1 (ko) 2020-07-27 2020-07-27 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템

Publications (2)

Publication Number Publication Date
KR20200044208A true KR20200044208A (ko) 2020-04-29
KR102143745B1 KR102143745B1 (ko) 2020-08-12

Family

ID=70466554

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180120987A KR102143745B1 (ko) 2018-10-11 2018-10-11 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템

Country Status (1)

Country Link
KR (1) KR102143745B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092487A (ko) * 2019-01-10 2020-08-04 한국전자통신연구원 다중 뉴럴 네트워크를 이용한 문자 인식을 위한 장치 및 그것의 동작 방법
KR20210107301A (ko) * 2020-02-24 2021-09-01 주식회사 한글과컴퓨터 개인별 맞춤형 자동 오타 정정을 수행할 수 있는 전자 단말 장치 및 그 동작 방법
KR20220016650A (ko) * 2020-08-03 2022-02-10 주식회사 딥브레인에이아이 텍스트 전처리 장치 및 방법
KR20220030448A (ko) * 2020-09-01 2022-03-11 고려대학교 산학협력단 언어 대응 화상 출력 장치, 방법 및 시스템
KR20240035117A (ko) 2022-09-08 2024-03-15 주식회사 케이티 자연어 문장 처리 방법 및 이를 위한 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110068491A (ko) * 2009-12-16 2011-06-22 포항공과대학교 산학협력단 문법 오류 시뮬레이션 장치 및 방법
KR20120053207A (ko) * 2010-11-17 2012-05-25 한국과학기술정보연구원 술어-논항구조 기반의 관계 식별 방법 및 장치
KR20180055189A (ko) * 2016-11-16 2018-05-25 삼성전자주식회사 자연어 처리 방법 및 장치와 자연어 처리 모델을 학습하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110068491A (ko) * 2009-12-16 2011-06-22 포항공과대학교 산학협력단 문법 오류 시뮬레이션 장치 및 방법
KR20120053207A (ko) * 2010-11-17 2012-05-25 한국과학기술정보연구원 술어-논항구조 기반의 관계 식별 방법 및 장치
KR20180055189A (ko) * 2016-11-16 2018-05-25 삼성전자주식회사 자연어 처리 방법 및 장치와 자연어 처리 모델을 학습하는 방법 및 장치

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
D.Nguyen et al., Ripple Down Rules for Question Answering, Journal of Semantic Web, IOS Press, 2015 *
김혜민 외, 품사 분포와 Bidirectional LSTM CRFs를 이용한 음절 단위 형태소 분석기, 제28회 한글및한국어 정보처리 학술대회 논문집 (2016) 1부.* *
배진학 외, "영ㆍ숫자 한글 문서에서 문자 분리 및 인식", 정보과학회논문지 제23권제9호, pp.941-949 (1996) *
유인준, 멀티레이블 텍스트 마이닝을 위한 하이브리드 특징 선별 기법, 중앙대학교 석사학위논문, (2018.08) 1부.* *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200092487A (ko) * 2019-01-10 2020-08-04 한국전자통신연구원 다중 뉴럴 네트워크를 이용한 문자 인식을 위한 장치 및 그것의 동작 방법
KR20210107301A (ko) * 2020-02-24 2021-09-01 주식회사 한글과컴퓨터 개인별 맞춤형 자동 오타 정정을 수행할 수 있는 전자 단말 장치 및 그 동작 방법
KR20220016650A (ko) * 2020-08-03 2022-02-10 주식회사 딥브레인에이아이 텍스트 전처리 장치 및 방법
KR20220030448A (ko) * 2020-09-01 2022-03-11 고려대학교 산학협력단 언어 대응 화상 출력 장치, 방법 및 시스템
KR20240035117A (ko) 2022-09-08 2024-03-15 주식회사 케이티 자연어 문장 처리 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
KR102143745B1 (ko) 2020-08-12

Similar Documents

Publication Publication Date Title
US11132512B2 (en) Multi-perspective, multi-task neural network model for matching text to program code
KR102143745B1 (ko) 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템
US11151130B2 (en) Systems and methods for assessing quality of input text using recurrent neural networks
US11972365B2 (en) Question responding apparatus, question responding method and program
CN109933780B (zh) 使用深度学习技术确定文档中的上下文阅读顺序
CN110532353B (zh) 基于深度学习的文本实体匹配方法、系统、装置
WO2020088330A1 (en) Latent space and text-based generative adversarial networks (latext-gans) for text generation
US11693854B2 (en) Question responding apparatus, question responding method and program
Lin et al. A post-processing method for detecting unknown intent of dialogue system via pre-trained deep neural network classifier
CN108960338B (zh) 基于注意力反馈机制的图像自动语句标注方法
CN113590761B (zh) 文本处理模型的训练方法、文本处理方法及相关设备
KR20190101567A (ko) 기계 독해에 기초한 질의 응답 장치 및 이를 이용한 질의 응답 방법
KR20200123544A (ko) 동의어 추출 방법
WO2020240709A1 (ja) 対話処理装置、学習装置、対話処理方法、学習方法及びプログラム
CN113837370A (zh) 用于训练基于对比学习的模型的方法和装置
KR20200116760A (ko) 단어의 문맥 정보와 형태론적 정보를 고려한 단어 임베딩 방법 및 장치
Malykh et al. Robust word vectors: Context-informed embeddings for noisy texts
JP2019204214A (ja) 学習装置、学習方法、プログラム及び推定装置
Han et al. Text adversarial attacks and defenses: Issues, taxonomy, and perspectives
Tüselmann et al. Recognition-free question answering on handwritten document collections
US11954432B2 (en) Symbol sequence generation apparatus, text compression apparatus, symbol sequence generation method and program
US20230130662A1 (en) Method and apparatus for analyzing multimodal data
KR102236639B1 (ko) 음절 기반의 벡터를 이용한 한글 오류 보정 방법 및 한글 오류 보정 시스템
CN113704466B (zh) 基于迭代网络的文本多标签分类方法、装置及电子设备
Malykh et al. Robust Word Vectors: Context-Informed Embeddings for Noisy Texts

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant