텍스트에서 자동으로 개념 및 키워드 추출(2부: 의미론적 접근)

게시 됨: 2022-09-20

이 문서는 텍스트에서 키워드 자동 추출에 대한 첫 번째 부분의 후속 조치입니다. 이전 기사에서는 텍스트에서 키워드를 추출하는 소위 "전통적인" 접근 방식(통계 기반 또는 그래프 기반)을 다루었습니다.

여기에서는 보다 의미론 적인 접근 방식을 사용하여 방법을 탐색합니다. 먼저 단어 임베딩과 변환기 , 즉 컨텍스트 임베딩을 소개합니다. 그런 다음 BERT 모델을 기반으로 하는 John Coltrane의 앨범 Impressions(출처 francemusique.fr)에 대한 동일한 텍스트로 예제를 공유합니다. 마지막으로 우리는 P@k , f1-score 뿐만 아니라 최신 기술의 벤치마크와 같은 몇 가지 평가 방법을 제시할 것입니다.

전통적인 접근 방식과 달리 의미론적 접근 방식을 사용하면 유사한 어휘 분야에 속하는 단어가 서로 다르더라도 연결할 수 있습니다. 이 접근 방식의 이면에 있는 아이디어는 가장 의미가 있는 단어, 즉 텍스트와 관련하여 가장 관련성이 높은 정보를 제공하는 단어를 추출하기 위해 텍스트에서 단어 발생 빈도 계산을 생략하는 것입니다.

워드 임베딩

이 방법은 word2vec라는 모델이 도입된 2013년으로 거슬러 올라갑니다. 어휘의 단어 집합을 벡터로 표현하도록 제안하는 소위 "딥 러닝" 아키텍처와 달리 "단순한" 인공 신경망 아키텍처입니다. 즉, 각 단어는 일련의 숫자로 표시됩니다. 이 벡터 세트는 이러한 벡터를 서로 비교할 수 있는 능력으로 어휘의 의미 필드를 나타냅니다. 이러한 벡터 사이의 거리를 측정하여 단어가 의미적으로 유사한 지 알 수 있습니다. 숫자의 배열로 단어를 표현하는 것을 임베딩 이라고 합니다.

word2vec-embedding-example-en

임베딩-예제

단어 집합의 벡터 표현이 있으면 이러한 단어를 서로 비교할 수 있습니다. 두 벡터 사이의 각도가 매우 작은 경우 두 단어는 가까운 의미를 갖습니다. 이것은 의미론적 거리 (-1과 1 사이의 값)입니다. 값이 1에 가까울수록 단어가 "유사한" 의미. 반대로 -1에 가까운 값은 "좋은" 및 "나쁜"과 같은 "반대" 의미를 나타냅니다.

이 모델의 목적은 무시할 수 없는 양의 텍스트 문서에서 이러한 유명한 임베딩을 "제조"하는 것입니다. 수십만 개의 텍스트가 있다고 가정해 보겠습니다. 모델은 유사한 단어를 기반으로 단어를 예측하는 방법을 학습합니다.

word2vec-window-en

단어 창

모델은 여러 단어 그룹(예: 크기 5)을 입력으로 받아 <mask> 에 대한 최상의 대안을 찾으려고 합니다. 말뭉치에는 유사한 문구 또는 단어 그룹이 있습니다. 예를 들어 "재즈", "록", "클래식" 또는 "레게"와 같은 단어를 찾을 수 있습니다. 따라서 이 모든 단어는 매우 유사한 벡터를 갖습니다. 따라서 이 모델은 유사한 어휘 분야에 있는 개념과 단어를 결합할 수 있습니다.

[사례 연구] 인덱싱 문제 찾기 및 수정

트래픽 제로에서 기하급수적인 성장까지: GroupM Turkey가 Oncrawl을 사용하여 Unilever의 인덱싱 문제를 해결한 방법을 알아보십시오.
사례 연구 읽기

반면에 철자는 같지만 문맥에서 의미가 같지 않은 단어에 대해 모호성이 있을 수 있습니다. 이들은 동형 이의어입니다.

예를 들어:

  1. 그는 센 강둑 옆에 앉았다.
  2. 그녀는 체이스 은행에 돈을 입금했습니다.

이것은 이러한 유형의 모델의 한계입니다. 단어는 컨텍스트에 관계없이 동일한 벡터 표현을 갖습니다.

변압기

보다 최근의 접근 방식은 주로 2017년에 Google의 Attention Is All You Need와 함께 등장했습니다. word2vec 메소드가 동일한 의미를 갖지 않는 두 개의 동일한 단어를 표현하는 데 어려움을 겪었다면, 변환기 유형 모델은 컨텍스트를 기반으로 단어의 의미를 구별할 수 있습니다. RNN이나 LSTM과 같은 단어 시퀀스를 고려할 수 있는 NLP 모델도 있지만 이 기사에서는 다루지 않을 것입니다.

트랜스포머 는 신경망 아키텍처의 새로운 개념인 주의 메커니즘 을 대중화할 것입니다. 이를 통해 문장과 같은 일련의 단어 내에서 각 단어가 다른 단어와 어떻게 관련되어 있는지 찾을 수 있습니다.

2018년 Google에서 만든 BERT 모델은 강력하고 인기 있는 모델입니다. 이러한 언어 모델의 장점은 사전 훈련된 모델을 기반으로 한다는 것입니다. 즉, 모델은 이미 영어, 프랑스어 등으로 된 상당량의 텍스트에 대해 훈련되었습니다. 그런 다음 기반으로 사용할 수 있습니다. 더 자세한 분석. 그런 다음 텍스트를 비교하고, 질문에서 답변을 생성하고, 감정 분석을 수행하고, 보다 구체적인 텍스트 본문을 미세 조정 하는 등의 작업에 그대로 사용할 수 있습니다.

bert-attention-visualisation

주의 시각화

이미지는 exBERT 시각화 도구로 생성되었습니다. 선택한 단어 "money" 는 " deposit " 및 " bank "와 강하게 연결되어 있음을 알 수 있습니다 . 그러면 컨텍스트 덕분 에 모델이 " bank " 라는 단어의 모호성을 제거하기가 더 쉽습니다 .

KeyBERT의 경우 문장을 의미적으로 쉽게 비교할 수 있게 해주는 Sentence-BERT라는 BERT에서 파생된 모델입니다.

사용 가능한 모든 오픈 소스 및 사전 훈련된 모델에 대해 자세히 알아보려면 NLP(최근에는 오디오 및 이미지)와 관련된 데이터 세트 및 모델 저장 및 공유를 전문으로 하는 Huggingface 허브를 방문하십시오.

KeyBERT를 사용한 키워드 추출

그렇다면 어떻게 변환기를 사용하여 텍스트에서 관련 키워드를 추출할 수 있습니까? KeyBERT: BERT를 사용한 최소 키워드 추출, BERT 모델을 사용하는 오픈 소스 Python 라이브러리를 포함한 여러 프로젝트가 있습니다.

KeyBERT는 기본적으로 BERT 기반 문장 변환기를 사용하여 단일 단어가 아닌 문장을 벡터로 나타냅니다. 이것은 문장이나 단어 그룹을 비교하는 매우 효율적인 방법입니다. KeyBERT 알고리즘의 원리는 매우 간단합니다. 다음 예제 텍스트를 살펴보겠습니다.

  1. 코드는 텍스트에서 모든 고유 단어를 추출합니다. 이 단계에서 불용어는 종종 제거됩니다.
  2. 전체 텍스트와 각 단어의 임베딩이 계산됩니다.
  3. 그런 다음 단어에서 오는 벡터와 전체 텍스트를 나타내는 벡터 사이의 의미적 거리를 계산할 수 있습니다.

모든 거리가 계산되면 텍스트의 전체 의미와 밀접하게 관련된 단어를 추출할 수 있습니다. 이러한 단어는 알고리즘에 의해 선택된 키워드가 됩니다.

또한 KeyBERT 는 키프레이즈의 길이를 선택할 수 있는 기능을 제공합니다. 실제로 단일 단어, 쌍 또는 세 단어의 단어를 사용할 수 있습니다. 또한 이 코드는 결과의 다양성을 높이기 위해 "최대 한계 관련성"(MMR) 방법을 구현하는 방법을 제공합니다. 이렇게 하면 문서 내용과 관련이 있을 수 있지만 결과에 너무 자주 나타나는 용어(예: "재즈 콘서트", "재즈 음악", "재즈 스타일")의 반복을 피할 수 있습니다. , 등.

결론적으로 spaCy 또는 flair의 모델과 같은 KeyBERT에 다른 NLP 모델을 사용하는 것도 가능합니다.

이전 기사와 마찬가지로 다음은 John Coltrane의 앨범 Impressions에 대한 동일한 기사에서 KeyBERT가 추출한 키워드의 예입니다.

"콜트레인 임프레션", "음악 4중주", "재즈 보물", "존 콘서트", "펄 시퀀스", "그라츠 레퍼토리", "테너 색소폰"

평가 방법

​​이 기사와 이전 기사에서 RAKE, Yake, TextRank 및 KeyBERT와 같은 문서에서 키워드를 추출하는 데 사용되는 몇 가지 방법을 제시했습니다. 그러나 상황에 따라 올바른 것을 선택할 수 있는 것이 중요합니다.

따라서 한 방법의 결과를 다른 방법과 비교하기 위해 평가 방법을 살펴보는 것이 중요합니다. 사람이 키워드 를 정의하고 검증한 데이터 (document, keywords) 에서 모델의 결과를 이 " 현실 "과 비교할 수 있습니다. 우리는 분류 문제에서 자주 사용되는 정밀도, 재현율 및 f1-점수와 같은 메트릭을 가지고 있습니다. 따라서 모델에 의해 추출된 주어진 키워드가 실제로 관련 키워드 목록에 있는지 여부를 알면 혼동 행렬을 만들 수 있습니다.

모델이 일련의 키워드를 추출할 수 있기 때문에 우리는 종종 처음 k개의 키워드 를 정답과 비교합니다. 비교하고자 하는 키워드 의 개수에 따라 결과가 달라질 수 있으므로 k 값에 따라 여러 번 모델을 평가한다. 이러한 메트릭을 Precision@k 라고 하며 "상단 k에서 정밀도 를 계산합니다"를 의미합니다.

[전자책] 내부 연결 방식이 Inrank에 미치는 영향

Inrank를 사용하여 내부 연결 체계가 페이지의 상대적 중요도에 어떤 영향을 미치는지 이해하려면 Chris Green의 실험을 따르십시오.
내부 연결 체계가 Inrank에 미치는 영향

정도

이것은 모든 예측 키워드상위 k 에 있는 올바른 키워드 의 수입니다.

Precision calculation

상기하다

이것은 ground truth의 전체 키워드top-k 에 있는 올바른 키워드 의 수입니다.

Recall calculation

f1 점수

이는 이전의 두 가지 측정항목의 조합입니다. 즉, 정밀도와 재현율 간의 조화로운 평균입니다.

F1 score calculation

지도 @ k

평균 평균 정밀도

MAP 을 계산하는 첫 번째 단계는 평균 정밀도를 계산하는 것입니다. 모델에서 찾은 모든 키워드를 가져와서 모델에서 찾은 각 관련 키워드에 대해 P@k 를 계산합니다. 예를 들어 제안된 5개 중 3개의 관련 키워드로 AP@5 를 계산하려면 다음을 수행합니다.

 키워드: 재즈 콘서트 음악 색소폰 라디오
   관련: 1 0 1 1 0
   박: 1/1 2/3 3/4

   AP: 1/3 (1 + 2/3 + 3/4) ~= 0.80

여기서 관련 키워드의 위치가 중요합니다. 사실 5개 키워드 중 처음 3개 키워드가 관련성이 없으면 AP 의 점수는 동일하지 않습니다(각각 관련성).

그런 다음 각 (document, keywords) 에 대해 모든 AP 의 평균을 계산하여 최종적으로 MAP을 얻습니다.

이러한 다양한 측정항목은 순위 모델이나 추천 시스템을 평가하는 데에도 널리 사용됩니다.

이러한 메트릭 중 일부에 대한 한 가지 작은 비판은 데이터 세트 및 문서마다 다를 수 있는 관련 정답 키워드의 수에 관한 것입니다.

  • 예를 들어, recall@k : 점수는 ground truth의 관련 키워드의 크기에 크게 좌우될 수 있습니다. 최대 20개의 관련 키워드가 있는 경우 recall@10 에 대해 이 20개 키워드 세트의 처음 10개 키워드를 비교합니다. 최상의 경우 모델에서 제안한 모든 키워드가 관련성이 있는 경우 회상 점수는 0.5를 초과하지 않습니다.
  • 반면에 모델에서 제안한 것보다 관련 정답 키워드의 수가 매우 적으면 좋은 precision@k 점수를 얻을 수 없습니다. 5개의 관련 정답 키워드의 경우, precision@10 의 점수는 기껏해야 0.5이지만 그 이상은 아닙니다.

결과를 평가하는 데 사용된 메트릭이 무엇이든 간에, 텍스트의 저자, ​​독자, 편집자 등 사람들이 키워드 를 이전에 정의한 데이터 세트(텍스트, 키워드)가 있어야 합니다. 주로 다음과 같은 여러 데이터 세트가 있습니다. 영어 및 다양한 주제: 과학 기사, 초록, 뉴스, IT 등. 예를 들어 여기 Github KeywordExtractor-Datasets 저장소가 있으며 여기에는 약 20개의 데이터 세트가 나열되어 있습니다.

벤치마크

다양한 평가 방법에 대한 프레젠테이션 외에도 벤치마크 를 제안하는 일부 연구 논문의 "요약" 도 제공하고 싶습니다.

첫 번째는 Yake!를 구현한 연구원들의 것입니다. 방법, "YAKE! 여러 로컬 기능을 사용하여 단일 문서에서 키워드 추출". 그들은 약 20개의 서로 다른 데이터 세트(PubMed, WikiNews, SemEval2010, KDD)에 대한 방법을 위에서 설명한 대부분의 메트릭을 사용하여 가장 잘 알려진 것에 대해 분석했습니다: P@k , resume recall@k 등. Yake! Rake, Text Rank 등을 포함한 약 10개의 다른 방법과 비교할 것입니다. 사용 가능한 모든 데이터 세트와 계산 정밀도재현율 을 통합하여 Yake! 방법이 더 낫거나 최신 방법에 매우 가깝습니다. 예를 들어 f1@10 의 경우:

데이터세트 야케! 최고 또는 2위
위키뉴스 0.450 0.337
KDD 0.156 0.115
검사 0.316 0.378

야케! 50-100% 더 나은 경우가 많으며 이는 선도적인 방법에 가깝습니다.

보다 최근의 또 다른 논문 "TNT-KID: 키워드 식별을 위한 변환기 기반 신경 태거"에서 우리는 기존 방법과 변환기 기반 방법도 비교합니다. Transformers 를 사용한 추출 방법이 더 잘 수행됩니다. 그러나 이들은 결과를 생성하기 위해 데이터 본문에 대해 훈련할 필요가 없는 Rake, KeyBERT 및 Yake와 달리 소위 "감독된" 방법이므로 주의하십시오.

마지막으로 두 가지 다른 벤치마크를 살펴보겠습니다.

  • 문장 임베딩을 사용한 단순 비지도 키프레이즈 추출은 단어 임베딩 을 사용하며 Inspec 및 DUC와 같은 데이터 세트에서 TextRank와 비교하여 잘 수행됩니다.
  • 7가지 알고리즘(Python)을 비교하는 블로그 게시물: Keyword Extraction — A Benchmark of 7 Algorithms in Python. 저자는 KeyBERT, RAKE, Yake 방법의 계산 시간과 각 방법이 추출할 수 있는 관련 단어 수 측면에서 성능을 비교합니다.

결론

이 두 기사에서 보았듯이 텍스트에서 관련 키워드를 추출하는 매우 다양한 방법이 있습니다. 다른 벤치마크를 살펴보면 메트릭 측면에서 다른 모든 벤치마크를 실제로 능가하는 벤치마크가 없다는 것을 알 수 있습니다. 텍스트와 컨텍스트에 따라 다릅니다. 또한 7가지 추출 알고리즘에 대한 블로그 기사의 저자가 지적했듯이 긴 텍스트에 직면했을 때 알고리즘의 처리 시간에 의존할 수도 있습니다.

이 시간은 알고리즘을 실행하고 수십만 개의 문서를 처리하는 데 있어 중요한 요소가 될 것입니다. KeyBERT의 경우 처리 시간을 획기적으로 늘리기 위해 GPU가 있는 인프라를 고려해야 합니다. 실제로 이 방법은 많은 컴퓨팅이 필요한 딥 러닝 아키텍처가 있는 트랜스포머에 의존합니다.

선택을 해야 한다면 KeyBERT와 Yake 중 하나일 것입니다. 전자는 변환기의미론적 측면을 위한 것이고 후자는 효율성과 실행 속도를 위한 것입니다.

참고 문헌

  • 관심만 있으면 됩니다, 2017
  • BERT: 언어 이해를 위한 Deep Bidirectional Transformers 사전 훈련, 2019
  • 자체 라벨링을 통한 자체 감독 컨텍스트 키워드 및 키워드 검색. Sharma P. & Li Y. (2019)
  • 다양한 키워드 추출기 탐색 - 평가 지표 및 전략