NLP with R 파트 1 : Topic Modeling to 음식점 리뷰에서 주제 식별

(Jurriaan Nagelkerke) ( 2020 년 11 월 13 일)

이 이야기는 님이 작성했습니다. NLP with R 시리즈 ( R을 사용한 예측 목적을위한 자연어 처리 ) 여기서 주제 모델링, 워드 임베딩, 변환기 및 BERT를 사용합니다.

순서대로 여러 NLP 기술을 비교하여 구조화되지 않은 텍스트에서 중요한 정보를 얻는 방법을 보여줍니다. 약 1 년 전에 우리는 네덜란드 레스토랑에 대한 리뷰를 모았습니다. 레스토랑 방문자의 리뷰 인 관중의 지혜가 새로운 미슐랭 스타를받을 가능성이 가장 높은 레스토랑을 예측하는 데 사용할 수 있는지 궁금했습니다. 어떻게 진행되었는지 확인하려면 이 게시물 을 읽어보세요. 주제 모델링 을 기본 도구로 사용하여 리뷰 텍스트에서 정보를 추출하고이를 예측 모델링 기술과 결합하여 예측을 완성했습니다.

우리는 예측과 텍스트 분석 부분에 대한 질문에 많은 관심을 받았습니다. 이러한 질문에 답하기 위해 다음 기사에서 우리의 접근 방식을 자세히 설명하겠습니다. 그러나 우리는 출판 후 NLP 기술 탐색을 중단하지 않았으며 더 많은 새로운 NLP 기술을 추가함으로써 얻은 통찰력을 공유하고 싶습니다. 보다 구체적으로 우리는 두 가지 유형의 단어 임베딩을 사용할 것입니다. 클래식 Word2Vec 모델 GLoVe 임베딩 모델 — 사전 훈련 된 단어 임베딩과 함께 전이 학습을 사용하고 BERT 를 사용합니다. 이러한 고급 NLP 기술의 부가 가치를 동일한 데이터 세트의 기준 주제 모델과 비교합니다. 우리가 한 일과 그 방법을 보여줌으로써 우리는 자신의 데이터 과학 노력에 텍스트 데이터를 사용하려는 다른 사람들을 안내하고자합니다.

(이전 기사)에서 우리는 우리가 어떻게했는지 보여주었습니다. 다양한 NLP 기술에 사용할 데이터를 준비했습니다. 여기서는 주제 모델링 을 소개하여 NLP 기술에 대한 일련의 기사를 시작하고 주제를 식별하고 주제 모델을 시각화하는 방법을 보여줍니다. 결과. (이후 기사)에서는 예측 모델에서 주제 모델 결과를 사용하는 방법을 보여줍니다.

주제 모델링이란 무엇입니까?

레스토랑 리뷰어는 레스토랑 리뷰에 대해 작성하며 Topic Modeling를 사용합니다. 그러나 토픽 모델이란 무엇입니까? 기계 학습 및 자연어 처리에서 주제 모델은 문서 모음에서 발생하는 추상 주제 를 발견하는 데 사용할 수있는 통계 모델 유형입니다. 텍스트 모음에서 주제를 추출하는 여러 알고리즘이 있지만 Latent Dirichlet Allocation 은 효율적으로 결과를 얻기 때문에 가장 인기있는 알고리즘 중 하나입니다. 해석하기 쉬운 주제. 주제의 해석 가능성은 주제 모델의 중요한 기능입니다. 통계적으로 관련된 단어 그룹을 찾을뿐만 아니라 식별 된 주제에 다른 사람들이 관련 될 수있는 주제 이름으로 레이블을 지정할 수 있기를 원하기 때문입니다. 따라서 주제 모델링은 KMeans와 같은 클러스터링 기술과 약간 유사합니다. 여기서 해석은 통계 측정 항목이 “좋은”솔루션을 결정하는 것만 큼 중요합니다. 주제 모델링 / LDA 작동 방식은 Blei 에서 다음과 같이 시각화됩니다.

그림에 표시된대로 :

  • topic 는 단어에 대한 분포입니다.
  • 문서 은 주제에 대한 분포입니다.

그러므로 리뷰 주제 모델링을 마친 후에는 다음과 같습니다.

  • 우리는 리뷰어가 작성하는 주제 또는 주제임을 알아야합니다. 레스토랑 리뷰,
  • 이 주제에서 가장 중요한 토큰이나 단어가 무엇인지 알고 있습니다.
  • 각 개인 리뷰에 대해 식별 된 주제에 대해 어느 정도인지 알 수 있습니다. 혼합 가능 — 주제 X에 대해 80 \%, 주제 Y에 대해 20 \% .

0 단계 : 컨텍스트 설정

먼저 , 우리는 주제 모델링을 수행하는 데 필요한 패키지로 통합 문서 환경을 설정했습니다.

텍스트 데이터) 우리는 이미 tidyverse와 tidytext를 간략하게 소개했습니다.여기에서 목록에 몇 가지 다른 패키지를 추가합니다.

  • topicmodels 는 LDA 및 빌드를 사용하여 주제 모델을 추정하는 패키지입니다. tm 패키지로 생성 된 데이터 구조에 따라
  • tm 은 문서를 생성하는 모든 종류의 텍스트 마이닝 기능을 갖춘 강력하고 일반적인 패키지입니다. 주제 모델링에 필요한 용어 행렬
  • ldavis 는 주제 모델을 시각화하고 해석 할 수있는 훌륭한 패키지이며 라벨링시 매우 유용합니다. 주제

1 단계. 사전 처리 된 데이터로드

이전 분석적인 측면을 살펴보면 준비된 텍스트 데이터가 필요합니다. 모든 진정한 데이터 과학자들이 알고 있듯이 적절한 데이터 준비는 대부분의 시간이 걸리며 최종 분석 결과의 품질에 가장 결정적입니다. 텍스트 데이터를 준비하는 것은 구조화 된 숫자 또는 범주 데이터를 준비하는 것과 비교할 때 또 다른 한 잔입니다. 이 블로그에서는 텍스트 분석에 중점을 둡니다. 그러나 우리가 수집 한 데이터를 어떻게 정리하고 준비했는지 보여 드리고 싶습니다. 이 (이전 블로그)에서는 데이터를 사전 처리 한 방법에 대해 자세히 설명하여 NLP 분석에서 사용할 수있는 다음 5 개의 파일을 생성했습니다.

  • reviews.csv : 원본 및 준비된 리뷰 텍스트가 포함 된 csv 파일 — NLP 분석의 원동력입니다. (포함 된 키 : restoreviewid, 따라서 리뷰의 고유 식별자)
  • labels.csv : a 리뷰가 Michelin 레스토랑에 대한 리뷰인지 여부를 나타내는 1 / 0 값이있는 csv 파일 (포함 된 키 : restoreviewid)
  • restoid.csv : 어떤 리뷰가 어떤 레스토랑에 속하는지 확인할 수있는 레스토랑 ID가있는 csv 파일 (포함 된 키 : restoreviewid)
  • trainids.csv : 학습 또는 테스트에 리뷰를 사용해야하는지 여부를 나타내는 1 / 0 값이있는 csv 파일 — 이미 train / 기술 간의 공정한 비교를 위해 동일한 샘플을 재사용 할 수 있도록 테스트 (포함 된 키 : restoreviewid)
  • features.csv : 리뷰와 관련된 다른 기능이있는 csv 파일 (포함 된 키 : restoreviewid)

NLP 기술에 대한 정리 된 관련 데이터는 공용 Blob 저장소를 통해 사용할 수 있으므로 사용자가 직접 제시하는 모든 코드를 실행하고 작업 방식을 더 자세히 볼 수 있습니다. 주제 모델의 경우 다음 파일 중 3 개가 필요합니다.

2 단계 : 주제에 대한 데이터 준비 모델링

깨끗한 리뷰 텍스트부터 시작하여 주제 모델을 추정하기 전에 몇 가지 작업을 수행해야합니다.

  1. 준비된 텍스트 (바이그램 포함)를 토큰 화
  2. 주제 모델 학습을위한 샘플 리뷰
  3. 관련 토큰 필터링
  4. 문서 용어 매트릭스 생성

2.1. 준비된 텍스트 (bigrams 포함) 토큰 화

주제 모델링에 사용하는 기술인 LDA (Latent Dirichlet Allocation)는 단어 모음기술입니다. 이것이 의미하는 바는 NLP 기술이 텍스트를 분석 할 때 토큰의 순서를 보지 않는다는 것입니다. 따라서 텍스트에서 토큰이있는 위치와 문서 내 내에서 토큰에 가까운 다른 토큰 (이전 / 후속 토큰)은 고려되지 않습니다. 문서 텍스트의 모든 토큰이 가방에 던져 져서 섞여 있지만 토큰이 같은 문서에 있는 정보를 유지하는 것과 같습니다. 결과적으로, 흥미로운 배열 (토큰의 빈번한 조합)이 텍스트에 많이 있으면 중요한 정보를 놓칠 수 있습니다. 인기있는 예는 사람의 이름 ( Donald Trump, Jonnie Boer) 또는 장소 ( United States, Den Haag)이지만 주제 모델에 포함하는 것이 중요 할 수있는 상황 별 단어 조합도 있습니다. witte wijn (white wine ),rode wijn , (red wine ),gaan eten (go eat ). 이러한 중요한 배열을 놓치지 않도록 텍스트에있는 준비된 비 그램 을 추가합니다. 이미 데이터 준비에서 불용어와 문장 부호를 제거했습니다.

로드되고 정리 된 텍스트에 bigram을 추가 한 후 텍스트를 다시 분할하여 각 행이 리뷰 인 데이터 프레임 (토큰 조합)으로 끝납니다. 불용어를 제거한 후 너무 짧아 진 (5 토큰) 리뷰를 필터링합니다. 이 형식에서는 주제 모델링을 시작하기 전에 마지막 준비를 할 준비가되었습니다.

2.2 주제 모델 학습을위한 샘플 검토

다음 단계에서는 가장 관련성이 높은 토큰을 필터링하여 문서 용어 매트릭스에 포함하고 이후에 주제 모델링에 포함합니다.그러나 먼저 우리에게 가장 중요한 문서 (검토)를 결정해야합니다. 몇 가지 이유로 주제 모델의 입력으로 모든 리뷰를 사용하고 싶지 않습니다.

  • 결국 예측 모델의 주제를 사용하여 미쉐린 스타를 예측합니다. 주제 모델을 구축하고 그 결과를 다운 스트림 예측 작업에 사용하기 전에 테스트 세트를 따로 설정하는 것이 가장 좋습니다. 이렇게하면 기차 데이터에 대한 주제 모델과 예측을 모두 구축하고 평가할 때까지 테스트 데이터를 보이지 않게 유지합니다.
  • 아래에 표시된 것처럼 모든 리뷰의 3 \% 이상이 미쉐린 리뷰입니다. 주제 모델링에 사용하는 기차 세트에서 미쉐린 리뷰의 비율을 늘리면 미쉐린 리뷰에서 논의 된 특정 주제가 식별 될 가능성이 높아집니다.

이러한 이유로 우리는 주제 모델에 대한 나머지 준비와 리뷰의 하위 집합에 대한 주제 모델 추정에 집중합니다. 이 하위 집합에는 데이터 준비 노트북에서 교육 사례로 이미 지정된 리뷰 만 포함됩니다. 이 하위 집합 내에서 모든 미쉐린 리뷰 (약 3.000)를 취하고 미슐랭이 아닌 리뷰를 보완하여 약 10.000 개의 리뷰를 작성합니다.

# A tibble: 2 x 3
ind\_michelin n pct

1 0 141554 97\%
2 1 4313 3\%
# A tibble: 5 x 5
# Groups: train\_smpl, train [3]
train\_smpl train ind\_michelin n\_reviews n\_tokens

1 0 0 0 40997 433179
2 0 0 1 1290 35129
3 0 1 0 88505 773887
4 1 1 0 7181 111435
5 1 1 1 2971 70548
[1] "10152 unique reviews and 163137 unique tokens selected to train topic model"

2.3 필터 토큰

토큰에 bigram을 추가하고 텍스트를 다시 토큰 화 했으므로 주제 모델에 사용할 수있는 고유 한 토큰이 여전히 많습니다. . 자주 사용하지 않는 용어의 롱테일을 제거하는 것이 가장 좋습니다. 먼저 토큰 빈도 분포가 어떻게 보이는지 살펴 보겠습니다. (데이터 준비 블로그)에서 데이터를 준비 할 때 토큰 빈도를 확인하여 지정한 128 개의 사용자 지정 고주파 중지단어를 포함하여 이미 텍스트에서 모든 중지 단어를 제거했습니다.

위의 플롯은 모든 리뷰에서 거의 발생하지 않는 고유 한 토큰이 매우 많음을 명확하게 보여줍니다. 75 \%는 한 번만 발생합니다.

5 번 발생하는 토큰에 집중하거나 기차 코퍼스에서 더 많음

토큰 빈도 수에서 알 수 있듯이 한 번 또는 몇 번만 발생하는 토큰이 많습니다. 모든 고유 토큰의 약 92 \%가 우리 사이트에서 5 번 미만으로 발생합니다. 리뷰 코퍼스. 이러한 저주파 토큰은 주제 모델 분석에 영향을줍니다. 자주 사용되는 토큰에 집중하기 위해 준비된 열차 데이터에서 5 회 이상 발생하는 토큰을 선택합니다. 이것은 동일한 리뷰에서 함께 발생하는 토큰에서 주제를 배우기에 충분합니다. 주제 모델을 최적화 할 때 결과에 ​​미치는 영향을 평가하기 위해 최소 빈도를 변경할 수 있습니다.

TF-IDF가 아닌 이유는 무엇입니까?

텍스트 분석 도구에 대해 읽어 보면 다음과 같이 궁금 할 것입니다. 가장 관련성이 높은 토큰을 선택하기 위해 TF-IDF를 사용하지 않는 이유는 무엇입니까? TF-IDF 는 용어 빈도 — 역 문서 빈도를 나타냅니다. 이 메트릭은 용어 빈도를 결합합니다. 토큰이 문서에 얼마나 자주 존재합니까? -문서 빈도의 역수-고유 한 문서가 몇 개나 존재합니까? TF-IDF는 종종 가장 관련성이 높은 토큰을 선택하는 데 좋은 선택이지만 문서 크기가 제한되고 동일한 텍스트에서 동일한 토큰의 재발률이 낮은 우리의 컨텍스트에는 해당되지 않습니다. 토큰의 기간 빈도가 1 이상인 경우는 드뭅니다. 결과적으로 역 문서 빈도 부분 만 결정적이며 이는 한두 개의 리뷰에서만 발생하는 토큰에 유리합니다. 이러한 이유로 여기에서는 TF-IDF를 사용하지 않지만 전체 빈도를 살펴보고 주제 모델링을위한 관련 토큰을 선택합니다. 또한 텍스트에서 불용어의 맞춤 목록을 이미 제거했기 때문에 너무 빈번한 토큰이 이미 제거되었습니다.

빈번하지 않은 토큰을 필터링하여 고려할 토큰 수를 줄였습니다. LDA에서는 가장 자주 사용되는 12K (8 \%) 토큰에 집중하고 말뭉치에서 너무 드물게 발생하는 146K (92 \%) 토큰을 제거했습니다. 이러한 선택된 토큰은 여전히 ​​문서에있는 모든 토큰의 73 \%를 나타냅니다.

# A tibble: 2 x 5
min\_5\_freq n\_unique\_tokens n\_tokens pct\_unique\_tokens pct\_all\_tokens

1 token frequency: 2 token frequency: >=5 12525 518146 8\% 73\%

2.4 DTM 생성

주제 모델을 구축하는 데 사용할 토큰을 필터링 한 후 LDA. 이를 위해서는 document-term-matrix 또는 DTM가 필요하므로 행에 모든 문서 (리뷰)와 열에 모든 용어 ( 관련 토큰). value 매개 변수에 전체 토큰 빈도 를 사용합니다.여기서 문서 특정 용어 빈도 를 예상 할 수 있지만, 일반적으로 더 자주 사용되는 용어에 대한 주제 모델을 찾는 데 훨씬 더 중점을두기 위해 전체 토큰 빈도를 사용합니다. 짧은 길이의 리뷰 (주제 모델링에 자주 사용되는 책이나 기사에 비해)를 고려할 때 단일 토큰이 리뷰에서 더 자주 발생할 확률은 제한됩니다.

DTM dimensions: 
Documents (10152) x Tokens (12525) (average token frequency: 702.3)

3 단계 : 주제 모델 개발

이제 DTM, 이제 주제 모델링을 시작할 준비가되었습니다. 지금까지 분석 결과에 영향을 미치는 몇 가지 선택을 이미했습니다. 사용할 최소 검토 길이, 제외 할 불용어, n -포함 할 그램, 토큰 사용을위한 최소 토큰 빈도 … 그리고 몇 가지 추가 선택이 필요합니다.

LDA에는 결과에 영향을 미치는 여러 매개 변수가 있으며 그 중 가장 중요한 것은 다음과 같습니다.

  • k : 주제의 수입니다. 예, 이것은 매개 변수이며 KMeans와 같은 클러스터링 기술과 유사하게 식별 할 클러스터 / 주제 수를 지정해야합니다. ify.
  • method : topicmodels 패키지는 다양한 최적화 방법을 지원합니다. VEM algorithm 또는 Gibbs sampling, 기본값은 VEM입니다.
  • control : 추정을 안내하는 제어 변수 목록 — 관련 매개 변수는 선택한 방법 VEM 또는 Gibbs에 따라 다르지만 가장 중요한 매개 변수는 다음과 같습니다.
  • nstart : 설정은 동일하지만 시드가 다른 실행 횟수
  • 시드 : 재현성을 위해 임의의 시드를 설정할 수 있습니다. nstart> 1 인 경우 nstart 당 1 개씩 여러 시드를 제공해야합니다 (예 : c ( 123, 234 “,345”)).
  • best : TRUE (기본값) 인 경우 가장 적합한 결과를 가진 실행 만 유지되며, FALSE 인 경우 모든 실행 목록이 반환되므로 모두 검사 할 수 있습니다.

사용 가능한 모든 매개 변수 및 설정에 대한 전체 개요는 topicmodels 패키지 비 네트 를 참조하세요.

LDA 주제 모델 추정

가장 영향력있는 매개 변수는 k : 숫자 식별 할 주제의 . k 값을 선택하는 방법은 무엇입니까? 이것은 부분적으로 토론 (이 맥락에서 찾을 수있는 주제의 수는 몇 개입니까?) 및 시행 & 오류 (k의 다른 값 시도, 결과 평가)의 결과입니다. 일부 데이터 과학자는이 과정을 좋아하지 않을 수 있으며 통계를보고이 프로세스를 안내하는 것을 선호하지만 KMeans와 같은 다른 비지도 데이터 과학 기술에 익숙한 사용자에게는 새로운 것이 아닙니다. 클러스터링과 주제 모델링은 어느 정도 과학보다 예술에 더 가깝습니다. 통계 기술과 측정에 따라 데이터 과학자는 (비즈니스) 요구 사항에 맞는 주제 모델링 솔루션을 조각합니다. 통계적 배경이있는 k의 시작점이 필요한 경우 접근 방식 또는 이 방법을 시도 할 수 있습니다. 접근 방식.

주제 모델부터 시작하여 3 개의 주제를 식별하고 결과를 살펴 보겠습니다. 지금은 다른 기본값을 변경할 이유가 없습니다.

주제 모델 평가

주제 모델이 피팅되었으므로 살펴 보겠습니다!

피팅 된 lda 개체에는 여러 행렬이 포함되어 있습니다.

  • phi : 주제 (열)에 대한 토큰 (행) 분포가있는 행렬
  • theta : 주제 (열)에 대한 문서 분포 (따라서 리뷰, 행)가 포함 된 행렬

phi 및 for theta, 모든 열의 합계는 1과 같습니다. 의미 :

  • phi의 경우 주제 내의 모든 토큰 점수 합계는 1입니다. 점수가 높을수록 해당 토큰의 중요성이 더 높습니다. .
  • theta의 경우 문서 내 모든 주제 점수의 합계는 1입니다. 점수가 높을수록 해당 문서에 주제가 더 많이 있음을 의미합니다.

주제 모델을 살펴보기 위해 주제별로 가장 중요한 토큰부터 살펴 보겠습니다. 이를 위해 토큰이 주제에 중요한시기를 지정해야합니다. 토큰이 주제 p(token|topic) 내에서 발생할 가능성이 높은 경우 토큰이 주제에 중요하다고 주장 할 수 있습니다. 이것이 3 개 주제 주제 모델을 찾는 방법을 살펴 보겠습니다. 가장 중요한 토큰을 시각화하기 위해 주제 모델 데이터를 준비하는 데 도움이되는 tidytext 패키지의 깔끔한 기능을 사용하겠습니다. 주제별 : tidy().

이 플롯을 통해 첫 번째 주제 모델의 주제가 무엇을 나타내는 지 처음으로 느낄 수 있습니다. 플롯에서 볼 수 있듯이 주제별 토큰 확률을 보면 전체 빈도가 높은 토큰이 여러 주제에 대해 상위 10 위에 나타날 확률이 더 높다는 단점이 있습니다. 예를 들어 레스토랑 은 여러 주제 상위 10 개에 표시됩니다. 전체 주제 확률을 살펴보면 다소 덜 빈번한 특정 토큰이 특정 주제와 매우 관련이 있다는 것을 숨길 수 있습니다. 이를 분석하기 위해 토큰의 전체 빈도와 상대적 항목의 토큰 빈도를 만들 수 있습니다. p(token|topic)/p(token). 이것은 토큰 빈도에 관계없이 어떤 토큰이 주제와 강하게 관련되어 있는지 보여줍니다.

후자의 접근 방식은 나름대로 단점이 있으며, 다음에서 발생하지 않을 수있는 중요한 토큰을 강조합니다. 그 많은 리뷰. 가장 좋은 접근 방식은 중간 정도일 수 있습니다. 주제 모델을 평가하려면 절대 용어 확률과 상대 용어 확률의 두 관점에서 주제 모델을 탐색 할 수있는 것이 가장 중요하며 두 가지를 혼합하여 사용할 수도 있습니다. 이러한 이유로 LDAvis 패키지는 정확히 그렇게 할 수 있기 때문에 매우 가치가 있습니다! LDAvis에는 주제 모델 및 어휘에 대한 정보가 포함 된 JSON이 필요합니다.

부담 여기 : LDAvis R 패키지는 R 또는 RStudio에서 사용할 수 있지만 Jupyter 또는 Databricks와 같은 노트북 환경에서는 직접 사용할 수 없습니다. 따라서 우리는 LDAvis 패키지에 pyLDAvis 포트를 사용했습니다. 노트북에 멋진 LDAvis 도구를 쉽게 포함시킬 수 있기 때문입니다. 그러나 일부 브라우저에서는 pyLDAvis가 제대로 작동하지 않습니다. 이 경우 아래 예를 참조하십시오. 언제든지 이 노트를 다운로드 하고 LDAvis를 직접 사용해보십시오.

R 또는 RStudio를 사용하여 LDAvis를 로컬에서 실행하려면 serVis(json) 을 실행할 수 있습니다. 아래 스크린 프린트에서 대화 형 LDAvis를 탐색하려면 이 링크 를 참조하세요.

왼쪽 그림은 주제 ( 주제에 해당하는 문서는 몇 개입니까?) 및 주제 간의 거리 ( 어떤 주제가 서로 관련성이 더 많거나 적습니까? ). 오른쪽에는 선택한 주제 (또는 주제가 선택되지 않은 경우 주제 모델에서 전체적으로 가장 중요한 토큰)에 대한 중요한 토큰이 표시됩니다. 오른쪽 상단 슬라이더를 사용하여 람다를 변경할 수 있습니다. 여기서 람다는 주제 내에서 절대 토큰 확률을 확인하거나 (p(token|topic), lambda = 1) 상대 토큰을 선호하는 정도를 결정합니다. 주제 내 확률 (p(token|topic)/p(token), lambda = 0). 이 시각화를 가지고 노는 것이 식별 된 주제에 익숙해지는 가장 좋은 방법 인 경우가 많습니다. 그리고-가장 중요한 것은-각 주제에 대한 적절한 주제 레이블을 알아내는 것입니다! 이는 또한 현재 토픽 모델이 다운 스트림 작업에 적합한 지 또는 일부 설정 (k, 메소드, 시드 등)을 변경 하려는지 또는 가져 오기 위해 데이터 (선택한 문서 또는 토큰 변경)를 변경 하려는지 결정하는 데 큰 도움이됩니다. 더 나은 결과입니다.

우승 한 주제 모델을 향한 반복

우리는 이전에 언급했습니다. topic modeling는 클러스터 분석 및 기타 감독되지 않은 것과 같습니다. 기계 학습 기술-과학보다 예술! 따라서 “최고의”주제 모델로 끝나기 전에 주제 모델을 조정하는 데 상당한 시간을 할애 할 것입니다. “최고”는 주제 모델과 창의성에 대해 염두에 둔 응용 프로그램에 크게 좌우되기 때문에 여기에 “최고”를 따옴표로 묶었습니다! 그래서 이것은 매우 주관적입니다! “가장 좋은”주제 모델을 찾는 과정에서 사용할 수있는 해결책을 찾지 못할 것이라고 생각하는 순간과 이러한 내재적 주제를 통해 실현되는 엑스터시를 경험하는 다른 순간이있을 것입니다. 그것을 지배하는 토큰.최적의 주제 모델을 만들 때 가장 중요한 도구는 다음과 같습니다.

  • 변경 k — 주제 수
  • 추가 너무 우세 (빈번 함)토큰 제외 (아직도 너무 지배적이어서 텍스트에서 더 흥미로운 하위 도메인을 찾는 것을 억제)
  • 최소 토큰 빈도를 늘려 더 지배적 인 토큰에 집중
  • 샘플 문서 중요한 주제를 찾기 위해 가장 관련성이 높은 문서에 집중 , 샘플링 전략을 변경할 수 있습니다.

이러한 매개 변수 외에도 변경할 수있는 LDA 매개 변수도 있지만 경험상 위의 매개 변수는 시작하는 데 가장 중요한 매개 변수입니다. k를 늘리거나 줄이면 LDA를 재평가해야하는 반면, 고려할 리뷰 또는 토큰 샘플링을 변경하면 DTM도 다시 만들어야합니다.

우리는 무엇을 했습니까? 많은 땀을 흘리고 약간의 저주와 많은 해결책을 모색 한 후 다음을 수행했습니다.

  • k를 7 개의 주제로 변경
  • 일부 토큰을 병합하고 너무 빈번한 숫자를 제외합니다. 토큰
  • 여러 시드 결과 (nstartbest=FALSE 사용)를 탐색하여 가장 해석 가능한 주제 모델을 찾습니다 **
  • 마지막으로 최상의 시드를 선택하고 최상의 LDA 모델 만 유지하도록 best=TRUE를 설정합니다.

** LDA 함수를 사용하면 nstart 매개 변수를 지정하여 실행 횟수를 설정하고 seed를 설정하여 여러 실행을 수행 할 수 있습니다. 이러한 실행을 안내하는 씨앗. best=TRUE를 설정할 때 로그 가능성이 가장 좋은 솔루션 만 보존되며 best=FALSE로 설정하면 모든 주제 모델 ( 반환 된 객체는 이제 모든 주제 모델의 목록입니다.

결과를 ​​반복하고 비교하면 리뷰어가 식당을 리뷰 할 때 말하는 주제의 주제 이름으로 멋지게 레이블을 지정할 수있는 7 개의 주제가 생성되었습니다. 레이블이 이미 추가 된 주제에 대한 솔루션은 다음과 같습니다.

DTM dimensions: 
Documents (10152) x Tokens (12496) (average token frequency: 416.26)

아래 스크린 프린트에서 대화 형 LDAvis를 탐색하려면 으로 이동하세요. 이 html 파일 .

일부 주제는 여전히 혼합되어 있지만 미슐랭 스타를 예측하는 데이 솔루션을 사용하게되어 기쁩니다. 확인 된 주제간에 몇 가지 명확한 차이점이 있으며 각 리뷰의 원본 텍스트를 이러한 주제에 대한 확률 벡터로 번역하면 미슐랭 스타를 예측하는 데 도움이 될 것으로 예상됩니다. 다음은 레이블과 가장 자주 사용되는 토큰이있는 주제의 개요입니다.

주제 모델링 — 마무리

여기에서 기사 우리는 잠재적 인 구성 또는 주제리뷰어가 레스토랑 리뷰에서 말하는 주제를 식별하기 위해 주제 모델을 구축하는 방법을 보여주었습니다. 보시다시피, 최종 최상의주제 모델을 만들기 전에 선택해야 할 사항이 상당히 많으며 안내 통계를 항상 사용할 수있는 것은 아니기 때문에 이러한 선택 중 일부는 쉽지 않습니다. 이전에 언급 한 내용을 기억하십시오. 주제 모델링은 감독되지 않는 기술이며 이것이 과학이 아닌 예술로 만듭니다. 많은 사용 사례에서 중요한 점은 여기에서 구축 한 기능을 다운 스트림 작업에서 사용하면서 해석 할 수 있어야하기 때문에 해석하고 설명 할 수있는 주제로 끝나는 것입니다. 우리의 7 개 주제 모델을 통해 우리는 그렇게 할 수 있다고 확신합니다!

장점

주제 모델링, 특히 LDA의 좋은 점은 모든 조정과 어려움이 완료되면 잘 해석 가능한 주제를 관리 할 수있는 개수로 끝낼 수 있습니다. 이를 통해 각 문서에 대해 해당 주제에 대한 배포를 추가 할 수 있습니다. 주제 확률의 합이 1이고 숫자 값이므로 이제 구조화되지 않은 서로 다른 길이의 텍스트를 처리하기 쉬운 새 기능 몇 개로 요약했습니다. 예측 모델링 또는 세분화 작업과 같은 다운 스트림 작업에서 큰 가치가있을 수있는 기능입니다.

단점

주제 모델링의 가장 큰 단점은 최상의모델을 찾는 주관성입니다. . 따라서 적절한 주제 모델 솔루션을 찾는 데 상당한 시간과 노력이 소요될 수 있습니다. 결과 주제에서 상당히 다를 수있는 통계적으로 동등한 솔루션이 여러 개있을 수 있습니다.따라서 약간 다른 데이터 나 설정으로 분석을 다시 실행하면 항상 모델의 해석이 크게 변경 될 가능성이 있습니다. 특히 텍스트 데이터에 지배적 인 주제 솔루션이없는 경우 각 실행 결과가 다를 수 있습니다. 사용 된 시드와 데이터 세트를 보호하여 이전 실행을 추적하여 설명과 설명을 멋지게 해석 할 수있는 아름다운 주제 모델 솔루션을 찾고 다시는 복원하지 못하도록 잃어 버리지 않도록합니다.

예상

이전에 목표를 지정했습니다. 미슐랭 스타를받은 레스토랑을 예측하는 것입니다. 따라서 (다음 블로그) 중 하나에서 리뷰 텍스트의 주제에 대한 분포를 사용하여 리뷰가 미쉐린 리뷰인지 여부를 예측합니다. 또한 레스토랑이 미슐랭 스타를 예측할 수있는 정도를 평가해야하는 모든 리뷰에 대해 이러한 예측을 집계합니다. 이 외에도 (다른 기술) (word2vec, GloVe, BERT)을 사용하여 리뷰 텍스트를 미슐랭 스타를 예측하는 데 사용할 수있는 기능으로 요약하고 어떤 접근 방식이 가장 효과적인지 보여줍니다. 다음 블로그에서 단어 임베딩 기술 (word2vec, GloVe)을 소개하는 것으로 시작하고 리뷰 텍스트를 임베딩으로 변환하는 방법과이를 해석하고 시각화하는 방법을 보여줍니다.

이 기사는 Google의 일부입니다. R 시리즈가있는 NLP. 이 시리즈의 모든 기사에 대한 개요는 여기에서 확인할 수 있습니다.

  • 이 시리즈의 이전 : (자연어 처리를위한 데이터 준비)
  • 이 시리즈의 다음 단계 : (단어 임베딩 모델 교육 및 결과 시각화)

이 작업을 직접 수행 하시겠습니까? gitlab 페이지에서 Databricks Notebook 또는 R-script를 자유롭게 다운로드하십시오.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다