님이 촬영 한 사진 미케치 에스파라고자
매일 우리는 대부분의 시간을 레이블이 지정되지 않은 텍스트로 처리하고 있으며 지도 학습 알고리즘은 데이터에서 정보를 추출하는 데 전혀 사용할 수 없습니다. 자연어의 하위 필드는 많은 양의 텍스트에서 기본 구조를 드러낼 수 있습니다. 이 분야를 주제 모델링이라고 하며 텍스트에서 주제를 추출하는 데 특화되어 있습니다.
이러한 맥락에서 Latent Dirichlet Allocation 및 Non-Negative Matrix Factorization과 같은 기존 접근 방식은 단어 백을 기반으로 하기 때문에 단어 간의 관계를 잘 포착하지 못하는 것으로 나타났습니다.
이러한 이유로 주제를 생성하기 위해 사전 훈련된 언어 모델을 활용하여 이러한 단점을 해결하는 두 가지 유망한 접근 방식인 Top2Vec 및 BERTopic에 초점을 맞출 것입니다. 시작하자!
Top2Vec은 사전 훈련된 단어 벡터를 사용하고 의미 있는 임베디드 주제, 문서 및 단어 벡터를 생성하여 텍스트에서 주제를 자동으로 감지할 수 있는 모델입니다.
이 접근 방식에서 주제를 추출하는 절차는 여러 단계로 나눌 수 있습니다.
- 시맨틱 임베딩 생성: 함께 포함된 문서와 단어 벡터가 생성됩니다. 아이디어는 임베딩 공간에서 유사한 문서는 더 가깝고 유사하지 않은 문서는 그들 사이에 떨어져 있어야 한다는 것입니다.
- 문서 임베딩의 차원 축소: 차원 축소 접근법의 적용은 고차원 공간을 줄이면서 문서 임베딩의 가변성을 대부분 보존하는 데 중요합니다. 또한 각 점이 문서 벡터를 나타내는 밀집된 영역을 식별할 수 있습니다. UMAP는 고차원 데이터의 로컬 및 전역 구조를 보존할 수 있기 때문에 이 단계에서 선택한 일반적인 차원 감소 접근 방식입니다.
- 문서 클러스터 식별: 밀도 기반 클러스터링 방식인 HDBScan을 적용하여 유사한 문서가 밀집된 영역을 찾습니다. 각 문서는 밀도가 높은 클러스터에 있지 않은 경우 노이즈로 지정되고 밀도가 높은 영역에 속한 경우 레이블로 지정됩니다.
- 원래 임베딩 공간에서 중심 계산: 감소된 임베딩 공간이 아닌 고차원 공간을 고려하여 중심을 계산합니다. 고전적인 전략은 HDBSCAN을 사용하여 이전 단계에서 얻은 밀집된 영역에 속하는 모든 문서 벡터의 산술 평균을 계산하는 것입니다. 이러한 방식으로 각 클러스터에 대해 주제 벡터가 생성됩니다.
- 각 주제 벡터에 대한 단어 찾기: 문서 벡터에 가장 가까운 단어 벡터가 의미상 가장 대표적입니다.
Top2Vec의 예
이 튜토리얼에서는 다음에서 사용할 수 있는 데이터 세트에서 McDonald's에 대한 부정적인 리뷰를 분석할 것입니다. 데이터 세계. 이러한 리뷰에서 주제를 식별하는 것은 다국적 기업이 데이터에서 제공하는 미국 위치에서 이 패스트 푸드 체인의 제품 및 조직을 개선하는 데 유용할 수 있습니다.
import pandas as pd
from top2vec import Top2Vec file_path = "McDonalds-Yelp-Sentiment-DFE.csv"
df = pd.read_csv( file_path, usecols=["_unit_id", "city", "review"], encoding="unicode_escape",
)
df.head()
docs_bad = df["review"].values.tolist()
한 줄의 코드에서 이전에 설명한 top2vec의 모든 단계를 수행할 것입니다.
topic_model = Top2Vec( docs_bad, embedding_model="universal-sentence-encoder", speed="deep-learn", tokenizer=tok, ngram_vocab=True, ngram_vocab_args={"connector_words": "phrases.ENGLISH_CONNECTOR_WORDS"},
)
Top2Vec의 주요 주장은 다음과 같습니다.
- docs_bad: 문자열 목록입니다.
- universal-sentence-encoder: 선택된 사전 학습 임베딩 모델입니다.
- deep-learn: 생성된 문서 벡터의 품질을 결정하는 매개변수입니다.
topic_model.get_num_topics() #3
topic_words, word_scores, topic_nums = topic_model.get_topics(3) for topic in topic_nums: topic_model.generate_topic_wordcloud(topic)
제일
단어 구름에서 우리는 주제 0이 "느린 서비스", "끔찍한 서비스", "잘못된 주문"과 같은 맥도날드의 서비스에 대한 일반적인 불만에 관한 것이고 주제 1과 2는 각각 아침 식사 음식( 맥머핀, 비스킷, 계란) 및 커피(아이스 커피 및 컵 커피).
이제 우리는 wrong과 slow라는 두 가지 키워드를 사용하여 문서를 검색하려고 합니다.
( documents, document_scores, document_ids,
) = topic_model.search_documents_by_keywords( keywords=["wrong", "slow"], num_docs=5
)
for doc, score, doc_id in zip(documents, document_scores, document_ids): print(f"Document: {doc_id}, Score: {score}") print("-----------") print(doc) print("-----------") print()
출력:
Document: 707, Score: 0.5517634093633295
-----------
horrible.... that is all. do not go there.
----------- Document: 930, Score: 0.4242547340973836
-----------
no drive through :-/
----------- Document: 185, Score: 0.39162203345993046
-----------
the drive through line is terrible. they are painfully slow.
----------- Document: 181, Score: 0.3775083338082392
-----------
awful service and extremely slow. go elsewhere.
----------- Document: 846, Score: 0.35400602635951994
-----------
they have bad service and very rude
-----------
"BERTopic은 변환기와 c-TF-IDF를 활용하여 주제 설명에 중요한 단어를 유지하면서 쉽게 해석할 수 있는 주제를 허용하는 밀집된 클러스터를 생성하는 주제 모델링 기술입니다."
이름에서 알 수 있듯이 BERTopic은 강력한 변환기 모델을 활용하여 텍스트에 있는 주제를 식별합니다. 이 주제 모델링 알고리즘의 또 다른 특징은 TF-IDF의 클래스 기반 변형이라고 하는 TF-IDF의 변형을 사용한다는 것입니다.
Top2Vec과 마찬가지로 토픽 개수를 알 필요는 없지만 자동으로 토픽을 추출한다.
또한 Top2Vec과 마찬가지로 여러 단계를 포함하는 알고리즘입니다. 처음 세 단계는 임베딩 문서 생성, UMAP을 사용한 차원 축소 및 HDBScan을 사용한 클러스터링과 동일합니다.
연속 단계는 Top2Vec에서 분기되기 시작합니다. HDBSCAN으로 밀집된 영역을 찾은 후 각 주제는 단어가 문서에 나타나는지 여부를 고려하는 단어 모음 표현으로 토큰화됩니다. 클러스터에 속한 문서를 고유한 문서로 간주하고 TF-IDF를 적용한 후. 따라서 각 주제에 대해 c-TF-IDF가 가장 높은 가장 관련성이 높은 단어를 식별합니다.
BERTopic의 예
동일한 데이터 세트에 대해 분석을 반복합니다.
BERTopic을 사용하여 리뷰에서 주제를 추출할 것입니다.
model_path_bad = 'model/bert_bad'
topic_model_bad = train_bert(docs_bad,model_path_bad)
freq_df = topic_model_bad.get_topic_info()
print("Number of topics: {}".format( len(freq_df)))
freq_df['Percentage'] = round(freq_df['Count']/freq_df['Count'].sum() * 100,2)
freq_df = freq_df.iloc[:,[0,1,3,2]]
freq_df.head()
모델이 반환한 테이블은 추출된 14개 주제에 대한 정보를 제공합니다. 항목은 -1로 레이블이 지정된 무시되는 모든 이상값을 제외하고 항목 식별자에 해당합니다.
이제 각 주제에 대해 가장 관련성이 높은 용어의 시각화, 주제 간 거리 맵, 임베딩 공간의 XNUMX차원 표현 및 주제 계층.
상위 XNUMX개 주제에 대한 막대 차트를 표시해 보겠습니다. 각 주제에 대해 c-TF-IDF 점수를 기준으로 내림차순으로 정렬된 가장 중요한 단어를 관찰할 수 있습니다. 관련 단어가 많을수록 점수가 높아집니다.
첫 번째 주제에는 위치 및 음식, 주제 1 주문 및 대기, 주제 2 최악 및 서비스, 주제 3 장소 및 더러운 광고 등과 같은 일반적인 단어가 포함됩니다.
막대 차트를 시각화한 후에는 주제 간 거리 지도를 살펴볼 차례입니다. 플롯의 주제를 시각화하기 위해 c-TF-IDF 점수의 차원을 XNUMX차원 공간으로 줄입니다. 하단에는 빨간색으로 표시될 주제를 선택할 수 있는 슬라이더가 있습니다. 하나는 음식, 치킨, 위치와 같은 일반적인 주제이고 다른 하나는 최악의 서비스, 더럽고 장소, 추위와 같은 서로 다른 부정적인 측면입니다.
다음 그래프에서는 리뷰와 주제 간의 관계를 볼 수 있습니다. 특히 리뷰가 특정 주제에 할당되고 검색된 가장 관련성 높은 단어와 정렬되는 이유를 이해하는 것이 유용할 수 있습니다. 예를 들어 최악의 서비스에 대한 몇 가지 단어가 있는 항목 2에 해당하는 빨간색 클러스터에 집중할 수 있습니다. 이 밀집된 영역 내의 문서는 "끔찍한 고객 서비스와 더 나쁜 음식"과 같이 상당히 부정적으로 보입니다.
언뜻 보기에 이러한 접근 방식은 주제 수를 자동으로 찾고, 대부분의 경우 전처리가 필요하지 않으며, UMAP을 적용하여 문서 삽입의 차원을 줄이고 HDBSCAN을 사용하는 등 많은 공통점이 있습니다. 축소된 문서 임베딩을 모델링하지만 문서에 주제를 할당하는 방식을 보면 근본적으로 다릅니다.
Top2Vec은 클러스터 중심에 가까운 단어를 찾아 주제 표현을 생성합니다.
Top2Vec과 달리 BERTopic은 클러스터의 중심을 고려하지 않지만 클러스터의 모든 문서를 고유한 문서로 간주하고 TF-IDF의 클래스 기반 변형을 사용하여 주제 표현을 추출합니다.
탑투벡 | BER주제 |
클러스터의 중심을 기준으로 주제를 추출하는 전략입니다. | c-TF-IDF를 기반으로 주제를 추출하는 전략. |
동적 토픽 모델링을 지원하지 않습니다. | Dynamic Topic Modeling을 지원합니다. |
각 주제에 대한 단어 구름을 구축하고 주제, 문서 및 단어에 대한 검색 도구를 제공합니다. | 추출된 주제를 해석할 수 있도록 대화형 시각화 플롯을 구축할 수 있습니다. |
주제 모델링은 자연어 처리 분야에서 성장하고 있으며 리뷰, 오디오 및 소셜 미디어 게시물과 같은 다양한 응용 프로그램이 있습니다. 이 기사에서는 몇 줄의 코드로 주제를 식별하고 데이터 시각화를 통해 결과를 해석하는 데 도움이 되는 두 가지 유망한 접근 방식인 Topi2Vec 및 BERTopic에 대한 개요를 제공합니다. 이러한 기술에 대한 질문이 있거나 주제를 탐지하는 다른 접근 방식에 대한 다른 제안이 있으면 의견에 작성하십시오.
유지니아 아넬로 현재 이탈리아 파도바대학교 정보공학과 연구원으로 재직 중이다. 그녀의 연구 프로젝트는 이상 탐지와 결합된 지속적인 학습에 초점을 맞추고 있습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://www.kdnuggets.com/2023/01/topic-modeling-approaches-top2vec-bertopic.html?utm_source=rss&utm_medium=rss&utm_campaign=topic-modeling-approaches-top2vec-vs-bertopic
- 1
- 10
- 100
- 7
- a
- 할 수 있는
- 소개
- 계정
- Ad
- 주소
- 후
- 연산
- 알고리즘
- 정렬 된
- All
- 배당
- 허용
- 수
- 금액
- 분석
- 분석하다
- 와
- 이상 감지
- 다른
- 어플리케이션
- 어플리케이션
- 적용된
- 접근
- 구혼
- 지역
- 지역
- 인수
- 기사
- 측면
- 할당 된
- 오디오
- 자동적으로
- 가능
- 나쁜
- 바
- 기반으로
- 때문에
- 사이에
- 바닥
- 아침 식사
- 건물
- 빌드
- 계산하는
- 라는
- 수
- 포착
- 가지 경우
- 체인
- 특성
- 차트
- 선택
- City
- 고전적인
- 닫기
- 자세히
- 클러스터
- 클러스터링
- 암호
- 커피
- 결합 된
- 댓글
- 공통의
- 불만
- 고려
- 치고는
- 이 포함되어 있습니다
- 문맥
- 전통적인
- 동
- 대응
- 만들
- 만든
- 생성
- 만들기
- 창조
- 컵
- 현재
- 고객
- 고객 센터
- 데이터
- 일
- 취급
- 시연
- 학과
- Detection System
- 결정하다
- 다른
- 거리
- 먼
- 분기
- 문서
- 서류
- 하지 않습니다
- 단점
- 드라이브
- 운전하다
- 동적
- 마다
- 용이하게
- 다른
- 임베디드
- 엔지니어링
- 조차
- 예
- 외
- 설명
- 추출물
- 추출물
- 매우
- FAST
- 사람
- 를
- 들
- Find
- 발견
- 먼저,
- 초점
- 집중
- 식품
- 발견
- 에
- 근본적으로
- 일반
- 생성
- 생성
- 얻을
- 글로벌
- Go
- 가는
- 그래프
- 그래프
- 성장하는
- 도움
- 계층
- 높은
- 더 높은
- 최고
- HTTPS
- 생각
- 식별
- 식별자
- 확인
- 식별
- import
- 중대한
- 개선
- in
- 정보
- 를 받아야 하는 미국 여행자
- 대화형
- 흥미있는
- 해석
- IT
- 이탈리아
- 너 겟츠
- 유지
- 알아
- 라벨
- 언어
- 넓은
- 배우기
- 레버리지
- 라인
- 라인
- 링크드인
- 명부
- 지방의
- 위치한
- 위치
- 위치
- 보기
- 찾고
- 본관
- .
- 지도
- 매트릭스
- 맥도널드
- 의미있는
- 미디어
- 모델
- 모델링
- 모델링
- 모델
- 배우기
- 가장
- 다국적
- name
- 자연의
- 자연어
- 자연 언어 처리
- 필요
- 부정
- 다음 것
- 노이즈
- 번호
- 다수의
- 관찰
- 획득
- ONE
- 주문
- 조직
- 실물
- 기타
- 팬더
- 매개 변수
- 부품
- 특별한
- tỷ lệ phần trăm
- 수행
- 구문
- 장소
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 포인트 적립
- 가능한
- 게시물
- 강한
- 제시
- 너무 이른
- 이전에
- 처리
- 생산
- 제품
- 프로젝트
- 장래가 촉망되는
- 제공
- 제공
- 품질
- 문의
- 이유
- 빨간색
- 감소
- 감소
- 감소
- 에 관한
- 관계
- 관계
- 관련된
- 반복
- 대표
- 대리인
- 대표
- 연구
- 결과
- 공개
- 리뷰
- 리뷰
- 같은
- 검색
- 수색
- 선택
- 서비스
- 영상을
- 표시
- 표시
- 시각
- 비슷한
- 비슷하게
- 이후
- 단일
- 슬라이더
- 느리게
- So
- 사회적
- 소셜 미디어
- 소셜 미디어 게시물
- 일부
- 스페이스 버튼
- 전문
- 구체적인
- 분열
- 단계
- 단계
- 전략
- 구조
- 이러한
- 제안
- 지도 학습
- SUPPORT
- 지원
- 테이블
- 받아
- 소요
- 기법
- 안색
- 조건
- XNUMXD덴탈의
- 그곳에.
- 세
- 을 통하여
- 시간
- 에
- 토큰 화 된
- 검색을
- 상단
- 톱 XNUMX
- 화제
- 이상의 주제
- 변압기
- 지도 시간
- 전형적인
- 밑에 있는
- 이해
- 유일한
- 대학
- USA
- 사용
- 가치 있는
- 마케팅은:
- 변형
- 심상
- 기다리다
- 어느
- 동안
- 하는 동안
- 의지
- 이내
- 워드
- 말
- 가장 나쁜
- 쓰다
- 잘못된
- 제퍼 넷