다음을 통해 공유


잠재적 Dirichlet 할당 구성 요소

이 문서에서는 Azure Machine Learning 디자이너의 잠재적 Dirichlet 할당 구성 요소를 사용하여 달리 분류되지 않은 텍스트를 범주로 그룹화하는 방법을 설명합니다.

LDA(지연 Dirichlet 할당)는 자연어 처리에서 유사한 텍스트를 찾는 데 자주 사용됩니다. 또 다른 일반적인 용어는 ‘토픽 모델링’입니다.

이 구성 요소는 텍스트 열을 사용하고 다음 출력을 생성합니다.

  • 각 범주에 대한 점수와 함께 원본 텍스트

  • 각 범주의 추출된 용어와 계수가 포함된 기능 매트릭스

  • 입력으로 사용되는 새 텍스트에 저장하고 다시 적용할 수 있는 변환

이 구성 요소는 scikit-learn 라이브러리를 사용합니다. scikit-learn 에 대한 자세한 내용은 자습서 및 알고리즘에 대한 설명이 포함된 GitHub 리포지토리를 참조하세요.

한눈에 보는 잠재 Dirichlet 할당

LDA는 일반적으로 분류 방법이 아닙니다. 그러나 생성된 접근 방식을 사용하므로 알려진 클래스 레이블을 제공한 다음 패턴을 유추할 필요가 없습니다. 대신 알고리즘은 토픽 그룹을 식별하는 데 사용되는 확률적 모델을 생성합니다. 확률적 모델을 사용하여 기존 학습 사례 또는 모델에 입력으로 제공하는 새 사례를 분류할 수 있습니다.

텍스트와 범주 간의 관계에 대해 강력한 가정을 하지 않기 때문에 생성 모델을 선호할 수 있습니다. 단어 분포만 사용하여 주제를 수학적으로 모델링합니다.

이 이론은 PDF 다운로드로 사용할 수 있는 이 논문에서 설명합니다. 잠재 Dirichlet 할당: Blei, Ng 및 Jordan.

이 구성 요소의 구현은 LDA용 scikit-learn 라이브러리를 기반으로 합니다.

자세한 내용은 기술 참고 사항 섹션을 참조하세요.

지연 Dirichlet 할당을 구성하는 방법

이 구성 요소를 사용하려면 원시 또는 전처리된 텍스트 열을 포함하는 데이터 세트가 필요합니다.

  1. 잠재적 Dirichlet 할당 구성 요소를 파이프라인에 추가합니다.

    Text Analytics 아래의 자산 목록에서 Latent Dirichlet 할당 구성 요소를 캔버스로 끌어다 놓습니다.

  2. 구성 요소에 대한 입력으로 하나 이상의 텍스트 열이 포함된 데이터 세트를 제공합니다.

  3. 대상 열의 경우 분석할 텍스트가 포함된 열을 하나 이상 선택합니다.

    여러 열을 선택할 수 있지만 문자열 데이터 형식이어야 합니다.

    LDA는 텍스트에서 큰 기능 매트릭스를 만들기 때문에 일반적으로 단일 텍스트 열을 분석합니다.

  4. 모델링할 토픽 수에 입력 텍스트에서 파생시킬 범주 또는 토픽 수를 나타내는 1에서 1000 사이의 정수를 입력합니다.

    기본적으로 5개 토픽이 생성됩니다.

  5. N-Gram에서 해시 중에 생성되는 N-Gram의 최대 길이를 지정합니다.

    기본값은 2입니다. 즉, bigrams와 유니그램이 모두 생성됩니다.

  6. 출력 값을 확률로 변환하려면 정규화 옵션을 선택합니다.

    변환된 값을 정수로 나타내는 대신 출력 및 기능 데이터 세트의 값은 다음과 같이 변환됩니다.

    • 데이터 세트의 값은 확률로 P(topic|document)표시됩니다.

    • 기능 토픽 매트릭스의 값은 P(word|topic)인 확률로 표시됩니다.

    참고 항목

    Azure Machine Learning 디자이너에서 scikit-learn 라이브러리는 버전 0.19의 비정규화된 doc_topic_distr 출력을 더 이상 지원하지 않습니다. 이 구성 요소에서 정규화 매개 변수는 기능 토픽 매트릭스 출력에만 적용할 수 있습니다. 변환된 데이터 세트 출력은 항상 정규화됩니다.

  7. 모든 옵션 표시 옵션을 선택한 다음 다음 고급 매개 변수를 설정하려면 TRUE 설정합니다.

    이러한 매개 변수는 LDA의 scikit-learn 구현과 관련이 있습니다. scikit-learn의 LDA에 대한 몇 가지 좋은 자습서와 공식 scikit-learn 문서가 있습니다.

    • Rho 매개 변수입니다. 토픽 분포의 스파스에 대한 사전 확률을 제공합니다. 이 매개 변수는 sklearn의 topic_word_prior 매개 변수에 해당합니다. 단어 분포가 평평하다고 예상하는 경우 값 1 을 사용합니다. 즉, 모든 단어가 동등하다고 간주됩니다. 대부분의 단어가 드물게 나타나는 경우 더 낮은 값으로 설정할 수 있습니다.

    • 알파 매개 변수. 문서별 토픽 가중치의 스파스에 대한 사전 확률을 지정합니다. 이 매개 변수는 sklearn의 doc_topic_prior 매개 변수에 해당합니다.

    • 예상 문서 수입니다. 처리될 문서(행) 수의 최적 예상 값을 나타내는 숫자를 입력합니다. 이 매개 변수를 사용하면 구성 요소가 충분한 크기의 해시 테이블을 할당할 수 있습니다. 이 매개 변수는 scikit-learn의 total_samples 매개 변수에 해당합니다.

    • 일괄 처리의 크기입니다. LDA 모델로 전송되는 각 텍스트 일괄 처리에 포함할 행 수를 나타내는 숫자를 입력합니다. 이 매개 변수는 scikit-learn의 batch_size 매개 변수에 해당합니다.

    • 학습 업데이트 일정에 사용되는 반복의 초기 값입니다. 온라인 학습의 초기 반복에 대한 학습 속도를 낮추는 시작 값을 지정합니다. 이 매개 변수는 scikit-learn의 learning_offset 매개 변수에 해당합니다.

    • 업데이트 중에 반복에 적용된 전원입니다. 온라인 업데이트 중 학습 속도를 제어하기 위해 반복 횟수에 적용되는 능력 수준을 나타냅니다. 이 매개 변수는 scikit-learn의 learning_decay 매개 변수에 해당합니다.

    • 데이터에 대한 패스 수입니다. 알고리즘이 데이터를 순환하는 최대 횟수를 지정합니다. 이 매개 변수는 scikit-learn의 max_iter 매개 변수에 해당합니다.

  8. 텍스트를 분류하기 전에 초기 패스에서 n-gram 목록을 만들려면 LDA 이전에 ngram의 사전 빌드 또는 ngram 사전 빌드 옵션을 선택합니다.

    초기 사전을 미리 만드는 경우 나중에 모델을 검토할 때 사전을 사용할 수 있습니다. 숫자 인덱스가 아닌 텍스트에 결과를 매핑할 수 있으면 일반적으로 해석이 더 쉽습니다. 그러나 사전을 저장하는 데 시간이 오래 걸리고 추가 스토리지를 사용합니다.

  9. ngram 사전의 최대 크기에 대해 n-gram 사전에서 만들 수 있는 행의 총 수를 입력합니다.

    이 옵션은 사전의 크기를 제어하는 데 유용합니다. 그러나 입력의 N-Gram 수가 이 크기를 초과할 경우 충돌이 발생할 수 있습니다.

  10. 파이프라인을 제출합니다. LDA 구성 요소는 Bayes 정리를 사용하여 개별 단어와 연결될 수 있는 토픽을 결정합니다. 단어는 토픽 또는 그룹과 단독으로 연결되지 않습니다. 대신 각 n-gram은 검색된 클래스와 연결될 확률을 습득합니다.

결과

구성 요소에는 두 개의 출력이 있습니다.

  • 변환된 데이터 세트: 이 출력에는 입력 텍스트, 검색된 범주의 지정된 수 및 각 범주에 대한 각 텍스트 예제의 점수가 포함됩니다.

  • 기능 항목 매트릭스: 맨 왼쪽 열에는 추출된 텍스트 기능이 포함됩니다. 각 범주에 대한 열에는 해당 범주의 해당 기능에 대한 점수가 포함됩니다.

LDA 변환

이 구성 요소는 데이터 세트에 LDA를 적용하는 LDA 변환도 출력합니다.

이 변환을 저장하고 다른 데이터 세트에 다시 사용할 수 있습니다. 이 기법은 큰 코퍼스에서 학습했으며 계수 또는 범주를 재사용하려는 경우에 유용할 수 있습니다.

이 변환을 재사용하려면 잠재적 Dirichlet 할당 구성 요소의 오른쪽 패널에서 데이터 세트 등록 아이콘을 선택하여 데이터 세트 범주 아래의 구성 요소 목록에 해당 구성 요소를 유지합니다. 그런 다음, 이 구성 요소를 변환 적용 구성 요소에 연결하여 변환을 재사용할 수 있습니다.

LDA 모델 또는 결과 구체화

일반적으로 모든 요구 사항을 충족하는 단일 LDA 모델을 만들 수는 없습니다. 한 작업을 위해 설계된 모델조차도 정확도를 높이기 위해 많은 반복이 필요할 수 있습니다. 이러한 모든 방법을 사용하여 모델을 개선하는 것이 좋습니다.

  • 모델 매개 변수 변경
  • 시각화를 사용하여 결과 이해
  • 생성된 토픽이 유용한지 여부를 결정하기 위해 주제 전문가의 피드백을 받습니다.

질적 측정값은 결과를 평가하는 데 유용할 수도 있습니다. 토픽 모델링 결과를 평가하려면 다음을 고려합니다.

  • 정확도. 비슷한 항목이 정말 비슷한가요?
  • 다양성. 비즈니스 문제에 필요한 경우 모델이 유사한 항목을 구분할 수 있나요?
  • 확장성. 광범위한 텍스트 범주에서 작동하나요, 아니면 좁은 대상 도메인에서만 작동하나요?

자연어 처리를 사용하여 텍스트를 정리, 요약 및 단순화하거나 분류하여 LDA 기반 모델의 정확도를 향상시킬 수 있습니다. 예를 들어 Azure Machine Learning에서 지원되는 다음 기술은 분류 정확도를 향상시킬 수 있습니다.

  • 단어 제거 중지

  • 대/소문자 정규화

  • Lemmatization 또는 형태소 분석

  • 명명된 엔터티 인식

자세한 내용은 텍스트 전처리를 참조하세요.

디자이너에서 텍스트 처리에 R 또는 Python 라이브러리를 사용할 수도 있습니다. R 스크립트 실행Python 스크립트 실행을 참조하세요.

기술 정보

이 섹션에는 구현 세부 정보, 팁, 자주 묻는 질문에 대한 답변이 포함되어 있습니다.

구현 세부 정보

기본적으로 변환된 데이터 세트 및 기능 토픽 행렬의 출력 분포는 확률로 정규화됩니다.

  • 변환된 데이터 세트는 문서가 지정된 경우 토픽의 조건부 확률로 정규화됩니다. 이 경우 각 행의 합계는 1입니다.

  • 기능 토픽 행렬은 토픽에 지정된 단어의 조건부 확률로 정규화됩니다. 이 경우 각 열의 합계는 1입니다.

구성 요소에서 빈 토픽이 반환되는 경우도 있습니다. 가장 자주 원인은 알고리즘의 의사 임의 초기화입니다. 이 경우 관련 매개 변수를 변경해 볼 수 있습니다. 예를 들어 N-gram 사전의 최대 크기 또는 기능 해시에 사용할 비트 수를 변경합니다.

LDA 및 토픽 모델링

잠재적 Dirichlet 할당은 기본적으로 미분류 텍스트에서 범주 학습을 의미하는 ‘콘텐츠 기반 토픽 모델링’에 자주 사용됩니다. 콘텐츠 기반 토픽 모델링에서 토픽은 단어 분포입니다.

예를 들어 많은 제품을 포함하는 고객 리뷰 모음을 제공했다고 가정합니다. 시간이 지남에 따라 고객이 제출한 리뷰 텍스트에는 많은 용어가 포함되고, 일부 용어는 여러 토픽에서 사용되었습니다.

LDA 프로세스에서 식별하는 항목은 개별 제품에 대한 리뷰를 나타내거나 제품 검토 그룹을 나타낼 수 있습니다. LDA에서 토픽 자체는 시간에 따른 단어 집합의 확률 분포일 뿐입니다.

용어는 거의 하나의 제품에 배타적이지 않습니다. 다른 제품을 참조하거나 모든 항목에 적용되는 일반적인 용어("great", "awful")일 수 있습니다. 다른 용어는 노이즈 단어일 수 있습니다. 그러나 LDA 메서드는 동시 발생 확률을 제외하고 우주의 모든 단어를 캡처하거나 단어가 어떻게 관련되는지 이해하려고 하지는 않습니다. 대상 도메인에서 사용되는 단어만 그룹화할 수 있습니다.

용어 인덱스를 계산한 후 거리 기반 유사성 측정값은 텍스트의 개별 행을 비교하여 두 텍스트 부분이 비슷한지 여부를 확인합니다. 예를 들어 제품에 강력한 상관 관계가 있는 여러 이름이 있는 것을 확인할 수 있습니다. 또는 강하게 부정적인 용어는 일반적으로 특정 제품과 관련되어 있음을 알 수 있습니다. 유사성 측정값을 사용하여 관련 용어를 식별하고 권장 사항을 만들 수 있습니다.

구성 요소 매개 변수

속성 Type 범위 선택 사항 기본값 설명
대상 열 열 선택 Required StringFeature 대상 열 이름 또는 인덱스입니다.
모델링할 토픽 수 정수 [1; 1000] Required 5 N 항목에 대해 문서 배포를 모델링합니다.
N-gram 정수 [1; 10] Required 2 해시 중에 생성되는 N-Gram의 순서입니다.
Normalize Boolean True 또는 False Required true 출력을 확률로 정규화합니다. 변환된 데이터 세트는 P(topic|document)가 되고 기능 토픽 매트릭스는 P(word|topic)이 됩니다.
모든 옵션 표시 Boolean True 또는 False Required False scikit-learn 온라인 LDA와 관련된 추가 매개 변수를 제공합니다.
Rho 매개 변수 Float [0.00001; 1.0] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 0.01 토픽 단어 사전 배포.
알파 매개 변수 Float [0.00001; 1.0] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 0.01 문서 토픽 이전 분포입니다.
예상 문서 수 정수 [1; int. MaxValue] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 1000 예상 문서 수입니다. total_samples 매개 변수에 해당합니다.
일괄 처리의 크기 정수 [1; 1024] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 32 일괄 처리의 크기입니다.
학습 속도 업데이트 일정에 사용되는 반복의 초기 값 정수 [0;int.MaxValue] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 0 초기 반복에 대한 학습 속도를 낮추는 초기 값입니다. learning_offset 매개 변수에 해당합니다.
업데이트 중에 반복에 적용된 전원 Float [0.0; 1.0] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 0.5 학습 속도를 제어하기 위해 반복 횟수에 적용된 전원입니다. learning_decay 매개 변수에 해당합니다.
학습 반복 수 정수 [1; 1024] 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. 25 학습 반복 횟수입니다.
ngram의 빌드 사전 Boolean True 또는 False 모든 옵션 표시 확인란을 선택하지 ‘않은’ 경우에 적용됩니다. True LDA를 컴퓨팅하기 전에 ngram 사전을 빌드합니다. 모델 검사 및 해석에 유용합니다.
ngram 사전의 최대 크기 정수 [1; int. MaxValue] ngrams의 빌드 사전 옵션이 True이면 적용됩니다. 20000 ngrams 사전의 최대 크기입니다. 입력의 토큰 수가 이 크기를 초과할 경우 충돌이 발생할 수 있습니다.
기능 해시에 사용할 비트 수입니다. 정수 [1; 31] 모든 옵션 표시 확인란선택하지 않고 ngrams의 빌드 사전이 False이면 적용됩니다. 12 기능 해시에 사용할 비트 수입니다.
LDA 이전의 ngram 사전 빌드 Boolean True 또는 False 모든 옵션 표시 확인란을 선택한 경우에 적용됩니다. True LDA 이전의 ngram 사전을 빌드합니다. 모델 검사 및 해석에 유용합니다.
사전의 최대 ngram 수 정수 [1; int. MaxValue] 모든 옵션 표시 확인란을 선택했으며 N-Gram 사전 빌드 옵션이 True인 경우에 적용됩니다. 20000 사전의 최대 크기입니다. 입력의 토큰 수가 이 크기를 초과할 경우 충돌이 발생할 수 있습니다.
해시 비트 수 정수 [1; 31] 모든 옵션 표시 확인란을 선택하고 ngrams의 빌드 사전이 False인 옵션인 경우 적용됩니다. 12 기능 해시 중에 사용할 비트 수입니다.

다음 단계

Azure Machine Learning에서 사용 가능한 구성 요소 집합을 참조하세요.

구성 요소와 관련된 오류 목록은 디자이너의 예외 및 오류 코드를 참조하세요.