KR102310323B1 - 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템 - Google Patents

자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템 Download PDF

Info

Publication number
KR102310323B1
KR102310323B1 KR1020200164280A KR20200164280A KR102310323B1 KR 102310323 B1 KR102310323 B1 KR 102310323B1 KR 1020200164280 A KR1020200164280 A KR 1020200164280A KR 20200164280 A KR20200164280 A KR 20200164280A KR 102310323 B1 KR102310323 B1 KR 102310323B1
Authority
KR
South Korea
Prior art keywords
grapheme
token
list
unit
word
Prior art date
Application number
KR1020200164280A
Other languages
English (en)
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 KR1020200164280A priority Critical patent/KR102310323B1/ko
Application granted granted Critical
Publication of KR102310323B1 publication Critical patent/KR102310323B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/163Handling of whitespace
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/268Morphological analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Machine Translation (AREA)

Abstract

본 발명은 자소 단위 기반의 감성 분석 방법에 대한 것으로, 텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 함수를 마련하는 단계, 입력된 텍스트 문서에 낱말 분석기(tokenizer)를 적용하여 낱말 단위의 토큰 리스트를 획득하는 단계, 상기 토큰 리스트의 각 토큰에 개별적으로 상기 자소 변환 함수를 적용하여 자소 리스트를 획득하는 단계, 상기 자소 리스트를 임베딩하는 단계, 자소 단위 사전 학습 모델을 구성하는 단계, 상기 사전 학습 모델에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 단계 및 임베딩 된 자소 리스트를 상기 감성 분석 모델에 입력하여 감성 분류 결과를 획득하는 단계를 포함한다.

Description

자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템{Sentiment analyzer system using tokenizer based on grapheme level}
본 발명의 기술분야는 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템에 관한 것이다.
자연어를 컴퓨터가 읽고 처리할 수 있게 하는 것이 자연어 처리이다. 컴퓨터와 사람 간의 상호작용을 연구하는 컴퓨터 과학과 어학의 한 분야로, 인간의 언어를 이해하기 위해 머신러닝 기술을 적용하여 데이터를 처리하면 과거의 전통적인 방식과는 달리 좀 더 손쉽고 신속하게 정보를 얻어낼 수 있다. 따라서 자연어 처리는 정보검색, 자동통역, 문서작성, 요약분류, 철자 오류 수정 등 이용자의 의도를 컴퓨터가 파악하여 다양한 데이터를 정확하게 제공하는 데 사용된다. 대표적인 자연어 처리 서비스로는 구글 홈, 구글 어시스턴트, 워드렌즈, 왓슨, 코타나, 스카이프 트랜스레이터, 그래머리, 진저 등이 있고, 세부 기술로는 형태소 분석, 고정밀 구문분석과 같은 구조 분석을 바탕으로 한 담화 분석, 문서분류, 정보 요약, 정보추출 기술 등이 있다. 분석은 자연언어 문장에서 형태소 분석, 구문 분석, 의미 분석, 화용 분석 단계를 거쳐 결과가 도출된다.
자연어 처리는 자연어로 이루어진 문장을 입력한 후, 형태소 분석, 구문 분석, 의미 분석, 화용 분석을 거친 후, 결과를 도출하는 일련의 과정으로 이루어져 있다. 자연어 처리에서의 형태소 분석은 대상을 작은 의미 단위인 형태소로 분석하는 것을 의미한다. 정보 검색 엔진에서 한국어의 색인어를 추출할 때 많이 사용된다. 자연어로 작성된 SNS, 웹 문서, 뉴스 기사의 텍스트 데이터를 형태소로 변환해야 다음 단계의 분석 효율성이 올라가기 때문에, 문장을 최소단위까지 쪼개는 것이다. 형태소 분석의 치명적인 약점은 오탈자 발생, 띄어쓰기 오류, 등록되지 않은 언어 등으로 분석에 오류가 발생하거나, 중의적인 의미와 신조어 처리 등이 있다. 복합 명사의 분해도 형태소 분석의 어려운 문제 중 하나이다. 구문 분석은 문장을 구성하는 성분 간의 관계를 분석하는 것을 말한다. 의미분석은 문장이 나타내는 의미를 분석 및 해석하여 문장 속 단어가 실제로 어떤 의미로 사용되었는가를 판단한다.
1950년대부터 기계 번역과 같은 자연어 처리 기술이 연구되기 시작했으며, 90년대 이후에는 대량의 말뭉치 데이터를 사용하는 기계 학습 기반 및 통계적 자연어 처리 기법이 자주 사용되었다. 최근에는 자연어를 효율적으로 처리하기 위해서 딥러닝 기술을 기계 번역 또는 자연어 생성 등에 이용하는 방법에 대한 연구가 활발히 이루어지고 있다. 그 중 일 응용 분야인 감성 분석(sentiment analyzer)는 텍스트로 구성된 문서를 최소의 의미를 가지는 유효한 단위인 형태소 단위로 나눈 뒤 자연어 처리를 하여, 문서의 긍정 및 부정 분류나, 분노/행복/중립 등의 감성 상태를 판별하는데 이용한다. 다만, 형태소의 경우에는 언어마다 단어를 구분하는 방식이 다르고, 각 언어별로 별도의 시스템을 구현해야 한 다는 점에서 영어용 형태소분석기와 사전은 한글이나 일본어 등에는 적용하기 힘들다는 단점이 지적되고 있다. 또한, 미리 정의된 사전에 없는 단어는 인식하지 못하여 성능 개선의 한계가 있고, 사전 기반이 아닌 글자 기반의 변화가 많은 언어나 일본어처럼 띄어쓰기가 없는 언어의 경우 처리에 있어서 효율이 떨어지는 문제점이 있다.
대한민국 등록특허공보 제 10-0912348호
상술한 바와 같은 문제점을 해결하기 위한 본 발명은 형태소 기반의 감성분석기가 아닌 감성 분석 방법, 프로그램 및 시스템에 관한 것을 제공하고자 한다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 발명의 일 실시예에 따른 자소 단위 기반의 감성 분석 방법은, 텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 함수를 마련하는 단계, 입력된 텍스트 문서에 낱말 분석기(tokenizer)를 적용하여 낱말 단위의 토큰 리스트를 획득하는 단계, 상기 토큰 리스트의 각 토큰에 개별적으로 상기 자소 변환 함수를 적용하여 자소 리스트를 획득하는 단계, 상기 자소 리스트를 임베딩하는 단계, 자소 단위 사전 학습 모델을 구성하는 단계, 상기 사전 학습 모델에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 단계, 임베딩 된 자소 리스트를 상기 감성 분석 모델에 입력하여 감성 분류 결과를 획득하는 단계를 포함한다.
상기 텍스트 문서의 언어가 한국어일 경우 총성,중성,종성으로 분해하거나 또는 모음,자음으로 분리하고, 텍스트 문서의 언어가 영어일 경우, 알파벳 단위로 분해할 수 있다.
상기 자소 변환 함수는 자소의 강조, 추가, 변환 및 제거가 가능할 수 있다.
상기 자소 변환 함수는, 중복된 공백을 하나로 치환시키는 함수, 종성의 유무를 판별하는 종성 특수자소를 추가하는 함수, 낱말 시작하는 자소를 구분하는 낱말 구분 특수자소를 추가하는 함수, 공백을 공백 특수자소로 변환하는 함수 중 적어도 하나를 포함할 수 있다.
상기 낱말 분석기는, 공백 판별기과 형태소분석기 중 적어도 하나를 이용하여 텍스트 문서를 낱말 단위의 토큰 리스트로 획득하는 것일 수 있다.
상기 자소 리스트를 획득하는 단계는, n-gram 알고리즘을 이용하여 내부 단어(subword unit)으로 분리하는 단계를 포함할 수 있다.
상기 자소 리스트를 획득하는 단계는, BPE(Byte Pair Encoding) 알고리즘을 적용하여 내부 단어를 빈도수 별로 분류하는 단계; 및
고빈도수로 판별된 내부 단어를 연결하여 고빈도이면 새로운 내부 단어로 판별하고, 저빈도의 단어는 더 작은 내부 단어로 쪼개는 내부 단어를 재분류 하는 과정을 수행하는 단계; 을 더 포함할 수 있다.
분류된 내부 단어 집합이 기설정된 수치에 도달할 때까지 내부 단어의 빈도수 별 분류 및 내부 단어의 재분류 단어를 반복 수행하는 단계를 더 포함할 수 있다.
상기 임베딩하는 단계는, 상기 토큰을 벡터 정보로 포함하는 토큰 임베딩 단계, 토큰이 포함된 문장이 문서 내에서 몇번째 문장인지 문장 정보를 포함하는 세그먼트 임베딩 단계 및 토큰의 문장 내에서의 위치 정보를 포함하는 포지션 임베딩 단계를 포함할 수 있다.
상기 임베딩하는 단계는, 말뭉치(corpus)의 자소 조합을 학습하여 빈도수에 따라 가중치를 차등으로 설정하는 단계를 더 포함할 수 있다.
상기 자소 단위 사전 학습 모델을 구성하는 단계는, Masker Language Model(MLM)을 이용하거나, Next Sentecnce Prediction Model(NSPM)을 이용하는 단계일 수 있다.
MLM을 이용하는 경우, 학습 데이터 문장 토큰 중 적어도 일부를 마스킹하는 단계, 마스킹된 토큰 중 과반수 이상의 토큰은 빈칸으로 만들고 모델을 이용해 빈칸에 해당하는 토큰을 생성하는 단계, 마스킹된 토큰 중 과반수 미만의 토큰 중 일부의 빈칸은 랜덤으로 다른 토큰으로 대체하고, 모델을 통해 대체된 토큰의 정답을 예측하도록 하는 단계, 마스킹된 토큰 중 과반수 미만의 토큰 중 나머지 빈칸은 토큰을 변경하지 않고, 모델이 해당 토큰의 정답을 예측하도록 하는 단계를 포함할 수 있다.
NSPM을 이용하는 경우, 두 문장을 입력으로 넣고, 두번째 문장이 첫번째 문장 바로 다음에 오는지 여부를 예측하면서 모델을 업데이트 하는 단계를 포함할 수 있다.
상기 사전 학습 모델에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 단계는, 상기 감성 판별용 레이어에 함수를 적용해 감성 라벨의 종류에 부합하도록 n 차원 확률 벡터로 변환하는 단계 변환된 n 차원 확률 벡터와 정답 감성 라벨과 대조하여 cross 엔트로피를 연산하는 단계 및 Cross 엔트로피를 최소화하도록 모델 파라미터를 수정하여 파인 튜닝을 수행하는 단계를 포함할 수 있다.
상기 낱말 분석기는, 기결정된 길이를 가지는 최초 토큰을 결정하고, 우측으로 1글짜씩 커지도록 낱말 성립여부를 판별하는 알고리즘을 포함할 수 있다.
상술한 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 자소 단위 기반의 감성 분석 프로그램은 컴퓨터인 하드웨어와 결합되어, 전술한 방법을 실행하기 위해 매체에 저장된다.
상술한 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 자소 단위 기반의 감성 분석 컴퓨팅 장치는, 텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 모듈, 입력된 텍스트 문서에 낱말 단위의 토큰(token) 리스트를 획득하는 낱말 분석기, 및 상기 낱말 분석기를 제어하여 입력된 텍스트 문서에 낱말 단위의 토큰리스트를 획득하고, 상기 자소 변환 모듈을 제어하여 자소 리스트를 획득하고, 상기 자소 리스트를 임베딩하고, 자소 단위 사전 학습 모델을 생성하고, 상기 사전 학습 모델에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 제어부를 포함하는 자소 단위 기반의 감성 분석 컴퓨팅 장치.
상기 자소 변환 모듈은, 텍스트 문서의 언어가 한국어일 경우 총성, 중성, 종성으로 분해하거나 또는 모음, 자음으로 분리하고, 텍스트 문서의 언어가 영어일 경우, 알파벳 단위로 분해할 수 있다.
상기 자소 변환 모듈은, 자소의 강조, 추가, 변환 및 제거가 가능할 수 있다.
상기 자소 변환 모듈은, 중복된 공백을 하나로 치환시키는 함수, 종성의 유무를 판별하는 종성 특수자소를 추가하는 함수, 낱말 시작하는 자소를 구분하는 낱말 구분 특수자소를 추가하는 함수, 공백을 공백 특수자소로 변환하는 함수 중 적어도 하나를 포함할 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 더 제공될 수 있다.
상기와 같은 본 발명에 따르면, 형태소보다 작은 단위인 자소로 문서를 분해한뒤 자연어 처리가 가능함으로써, 각 언어별로 별도의 시스템을 별도로 구현하지 않고서, 한국어 뿐 아니라 영어, 일본어, 중국어와 같은 다양한 언어에 적용이 가능하며, 사전방식이 아니므로 미리 정의된 사전에 없는 단어도 적용이 가능하며 모델의 성능 개선에 용이하고, 문서의 긍정/부정 및 화남/행복/중립 등 감성 분석 처리가 용이하다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 자소 단위의 감성 분석 방법에 대해 도시한 순서도이다.
도 2는 자소 변환 모듈의 함수별 작동 방법을 예시적으로 도시한 도면이다.
도 3은 낱말 분석기의 함수별 작동 방법을 예시적으로 도시한 도면이다.
도 4는 일 실시예에 따른 토큰 리스트 생성 방법을 상세하게 나타낸 순서도이다.
도 5는 일 실시예에 따른 자소 리스트의 임베딩 방법을 상세하게 나타낸 순서도이다.
도 6은 도 5에 따른 임베딩 방법을 예시적으로 나타낸 도면이다.
도 7은 일 실시예에 따른 사전 학습 모델 생성 방법을 나타낸 순서도이다.
도 8 및 9는 도 7에 따른 사전 학습 모델 생성 방법을 예시적으로 나타낸 도면이다.
도 10은 일 실시예에 따른 사전 학습 모델을 파인 튜닝 방법을 상세하게 나타낸 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
설명에 앞서 본 명세서에서 사용하는 용어의 의미를 간략히 설명한다. 그렇지만 용어의 설명은 본 명세서의 이해를 돕기 위한 것이므로, 명시적으로 본 발명을 한정하는 사항으로 기재하지 않은 경우에 본 발명의 기술적 사상을 한정하는 의미로 사용하는 것이 아님을 주의해야 한다.
도 1은 자소 단위의 감성 분석 방법에 대해 도시한 순서도이다.
도 1을 참조하면, 텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 함수를 마련하는 단계(S100), 입력된 텍스트 문서에 낱말 분석기(tokenizer)를 적용하여 낱말 단위의 토큰 리스트를 획득하는 단계(S200), 토큰 리스트의 각 토큰에 개별적으로 상기 자소 변환 함수를 적용하여 자소 리스트를 획득하는 단계(S300), 자소 리스트를 임베딩하는 단계(S400), 자소 단위의 사전 학습 모델을 구성하는 단계(S500), 상기 사전 학습 모델에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 단계(S600) 및 임베딩 된 자소 리스트를 상기 감성 분석 모델에 입력하여 감성 분류 결과를 획득하는 단계(S700)를 포함한다.
자소 변환 함수를 마련하는 단계(S100)는 텍스트 문서를 입력으로 넣으면 언어별 최소단위 자소단위로 변환한 자소 리스트를 출력하는 자소 변환 함수를 마련하는 단계이다.
본 발명에 따른 자소 변환 함수는, 특성상 타겟 언어의 특성을 반영해야 하며, 하나의 문서에 다양한 언어가 섞여 있는 경우, 해당 문자의 문자 세트(charset)을 기반으로 대상 언어를 파악해서 대상 언어에 맞는 함수를 적용할 수 있다.
각 언어별로 최소단위(grapheme)가 다를 수 있다. 한국어처럼 문자 하나를 다시 초성, 중성, 종성 또는 모음/자음등으로 나눌 수 있는 언어는 더 작게 분해하는 함수가 존재한다. 반면 영어의 경우는 최소 단위가 알파벳 문자이므로 캐릭터 단위로 분해했을때와 동일하다. 본 발명에 따른 자소 변환 함수는 이러한 각 언어별 자소 특성을 고려할 수 있다.
자소 변환 함수는 추가적으로 특정한 자소를 강조한다거나 자소 추가, 변환, 제거도 가능하다. 예를들어 중복된 공백이 있을 경우 하나로 치환 한다든지, 문장 끝을 표시한다든지, 종성이 없는 경우 종성 없음 표시를 추가한다든지, 또는 공백이나 다른 특수문자를 적절한 문자로 변환도 가능하다. 구체적인 예는 도 3를 통해 후술한다.
도 2는 자소 변환 모듈(100)의 함수별 작동 방법을 예시적으로 도시한 도면이다. 도 2를 참조하면, 자소 변환 모듈(100)은 자소 변환 함수를 구동하고 제어하는 모듈을 나타낸다.
도 2를 참조하면, 자소 변환 모듈(100)은 자소 기본 분해부(110), 공백 처리/치환부(120), 종성 특수자소 추가부(130), 토큰 특수자소 추가부(140), 외국어 자소 처리부(150)를 포함할 수 있다.
자소 기본 분해부(110)는 한국어 텍스트 문서를 글자 표기상의 최소 요소인 자소(grapheme)으로 분해할 수 있다. 예를 들어, "자소 단위 분해"라는 한국어 텍스트를 "ㅈㅏㅅㅗ ㄷㅏㄴㅇㅟ ㅂㅜㄴㅎㅐ"라는 자소로 분해할 수 있다.
공백 처리/치환부(120), 문서 내의 복수개의 연결된 공백을 단일 공백으로 치환하도록 처리할 수 있다. 예를 들어, “ㅈㅏㅅㅗ ㄷㅏㄴㅇㅟ” 라는 텍스트에는 3개의 공백이 연달아 도시되는데, 이를 1개의 공백으로 변경하여 “ㅈㅏㅅㅗ ㄷㅏㄴㅇㅟ”로 변경할 수 있다.
종성 특수자소 추가부(130)는, 종성이 없는 경우에는 종성 없음 특수자소를 추가하여 자소의 분석이 용이하도록 할 수 있다. 예를 들어, 종성 없음 특수자소를 "^"라고 정의할 수 있다. 예를 들어, “ㅈㅏㅅㅗ ㄷㅏㄴㅇㅟ ㅂㅜㄴㅎㅐ”라는 문서에 대해서, 종성이 있는 자소에는 종성 없음 특수자소를 추가하지 않고, 종성이 없는 자소에는 특수자소 "^"를 추가하여 “ㅈㅏ^ㅅㅗ^ ㄷㅏㄴㅇㅟ^ ㅂㅜㄴㅎㅐ^”로 자소 변환을 수행할 수 있다.
토큰 특수자소 추가부(140)는, 토큰(낱말)이 시작하는 자소는 다른 자소와 구분되도록 토큰 특수자소 "!"를 추가하고, 토큰이 시작하지 않는 일반 자소는 토큰 특수자소 "#"을 추가할 수 있다. 예를 들어, “ㅈㅏㅅㅗ ㄷㅏㄴㅇㅟ ㅂㅜㄴㅎㅐ”라는 텍스트에, 토큰 시작하는 자소에 토큰 특수자소 "!"를 추가하여 “ㅈ!ㅏㅅㅗ ㄷ!ㅏㄴㅇㅟ ㅂ!ㅜㄴㅎㅐ”로 변환할 수 있다. 예를 들어, “ㅈ!ㅏㅅㅗ ㄷ!ㅏㄴㅇㅟ ㅂ!ㅜㄴㅎㅐ”에 토큰 시작하는 자소가 아닌 자소에 토큰 특수자소 "#"를 추가하여 “ㅈ!ㅏ#ㅅ#ㅗ ㄷ!ㅏ#ㄴㅇ#ㅟ ㅂ!ㅜ#ㄴ#ㅎ#ㅐ”로 변환할 수 있다.
외국어 자소 처리부(150)는, 한국어 뿐 아니라 외국어로만 구성된 텍스트 또는 한국어와 외국어가 혼합된 텍스트로 자소 변환을 처리할 수 있다. 예를 들어, 외국어 자소 처리부(150)는 외국어 자소와 한국어 자소를 특수자소 "_"를 추가하여 구분할 수 있다. 예를 들어, “하늘을 나는 자동차와 TV”를 자소 처리해서 “ㅎㅏㄴㅡㄹㅇㅡㄹ_ㄴㅏ^ㄴㅡ ㄴ_ㅈㅏ^ㄷㅗㅇㅊㅏ^ㅇㅘ^_tv" 한국어 자소를 처리하고, 외국어 자소의 경우 공백에 특수자소 "_"를 추가하여 구분할 수 있다. 예를 들어, “my name is joy"는 “my_name_is_joey"로 자소를 분해할 수 있다.
도 3은 낱말 분석기(200)의 함수별 작동 방법을 예시적으로 도시한 도면이다. 도 3을 참조하면, 텍스트 문서에 낱말 분석기(200) 적용하여, 토큰 리스트 획득하는 단계는 최소 토큰 개수로부터 오른쪽으로 순차적으로 n글짜식 토큰을 인식하는 낱말 분석 알고리즘1(210), 형태소 기준으로 토큰 인식하는 분석낱말 분석 알고리즘2(220), 공백 기준으로 토큰 인식하는 낱말 분석 알고리즘3(230)을 포함할 수 있다.
낱말 분석 알고리즘1(210)은 최초 토큰 개수를 기점으로, 우측으로 순차적으로 n글자씩 확장하며 토큰을 인식할 수 있다. 예를 들어, "안녕하세요"의 경우, 최초 2글자인 "안녕"을 최초 토큰으로 설정하고, 우측으로 1글자씩 확장하며 토큰을 인식할 수 있다.
낱말 분석 알고리즘2(220)는 형태소를 기반으로 하여 토큰을 설정할 수 있다. 예를 들어, "집에 가세요"라는 문자의 경우, 일반 명사인 "집", 부사격 조사인 "에", 동사인 "가", 선어말 어미인 "시", 연결 어미인 "어요"로 낱말을 분해하여 인식할 수 있다.
낱말 분석 알고리즘3(230)은 공백을 기준으로 하여 토큰을 설정할 수 있다.
예를 들어, "집에 가세요"라는 문자의 경우, 공백을 전후로 하여 "집에"와 "가세요"로 토큰을 판별할 수 있다.
도 4는 일 실시예에 따른 토큰 리스트 생성 방법을 상세하게 나타낸 순서도이다.
도 4를 참조하면, 토큰 리스트 생성 방법은, 자소 리스트에 n-gram 알고리즘을 적용하여 내부 단어(subword unit)으로 나누는 단계(S310), BPE(Byte Pair Encoding) 알고리즘 적용하여 말뭉치(Corpus) 별 고빈도 내부 단어 분류하는 단계(S320), 고빈도 내부 단어를 앞뒤로 이어 고빈도이면 새로운 내부 단어로 형성하는 단계(S330), 자주 등장하지 않는 내부 단어는 더 작은 내부 단어로 분리하는 단계(S340), 고빈도 내부 단어 집합의 크기가 기준치에 도달할 때까지 반복하여 내부 단어 분류하는 단계(S350)을 포함할 수 있다.
자소 리스트에 n-gram 알고리즘을 적용하여 내부 단어(subword unit)으로 나누는 단계(S310)는, 하나의 토큰이 더 작은 단위의 의미있는 여러 서브워드들의 조합으로 구성된 경우가 많아, 하나의 토큰을 내부 단어로 인코딩 및 임베딩 하겠다는 전처리 작업을 나타낸다. 예를 들어, "birthplace"라는 단어는 "birth"와 "place"라는 내부 단어들의 조합으로 나타낼 수 있다. 예를 들어, "헛기침"이라는 단어는 "헛"과 "기침"이라는 내부 단어들의 조합으로 나타낼 수 있다.
n-gram 알고리즘은 입력한 문자열을 n개의 기준 단위로 절단하는 알고리즘을 나타낸다. 기준 단위는 자소 단위, 토큰 단위일 수 있다. 예를 들어, "Here is a dog" 라는 문장을 자소 절단 단위의 3-gram으로 만든다면, "Her", "ere", "re_", "e_i", "_is", "is_", "s_a", "_a_", "a_d", "_do", "dog" 로 절단할 수 있다. 예를 들어, "Here is a dog" 라는 문장을 토큰 절단 단위의 2-gram으로 만든다면, "Here is", "is a", "a dog" 로 절단할 수 있다.
BPE(Byte Pair Encoding) 알고리즘 적용하여 말뭉치(Corpus) 별 고빈도 내부 단어 분류하는 단계(S320)는, 내부 단어 분리 알고리즘인 BPE 알고리즘을 이용하여 말뭉치별로 내부 단어의 빈도수를 판별할 수 있다.
BPE 알고리즘은 서브워드 분리(subword segmentation) 알고리즘으로 글자(charcter) 단위에서 점차적으로 단어 집합(vocabulary)을 만들어 내는 Bottom up 방식의 알고리즘이다. 예를 들어, 학습을 위한 데이터로부터 단어들의 빈도수를 카운트하면, 각 단어 및 각 단어의 빈도수는 사전(dictionary)의 형태로 저장된다. BPE 알고리즘은 이러한 알고리즘을 단어에서 형태소 단위로 분리하여 이용되어 보다 다양한 형태소의 조합에 대응될 수 있으며, 본 발명은 BPE 알고리즘을 자소 단위까지 대응시키도록 할 수 있다.
고빈도 내부 단어를 앞뒤로 이어 고빈도이면 새로운 내부 단어로 형성하는 단계(S330)는 고빈도로 판별된 내부 단어의 경우 다시 한쌍으로 통합한 뒤 빈도수를 확인하고 통합된 경우에도 고빈도일 경우에는 새로운 내부 단어로 정의한다.
자주 등장하지 않는 내부 단어는 더 작은 내부 단어로 분리하는 단계(S340)는, 내부 단어가 일정 이하의 빈도수만 나올 경우 더 작은 내부 단어로 분리한 뒤 빈도수를 확인하여 빈도가 상대적으로 더 높아지는 경우에는 새로운 내부 단어로 정의한다.
고빈도 내부 단어 집합의 크기가 기준치에 도달할 때까지 반복하여 내부 단어 분류하는 단계(S350)는, 전 단계(S330, 340)를 사용자의 의도에 따라 반복하며 내부 단어 집합의 크기가 일정 수치에 이를때까지 반복할 수 있다.
[실시예 1]
1) 문서에 "내가 그린 기린 그림"이 입력됨
2) 낱말 분석기로 토큰을 구분하여 이하의 표 1과 같이, "내가" "그린" "기린 "그림'으로 토큰 리스트 생성
내가
그린
기린
그림
3) 자소 변환 함수를 이용하여 이하의 표 1과 같이, 토큰 리스트를 자소 리스트로 변경
ㄴ #ㅐ#ㄱ#ㅏ
ㄱ#ㅡ#ㄹ#ㅣ#ㄴ
ㄱ#ㅣ#ㄹ#ㅣ#ㄴ
ㄱ#ㅡ#ㄹ#ㅣ#ㅁ
4) 내부 단어 집합을 형성하는 단계
4-1) 반복회수 0일 때, 이하의 표 3과 같이,
ㄴ #ㅐ#ㄱ#ㅏ
ㄱ#ㅡ#ㄹ#ㅣ#ㄴ
ㄱ#ㅣ#ㄹ#ㅣ#ㄴ
ㄱ#ㅡ#ㄹ#ㅣ#ㅁ
4-2) 반복회수 1일 때, 이하의 표 4와 같이,
  Bi-gram pair subword unit(Token 결과 후보) subword unit 출현 빈도
내가 (ㄴ #ㅐ) (#ㅐ #ㄱ) (#ㄱ#ㅏ) (ㄴ #ㅐ) 1
그린 (ㄱ#ㅡ)(#ㅡ#ㄹ)(#ㄹ#ㅣ)(#ㅣ#ㄴ) (#ㅐ #ㄱ) 1
기린 (ㄱ#ㅣ)(#ㅣ#ㄹ)(#ㄹ#ㅣ)(#ㅣ#ㄴ) (#ㄱ#ㅏ) 1
그림 (ㄱ#ㅡ)(#ㅡ#ㄹ)(#ㄹ#ㅣ)(#ㅣ#ㅁ) (ㄱ#ㅡ) 2
    (#ㅡ#ㄹ) 2
    (#ㄹ#ㅣ) 3
    (#ㅣ#ㄴ) 2
    (ㄱ#ㅣ) 1
    (#ㅣ#ㄹ) 1
    (#ㅣ#ㅁ) 1
4-3) 반복회수 2일 때, 이하의 표 5과 같이,
  고빈도 pair를 새로운 subword unit으로 반영한 다음의 Bi-gram pair Token결과 후보  
내가 (ㄴ #ㅐ) (#ㅐ #ㄱ) (#ㄱ#ㅏ) (ㄴ #ㅐ) 1
그린 (ㄱ#ㅡ)(#ㅡ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㄴ) (#ㅐ #ㄱ) 1
기린 (ㄱ#ㅣ)(#ㅣ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㄴ) (#ㄱ#ㅏ) 1
그림 (ㄱ#ㅡ)(#ㅡ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㅁ) (ㄱ#ㅡ) 2
    (#ㅡ#ㄹ#ㅣ) 2
    (#ㄹ#ㅣ#ㄴ) 2
    (ㄱ#ㅣ) 1
    (#ㅣ#ㄹ#ㅣ) 1
    (#ㄹ#ㅣ#ㅁ) 1
4-4) 반복회수 3일 때, 이하의 표 6과 같이,
  고빈도 pair를 새로운 subword unit으로 반영한 다음의 Bi-gram pair Token결과 후보  
내가 (ㄴ #ㅐ) (#ㅐ #ㄱ) (#ㄱ#ㅏ) (ㄴ #ㅐ) 1
그린 (ㄱ#ㅡ#ㅡ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㄴ) (#ㅐ #ㄱ) 1
기린 (ㄱ#ㅣ)(#ㅣ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㄴ) (#ㄱ#ㅏ) 1
그림 (ㄱ#ㅡ#ㅡ#ㄹ#ㅣ)(#ㄹ#ㅣ#ㅁ) (ㄱ#ㅡ#ㅡ#ㄹ#ㅣ) 2
    (#ㄹ#ㅣ#ㄴ) 2
    (ㄱ#ㅣ) 1
    (#ㅣ#ㄹ#ㅣ) 1
    (#ㄹ#ㅣ#ㅁ) 1
[실시예 2]
1) 문서에 "영어 영역 연구"이 입력됨
2) 낱말 분석기로 토큰을 구분하여, 이하의 표 7과 같이, "언어" "영역" "연구으로 토큰 리스트 생성
영어
영역
연구
3) 자소 변환 함수를 이용하여 , 이하의 표 8과 같이, 토큰 리스트를 자소 리스트로 변경
ㅇ#ㅕ#ㅇ#ㅇ#ㅓ
ㅇ#ㅕ#ㅇ#ㅇ#ㅕ#ㅇ
ㅇ#ㅕ#ㄴ#ㄱ#ㅜ
4) 내부 단어 집합을 형성하는 단계
4-1) 반복회수 0일 때, 이하의 표 9와 같이,
영어 ㅇ#ㅕ#ㅇ#ㅇ#ㅓ
영역 ㅇ#ㅕ#ㅇ#ㅇ#ㅕ#ㄱ
연구 ㅇ#ㅕ#ㄴ#ㄱ#ㅜ
4-2) 반복회수 1일 때, 이하의 표 10과 같이,
  Bi-gram pair subword unit(Token 결과 후보) subword unit 출현 빈도
영어 (ㅇ#ㅕ)(#ㅕ#ㅇ)(#ㅇ#ㅇ)(#ㅇ#ㅓ) (ㅇ#ㅕ) 4
영역 (ㅇ#ㅕ)(#ㅕ#ㅇ)(#ㅇ#ㅇ)(#ㅇ#ㅕ)(#ㅕ#ㄱ) (#ㅕ#ㅇ) 2
연구 (ㅇ#ㅕ)(#ㅕ#ㄴ)(#ㄴ#ㄱ)(#ㄱ#ㅜ) (#ㅇ#ㅇ) 2
    (#ㅇ#ㅓ) 2
    (#ㅕ#ㄱ) 1
    (#ㅕ#ㄴ) 1
    (#ㄴ#ㄱ) 1
    (#ㄱ#ㅜ) 1
4-3) 반복회수 2일 때, 이하의 표 11과 같이,
  고빈도 pair를 새로운 subword unit으로 반영한 다음의 Bi-gram pair Token결과 후보  
영어 (ㅇ#ㅕ#ㅇ)(#ㅇ#ㅇ)(#ㅇ#ㅓ) (ㅇ#ㅕ#ㅇ) 2
영역 (ㅇ#ㅕ#ㅇ)(#ㅇ#ㅇ)(#ㅇ#ㅕ#ㄱ) (#ㅇ#ㅇ) 2
연구 (ㅇ#ㅕ#ㄴ)(#ㄴ#ㄱ)(#ㄱ#ㅜ) (#ㅇ#ㅓ) 1
    (#ㅇ#ㅕ#ㄱ) 1
    (ㅇ#ㅕ#ㄴ) 1
    (#ㄴ#ㄱ) 1
    (#ㄱ#ㅜ) 1
4-4) 반복회수 3일 때, 이하의 표 12와 같이,
  고빈도 pair를 새로운 subword unit으로 반영한 다음의 Bi-gram pair Token결과 후보  
영어 (ㅇ#ㅕ#ㅇ#ㅇ)(#ㅇ#ㅓ) (ㅇ#ㅕ#ㅇ#ㅇ) 2
영역 (ㅇ#ㅕ#ㅇ#ㅇ)(#ㅇ#ㅕ#ㄱ) (#ㅇ#ㅓ) 1
연구 (ㅇ#ㅕ#ㄴ)(#ㄴ#ㄱ)(#ㄱ#ㅜ) (#ㅇ#ㅕ#ㄱ) 1
    (ㅇ#ㅕ#ㄴ) 1
    (#ㄴ#ㄱ) 1
    (#ㄱ#ㅜ) 1
4-5) 반복회수 4일 때, 이하의 표 13과 같이,
  고빈도 pair를 새로운 subword unit으로 반영한 다음의 Bi-gram pair Token결과 후보  
영어 (ㅇ#ㅕ#ㅇ#ㅇ#ㅓ) (ㅇ#ㅕ#ㅇ#ㅇ#ㅓ) 1
영역 (ㅇ#ㅕ#ㅇ#ㅇ#ㅕ)(#ㅕ#ㄱ) (ㅇ#ㅕ#ㅇ#ㅇ#ㅕ) 1
연구 (ㅇ#ㅕ#ㄴ)(#ㄴ#ㄱ)(#ㄱ#ㅜ) (#ㅇ#ㅕ#ㄱ) 1
    (ㅇ#ㅕ#ㄴ) 1
    (#ㄴ#ㄱ) 1
    (#ㄱ#ㅜ) 1
도 5는 일 실시예에 따른 자소 리스트의 임베딩 방법을 상세하게 나타낸 순서도이다. 도 6은 도 5에 따른 임베딩 방법을 예시적으로 나타낸 도면이다.
도 5 및 6을 참조하면, 임베딩 방법은 토큰을 벡터화하여 토큰 임베딩 구성하는 단계(S410), 토큰이 몇번째 문장에 위치하는지 판별하는 세그먼트 임베딩 구성하는 단계(S420), 문장 내에서의 토큰의 위치 정보를 가지는 포지션 임베딩 구성하는 단계(S430), 및 말뭉치의 자소 조합 사용치에 따른 가중치를 별도로 적용하는 단계(S440)을 포함한다.
토큰 임베딩을 구성하는 단계(S410)는 자소 단위로 임베딩을 하고, 가장 긴 길이의 내부 단어를 하나의 단위로 구성하여 토큰 임베딩을 수행할 수 있다. 자주 등장하지 않는 단어는 다시 분해하여 내부 단어로 만듬으로써, 너무 많은 단어를 미등록어로 인식하여 효율을 감소시키는 것을 저지할 수 있다.
세그먼트 임베딩을 구성하는 단계(S420)는, 토큰 시킨 단어들을 다시 하나의 문장으로 만들 수 있다. 한국어의 경우 일반적으로 20개의 내부단어를 이용하여 한 문장을 만들고, 60 내부 단어가 일반적으로 많지 않으므로, 128개로 1 세그먼트를 구성함에 있어 한국어 내부 단어를 제한할 수 있다.
포지션 임베딩을 구성하는 단계(S430)는, 토큰의 위치 순서대로 인코딩을 하는 것으로, 기존의 CNN(Convolution Neural Network)나, RNN(Recurrent Neural Network) 대신 Self Attention 을 활용하는 임베딩을 의미한다.
도 7은 일 실시예에 따른 사전 학습 모델 생성 방법을 나타낸 순서도이다.
도 7을 참조하면, 임베딩된 데이터들이 인코딩 된 후에 사전 학습을 수행하기 위한 구체적인 방법이 도시된다. 도 8 및 9는 도 7에 따른 사전 학습 모델 생성 방법을 예시적으로 나타낸 도면이다.
도 7 내지 9를 참고하면, Masked Language Model을 이용하여 사전 학습 모델을 구성하는 단계(S510) 및 Next Sentence Prediction Model을 이용하여 사전 학습 모델을 구성하는 단계(S520)을 포함할 수 있다.
Masked Language Model을 이용하여 사전 학습 모델을 구성하는 단계(S510)는 입력 문장에서 임의로 토큰을 제거하거나, 변경하고, 그 토큰 값을 예측하여 맞추는 방식으로 학습을 진행하는 모델일 수 있다.
구체적으로 MLM은, 학습 데이터 한 문장 토크의 일부(예:15%)를 마스킹할 수 있다. 다음으로는, 마스킹 대상 토큰 가운데 과반수 (80%정도)는 실제 빈칸으로 만들고, 모델은 그 빈칸을 채우도록 한다. 다음으로는, 마스킹 대상 토큰 가운데 과반수에 못미치는 일부(10%정도)는 랜덤으로 다른 토큰으로 대체하고 모델은 해당 위치의 정답 단어가 무엇일지 맞추도록 한다.
마지막으로, 마스킹 대상 토큰 가운데 과반수에 못미치는 일부중 나머지(10%정도)는 토큰을 그대로 두고, 모델은 해당 위치의 정답 단어가 무엇일지 맞추도록 한다.
Next Sentence Prediction Model을 이용하여 사전 학습 모델을 구성하는 단계(S520)는, 두 문장이 주어졌을 때, 두 문장의 순서를 예측하는 방법에 관련한 모델이다. 두 문장간 관련성을 고려해야 하는 파인 튜닝을 위해서 두 문장의 연관을 맞추는 학습이 수행될 수 있다.
도 10은 일 실시예에 따른 사전 학습 모델을 파인 튜닝 방법을 상세하게 나타낸 순서도이다.
도 10을 참조하면, 사전 학습 모델에 감성 판별용 레이어를 추가하는 단계(S610), 추가된 레이어의 출력이 함수를 적용해 감성 라벨 종류에 부합하는 n차원 확률 벡터로 변환하는 단계(S620), 변환된 확률 벡터와 감성 라벨을 비교하여 cross-entropy를 계산하는 단계(S630), Cross-entropy가 최소화되도록 모델 파라미터를 업데이트하여 파인 튜닝 모델을 생성하는 단계(S640)을 포함할 수 있다.
사전 학습 모델에 감성 판별용 레이어를 추가하는 단계(S610)는 사전 학습 모델의 출력에 감성 판별용 레이어로 완전 연결 계층 (fully connected layer)을 이용할 수 있다. 완전 연결 계층이란 모든 계층의 뉴런이 이전 층의 출력 노드와 하나도 빠짐없이 모두 연결되어 있는 층을 의미한다.
추가된 레이어의 출력이 함수를 적용해 감성 라벨 종류에 부합하는 n차원 확률 벡터로 변환하는 단계(S620)는, 추가한 레이어에 softmax 등 함수를 적용하여 Cross-entropy가 최소화되도록 모델 파라미터를 업데이트하는 것일 수 있다.
변환된 확률 벡터와 감성 라벨을 비교하여 cross-entropy를 계산하는 단계(S630)는, 하나의 확률 분포가 가지는 불확실성을 정량적으로 표현하기 위한 정보 엔트로피를 두 개의 확률 분포로 나타내도록 하여 불확실성을 표현한 교차 엔트로피(cross-entropy)를 이용한다.
교차 엔트로피는 학습에 있어서, loss 분이 적도록 학습하는데 유용할 수 있다.
Cross-entropy가 최소화되도록 모델 파라미터를 업데이트하여 파인 튜닝 모델을 생성하는 단계(S640)는, 정답 감성 라벨을 출력 감성 라벨과 비교해서 cross-entropy를 계산하고, 이 학습 손실을 최소화하도록 모델 파라미터 값 을 업데이트 할 수 있다.
이러한 파인 튜닝을 위해, 학습용으로 감성 라벨(긍정/부정/중립, 분노/행복/중립)이 붙어 있는 문서를 준비하고, 해당 문서를 바탕으로 자소 변환 함수 및 낱말 분석기를 적용한 뒤 임베딩을 거쳐 사전 학습 후 파인 튜닝에 이용할 수 있다.
이상에서 전술한 본 발명의 일 실시예에 따른 방법은, 하드웨어인 서버와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다.
상기 전술한 프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.
상기 저장되는 매체는, 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상기 저장되는 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있지만, 이에 제한되지 않는다. 즉, 상기 프로그램은 상기 컴퓨터가 접속할 수 있는 다양한 서버 상의 다양한 기록매체 또는 사용자의 상기 컴퓨터상의 다양한 기록매체에 저장될 수 있다. 또한, 상기 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장될 수 있다.
본 발명의 실시예와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이들의 결합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash Memory), 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터 판독가능 기록매체에 상주할 수도 있다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.
100:자소 변환 모듈 200 : 낱말 분석기

Claims (10)

  1. 자소 단위 기반의 감성 분석 방법에 있어서,
    텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 함수를 마련하는 단계; - 상기 자소 변환 함수는 각 언어별 자소 특성이 고려된 것임 -
    입력된 텍스트 문서에 낱말 분석기(tokenizer)를 적용하여 낱말 단위의 토큰 리스트를 획득하는 단계;
    상기 토큰 리스트의 각 토큰에 개별적으로 상기 자소 변환 함수를 적용하여 자소 리스트를 획득하는 단계;
    상기 자소 리스트를 임베딩하는 단계;
    자소 단위 사전 학습 모델을 구성하는 단계;
    상기 사전 학습 모델의 출력에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 단계; 및
    임베딩 된 자소 리스트를 상기 감성 분석 모델에 입력하여 감성 분류 결과를 획득하는 단계를 포함하며,
    상기 파인 튜닝하는 단계는,
    상기 감성 판별용 레이어에 함수를 적용해 감성 라벨의 종류에 부합하도록 n 차원 확률 벡터로 변환하고,
    변환된 n 차원 확률 벡터와 정답 감성 라벨과 대조하여 cross 엔트로피를 연산하며,
    Cross 엔트로피를 최소화하도록 모델 파라미터를 수정하여 파인 튜닝을 수행하며,
    상기 감성 판별용 레이어는, 모든 계층의 뉴런이 이전 층의 출력 노드와 모두 연결되는 완전 연결 계층(fully connected layer)인 것을 특징으로 하는 자소 단위 기반의 감성 분석 방법.
  2. 제1 항에 있어서,
    텍스트 문서의 언어가 한국어일 경우 초성,중성,종성으로 분해하거나 또는 모음,자음으로 분리하고,
    텍스트 문서의 언어가 영어일 경우, 알파벳 단위로 분해하는 자소 단위 기반의 감성 분석 방법.
  3. 제1 항에 있어서,
    상기 자소 변환 함수는,
    자소의 강조, 추가, 변환 및 제거가 가능하고,
    중복된 공백을 하나로 치환시키는 함수, 종성의 유무를 판별하는 종성 특수자소를 추가하는 함수, 낱말 시작하는 자소를 구분하는 낱말 구분 특수자소를 추가하는 함수 및 공백을 공백 특수자소로 변환하는 함수 중 적어도 하나를 포함하는 자소 단위 기반의 감성 분석 방법.
  4. 제1 항에 있어서,
    상기 낱말 분석기는,
    공백 판별기과 형태소분석기 중 적어도 하나를 이용하여 텍스트 문서를 낱말 단위의 토큰 리스트로 획득하고,
    기결정된 길이를 가지는 최초 토큰을 결정하고, 우측으로 1글자씩 커지도록 낱말 성립여부를 판별하는 알고리즘을 포함하는 자소 단위 기반의 감성 분석 방법.
  5. 제1 항에 있어서,
    상기 자소 리스트를 획득하는 단계는,
    n-gram 알고리즘을 이용하여 내부 단어(subword unit)로 분리하고,
    BPE(Byte Pair Encoding) 알고리즘을 적용하여 상기 내부 단어를 빈도수 별로 분류하고,
    상기 빈도수 별로 분류된 내부 단어를 연결하여 고빈도이면 새로운 내부 단어로 판별하고, 저빈도이면 더 작은 내부 단어로 쪼개는 내부 단어로 재분류하고,
    분류된 내부 단어의 집합이 기설정된 수치에 도달할 때까지 내부 단어의 빈도수 별 분류 및 내부 단어의 재분류 단어를 반복 수행하는 자소 단위 기반의 감성 분석 방법.
  6. 제1 항에 있어서,
    상기 임베딩하는 단계는,
    상기 토큰을 벡터 정보로 포함하는 토큰 임베딩 단계;
    토큰이 포함된 문장이 문서 내에서 몇번째 문장인지 문장 정보를 포함하는 세그먼트 임베딩 단계;
    토큰의 문장 내에서의 위치 정보를 포함하는 포지션 임베딩 단계; 및
    말뭉치(corpus)의 자소 조합을 학습하여 빈도수에 따라 가중치를 차등으로 설정하는 단계를 포함하며,
    상기 토큰 임베딩 단계는, 자소 단위로 임베딩하되, 가장 긴 길이의 내부 단어를 하나의 단위로 구성하고, 미리 설정된 임계치 이하로 등장하는 단어는 다시 분해하여 내부 단어로 만드는 것을 특징으로 하는 자소 단위 기반의 감성 분석 방법.
  7. 제1 항에 있어서,
    상기 자소 단위 사전 학습 모델을 구성하는 단계는,
    Masker Language Model(MLM)을 이용하거나, 또는 Next Sentecnce Prediction Model((NSPM)을 이용하고,
    상기 MLM을 이용하는 경우,
    학습 데이터 문장 토큰 중 적어도 일부를 마스킹하고,
    마스킹된 토큰 중 과반수 이상의 토큰은 빈칸으로 만들고 모델을 이용해 빈칸에 해당하는 토큰을 생성하고,
    마스킹된 토큰 중 과반수 미만의 토큰 중 일부의 빈칸은 랜덤으로 다른 토큰으로 대체하고, 모델을 통해 대체된 토큰의 정답을 예측하며,
    마스킹된 토큰 중 과반수 미만의 토큰 중 나머지 빈칸은 토큰을 변경하지 않고, 모델이 해당 토큰의 정답을 예측하고,
    상기 NSPM을 이용하는 경우,
    두 문장을 입력으로 넣고, 두번째 문장이 첫번째 문장 바로 다음에 오는지 여부를 예측하면서 모델을 업데이트 하는 자소 단위 기반의 감성 분석 방법.
  8. 삭제
  9. 컴퓨터인 하드웨어와 결합되어, 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위해 매체에 저장된, 자소 단위 기반의 감성 분석 프로그램.
  10. 자소 단위 기반의 감성 분석 컴퓨팅 장치는,
    각 언어별 자소 특성이 고려된 자소 변환 함수를 기반으로 텍스트 문서를 언어별 최소단위인 자소(grapheme)단위로 변환하여 자소 리스트를 출력할 수 있는 자소 변환 모듈;
    입력된 텍스트 문서에 낱말 단위의 토큰(token) 리스트를 획득하는 낱말 분석기; 및
    상기 낱말 분석기를 제어하여 입력된 텍스트 문서에 낱말 단위의 토큰(token) 리스트를 획득하고, 상기 자소 변환 모듈을 제어하여 자소 리스트를 획득하고, 상기 자소 리스트를 임베딩하고, 자소 단위 사전 학습 모델을 생성하고, 상기 사전 학습 모델의 출력에 감성 판별용 레이어를 추가하여 감성 분석 모델로 파인 튜닝하는 제어부;를 포함하며,
    상기 제어부는, 상기 파인 튜닝할 시, 상기 감성 판별용 레이어에 함수를 적용해 감성 라벨의 종류에 부합하도록 n 차원 확률 벡터로 변환하고, 변환된 n 차원 확률 벡터와 정답 감성 라벨과 대조하여 cross 엔트로피를 연산하고, Cross 엔트로피를 최소화하도록 모델 파라미터를 수정하여 파인 튜닝을 수행하며,
    상기 감성 판별용 레이어는, 모든 계층의 뉴런이 이전 층의 출력 노드와 모두 연결되는 완전 연결 계층(fully connected layer)인 것을 특징으로 하는 자소 단위 기반의 감성 분석 컴퓨팅 장치.
KR1020200164280A 2020-11-30 2020-11-30 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템 KR102310323B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200164280A KR102310323B1 (ko) 2020-11-30 2020-11-30 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200164280A KR102310323B1 (ko) 2020-11-30 2020-11-30 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템

Publications (1)

Publication Number Publication Date
KR102310323B1 true KR102310323B1 (ko) 2021-10-07

Family

ID=78609661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200164280A KR102310323B1 (ko) 2020-11-30 2020-11-30 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템

Country Status (1)

Country Link
KR (1) KR102310323B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100912348B1 (ko) 2003-01-03 2009-08-14 주식회사 케이티 자연어처리를 위한 완성형 한글코드 음소정보 추출 방법
KR20200063281A (ko) * 2018-11-16 2020-06-05 한국전자통신연구원 신경망 자동 번역 장치 및 그 방법
KR102129575B1 (ko) * 2018-11-13 2020-07-02 주식회사 솔트룩스 단어 교정 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100912348B1 (ko) 2003-01-03 2009-08-14 주식회사 케이티 자연어처리를 위한 완성형 한글코드 음소정보 추출 방법
KR102129575B1 (ko) * 2018-11-13 2020-07-02 주식회사 솔트룩스 단어 교정 시스템
KR20200063281A (ko) * 2018-11-16 2020-06-05 한국전자통신연구원 신경망 자동 번역 장치 및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
자연어처리를 위한 딥러닝 사전학습현황 및 한국어 적용 방안-구글 BERT 사례를 중심으로, 임수종 외1 (2019.10.11.)* *

Similar Documents

Publication Publication Date Title
CN111291195B (zh) 一种数据处理方法、装置、终端及可读存储介质
JP2000353161A (ja) 自然言語生成における文体制御方法及び装置
Megyesi Data-driven syntactic analysis
KR102043353B1 (ko) 딥 러닝을 이용한 한국어 개체명 인식 장치 및 방법
US11170169B2 (en) System and method for language-independent contextual embedding
Alam et al. Sequence to sequence networks for Roman-Urdu to Urdu transliteration
CN110717045A (zh) 一种基于信访信件概况的信件要素自动提取方法
Sen et al. Bangla natural language processing: A comprehensive analysis of classical, machine learning, and deep learning-based methods
CN110705262A (zh) 一种改进的应用于医技检查报告的智能纠错方法
Dreyer A non-parametric model for the discovery of inflectional paradigms from plain text using graphical models over strings
KR20230009564A (ko) 앙상블 스코어를 이용한 학습 데이터 교정 방법 및 그 장치
CN115587590A (zh) 训练语料集构建方法、翻译模型训练方法、翻译方法
CN116502628A (zh) 基于知识图谱的政务领域多阶段融合的文本纠错方法
CN109815497B (zh) 基于句法依存的人物属性抽取方法
Tapsai et al. Thai Natural Language Processing: Word Segmentation, Semantic Analysis, and Application
Uthayamoorthy et al. Ddspell-a data driven spell checker and suggestion generator for the tamil language
Mohamed et al. Exploring the potential of schemes in building NLP tools for Arabic language.
JP2002149643A (ja) 日本語の表意文字の読み方を予測する方法
Nehar et al. Rational kernels for Arabic root extraction and text classification
CN115033753A (zh) 训练语料集构建方法、文本处理方法及装置
KR102310323B1 (ko) 자소 단위의 낱말 분석 기반의 감성 분석 방법, 프로그램 및 시스템
Topsakal et al. Shallow parsing in Turkish
Sen et al. Bangla natural language processing: A comprehensive review of classical machine learning and deep learning based methods
Iosif et al. Speech understanding for spoken dialogue systems: From corpus harvesting to grammar rule induction
Manghat et al. Hybrid sub-word segmentation for handling long tail in morphologically rich low resource languages

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant