ER(Entity Resolution)은 엔티티를 명확화하는 프로세스입니다. 조회 KB(Knowledge Base)에서 가장 적합한 실제 이름에 텍스트 멘션을 매핑하여 엔티티를 명확화합니다. 예를 들어 ‘madrid fc‘를 ‘Real Madrid Club de Fútbol‘로 처리하며, 여기에서 ‘madred fc’는 ‘Real Madrid Club de Fútbol’을 다른 말로 표현한 것입니다. ER은 엔티티 매칭, 엔티티 연결, 레코드 연결 또는 레코드 중복 제거와 같은 다른 이름으로 부르기도 합니다. ER은 MindMeld NLP Pipeline의 일부로 제공되며 사용자 입력에서 지정된 엔티티를 명확화하여 사전 입력된 KB와 비교하는 데 사용됩니다. MindMeld 앱을 구축함과 동시에 엔티티 리졸버를 위해 KB를 만들고 사용하는 방법은 공식 문서를 참조하세요. 최근까지 MindMeld는 ER을 위한 두 가지 옵션을 제공했습니다. 첫 번째는 Elasticsearch 전체 텍스트 검색 및 분석 엔진을 기반으로 한 옵션이고, 두 번째는 대체 옵션으로 단순한 완전 일치 알고리즘을 기반으로 한 옵션입니다. MindMeld 적용 분야가 보다 다양해짐에 따라 이러한 옵션을 실현할 수 없을 수도 있습니다. 지원을 확대하기 위해 MindMeld에서는 ER용 2가지의 추가 옵션을 제공합니다. 첫 번째는 TF-IDF에, 두 번째 옵션은 사전 학습된 신경망 모델 표현(BERT, GloVe,fastText 등)에 기반한 옵션입니다. 특히 이러한 새로운 옵션에는 Elasticsearch 종속성(및 서비스)이 없습니다. 이러한 새로운 옵션에 관한 자세한 내용을 알아보기 전에 MindMeld에서 엔티티 기술 자료가 어떻게 구성되는지 간략히 살펴보겠습니다. 다음은 식료품 품목 이름을 명확화하기 위해 생성된 기술 자료가 있는 식료품 주문 블루프린트의 예시입니다(
ER(Entity Resolution)에 대한 기술 자료 스냅샷
그림과 같이 ‘cname’ 필드(정식 이름)는 ‘whitelist’ 필드와 함께 각 식료품 품목의 일반적인 용도를 보여주며, ‘id’ 필드는 기술 자료에서 공식적으로 인식된 고유한 기록을 나타냅니다. 이러한 3개 필드는 주로 KB에서 엔티티 개체를 구성합니다. ‘cname’ 필드의 텍스트는 일반적으로 대화 응답에 사용되고, ‘whitelist’ 필드의 텍스트는 정식 이름과 함께 명확화 시 별칭으로 사용됩니다. ‘whitelist’ 필드에 포괄적인 정보가 자동으로 채워져야(다른 용도, 맞춤법 오류, 약식 등) 엔티티 리졸버의 결과가 최적화됩니다. 이러한 방식으로 큐레이션하는 과정이 번거로운 적용 분야도 있지만, 고도로 전문화된 도메인에서 엔티티를 처리할 때는 불가피합니다.
새로 추가된 리졸버에 관해 자세히 알아보기
정확한 일치를 제외한 리졸버에서의 첫 단계는 명확성이 필요한 입력 텍스트와 명확화를 진행하는 동안 별칭으로 사용되는 KB의 모든 항목(cname 및 whitelist)에 관해 벡터 표현을 확보하는 것입니다. 이렇게 하면 벡터 유사성 일치 형식(코사인 유사성)을 통해 별칭에 점수와 순위가 부여됩니다. 새로 추가된 ER 옵션에서, TF-IDF 기반 리졸버는 다양한 n-gram 기능(표면 수준의 텍스트 기능)을 구성한 다음 스파스 벡터에 대한 코사인 유사성을 계산합니다. 한편, 사전 학습된 임베더 리졸버는 텍스트의 밀집 벡터 표현에 대한 코사인 유사성을 사용하여 비교합니다. ER의 사전 학습된 임베더는 다른 접근 방식과 비교해 여러 장점이 있습니다. 예를 들어 허용 목록에 포괄적인 정보를 자동으로 채우지 않아도 구문을 이해하고(예: ‘기대치 미만의 성능’이 ‘낮은 성능’과 동일) 다중 언어 엔티티 일치로 쉽게 변환할 수 있습니다(예: 스페인어로 ‘tercio’와 영어로 ‘third’ 동일). 하지만 입력 텍스트 길이의 차이와 같은 사전 학습과 유추가 불일치하다는 점이 사전 학습된 임베더의 단점입니다. 또한 기본 조밀한 벡터 계산으로 인해 임베더 모델의 추론 시간이 다른 리졸버 옵션보다 오래 걸릴 수 있습니다. 하지만 적합한 미세 조정을 거치면 임베더 모델은 주로 표면 수준의 텍스트 기능에 기반한 다른 리졸버 옵션보다 효과적일 수 있습니다. 아래 분석에서는 사전 학습된 임베더 기반 리졸버를 Elasticsearch 및 TF-IDF 엔티티 리졸버와 비교합니다. 이러한 비교를 위해 선별된 데이터 세트에는 표면 수준의 텍스트 일치뿐 아니라 구문 일치도 포함됩니다.
여러 리졸버의 성능
자체적으로 구성된 다양한 데이터 세트로 실험한 결과, 짧은 텍스트 엔티티 일치에 대한 여러 엔티티 리졸버의 평균 성능은 다음과 같습니다. Top-1 검색 점수는
여러 엔티티 리졸버의 성능
사전 학습된 BERT 변형은 Huggingface 문장-변형기의 일부로 제공되며 플롯은 성능이 가장 뛰어난 5개의 변형의 점수만을 보여줍니다. fastText와 같이 사전 학습된 단어 임베딩 모델의 성능은 BERT 임베더 모델 또는 TF-IDF 기반 리졸버에 비해 떨어지는 것이 일반적입니다. 이러한 낮은 성능으로 인해 도메인이 전환되고 미세 조정이 수행되지 않을 수 있습니다. 성능이 가장 뛰어난 BERT 변형(‘distilbert-base-nli-stsb-mean-tokens’)의 여러 구성을 사용한 추가적인 분석 결과는
성능이 가장 뛰어난 BERT 변형을 사용하는 여러 구성의 성능
결과는 BERTScore와 같은 대체적인 유사성이 경쟁력이 없다는 사실을 보여줍니다. 추가로 BERT 모델의 여러 레이어를 연결하면서 코사인 유사성을 사용하면 Elasticsearch의 성능에 일치하는 성능을 확보할 수 있습니다. BERT의 여러 레이어가 부차적인 정보를 캡처할 수 있기 때문에 이는 직관적입니다. 더 적은 메모리 공간과 시간 복잡성으로 BERT 변형을 양자화한 후에도, 성능 저하율은 2~3%에 불과합니다. 아울러 입력에 맞춤법 오류가 있는 임의로 노이즈가 적용된 데이터에 대해 평가하는 경우에도, TF-IDF 기반 리졸버의 성능은 다른 리졸버보다 우수합니다. 이 리졸버로 인해 다양한 n-gram이 캡처되기 때문일 수 있습니다. (본 실험에서는 허용 목록 텍스트가 테스트 인스턴스로 재사용되고 맞춤법 오류가 적용됩니다. 따라서 모든 테스트 엔티티가 허용 목록에도 존재하므로 노이즈 0%, 정확도 100%로 나타납니다!)
맞춤법 오류가 적용된 텍스트 일치에 대한 성능
마지막으로, 다음 플롯에서는 여러 리졸버 옵션에 걸친 유추 시간 복잡성의 차이를 보여줍니다. (왼쪽에서 오른쪽으로: 가장 정확한 BERT, TF-IDF, Elasticsearch) 다양한 크기의 기술 자료에 따른 엔티티당 유추 시간 X축은 기술 자료의 크기를 나타내고, Y축은 엔티티당 시간을 밀리초 단위로 나타냅니다. 노란색은 입력 텍스트를 인코딩하는 유추 시간이고, 초록색은 유사성 계산에 대한 유추 시간입니다. TF-IDF와 Elasticsearch의 시간 복잡성은 상당히 비슷하지만, 가장 우수한 BERT 변형은 양자화를 거친다 하더라도 20배 느립니다. 최상위 4개 레이어를 연결하지 않는 경우 10배 더 느린 속도로 완화되지만, 정확도를 잃게 됩니다.
엔티티 리졸버 선택 및 구성
MindMeld 엔티티 리졸버 구성은 사용되는 리졸버에 따라 다양한 구성 가능한 매개변수를 사용합니다. 다음 스니펫을 앱의 ‘config.py’에 사용하면 Huggingface에서 원하는 사전 학습된 BERT 모델이 사용됩니다. ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ‘sbert_cosine_similarity’, ‘pretrained_name_or_abspath’: ‘distilbert-base-nli-stsb-mean-tokens’, … }} ’embedder_type’ 매개변수를 수정하여 다른 임베더 모델을 사용할 수 있습니다. ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ’embedder_cosine_similarity’, ’embedder_type’: ‘glove’, … }} 임베더 모델을 임베더 모델별 구성과 함께 사용할 때 ‘batch-size’와 같은 런타임 구성을 지정할 수도 있습니다. TF-IDF 기반 리졸버를 로드하려면 다음을 따르세요. ENTITY_RESOLVER_CONFIG = { ‘model_type’: ‘resolver’, ‘model_settings’: { ‘resolver_type’: ‘tfidf_cosine_similarity’, … }}KB 내 각 엔티티에 대해, 모든 별칭 임베딩의 평균/최대 풀인 특수 임베딩이 구성되면 계산되어 확인에 사용됩니다. 이러한 특수한 임베딩을 사용하면 약간 더 높은 컴퓨팅 비용으로 리졸버의 정확성이 향상됩니다. 자세한 내용과 모든 구성 가능한 옵션은 공식 문서의 ‘구성’ 섹션을 참조하세요.
결론 및 향후 방안
결론적으로 Elasticsearch 기반 리졸버를 사용할 수 없는 특수한 경우를 제외하고는 Elasticsearch 기반 리졸버를 사용하는 것이 좋습니다. 대체 시스템으로 더 많은 구문 일치가 필요한 경우에는 임베더 모델 기반 리졸버를, 이러한 요구 사항이 없는 경우에는 TF-IDF 기반 리졸버를 사용합니다. MindMeld ER 모듈에서는 애플리케이션에 어떤 리졸버가 가장 효과적으로 작동하는지 나타내는 API를 아직 제공하지는 않습니다. 이러한 지원과 임베더 모델 기반 리졸버를 미세 조정할 수 있는 기능이 추가될 예정입니다. Webex에 등록하세요. 도움이 필요한 경우 홈페이지를 확인하거나 직접 문의해주세요. Webex에서 제공하는 서비스에 대해 자세히 살펴보고 무료 계정을 만들려면 여기를 클릭하세요.
About The Author
Sai Muralidhar JayanthiMachine Learning EngineerCisco
Sai Muralidhar Jayanthi is a Machine Learning Engineer on the MindMeld team at Cisco, where he builds production-level conversational interfaces.