기능 해싱

중요

Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.

2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.

ML Studio(클래식) 설명서는 사용 중지되며 나중에 업데이트되지 않을 수 있습니다.

Vowpal Wabbit 라이브러리를 사용하여 텍스트 데이터를 정수로 인코딩된 기능으로 변환합니다.

범주: Text Analytics

참고

적용 대상: Machine Learning Studio(클래식)

유사한 끌어서 놓기 모듈은 Azure Machine Learning 디자이너에서 사용할 수 있습니다.

모듈 개요

이 문서에서는 Machine Learning Studio(클래식)에서 기능 해싱 모듈을 사용하여 영어 텍스트 스트림을 정수로 표시되는 기능 집합으로 변환하는 방법을 설명합니다. 그런 다음, 이 해시된 기능 집합을 기계 학습 알고리즘에 전달하여 텍스트 분석 모델을 학습시킬 수 있습니다.

이 모듈에 제공된 기능 해시 기능은 Vowpal Wabbit 프레임워크를 기반으로 합니다. 자세한 내용은 Vowpal Wabbit 7-4 모델 학습 또는 Vowpal Wabbit 7-10 모델 학습을 참조하세요.

기능 해시에 대한 자세한 정보

기능 해싱은 고유 토큰을 정수로 변환하여 작동합니다. 입력으로 제공한 정확한 문자열에 대해 작동하며 언어 분석이나 사전 처리를 수행하지 않습니다.

예를 들어 다음과 같은 간단한 문장 세트를 사용하고 감정 점수가 뒤따릅니다. 이 텍스트를 사용하여 모델을 구축한다고 가정합니다.

USERTEXT 감정
I loved this book 3
I hated this book 1
This book was great 3
I love books 2

내부적으로 기능 해싱 모듈은 n-gram 사전을 만듭니다. 예를 들어 이 데이터 세트의 바이그램 목록은 다음과 같습니다.

TERM(bigrams) 빈도
This book 3
I loved 1
I hated 1
I love 1

N그램 속성을 사용하여 n그램의 크기를 제어할 수 있습니다. 바이그램을 선택하면 유니그램도 계산됩니다. 따라서 사전에는 다음과 같은 단일 용어도 포함됩니다.

용어(유니그램) 빈도
설명서 3
I 3
서적 1
was 1

사전이 빌드된 후 기능 해싱 모듈은 사전 용어를 해시 값으로 변환하고 각 경우에 기능이 사용되었는지 여부를 계산합니다. 텍스트 데이터의 각 행에 대해 모듈은 해시된 각 기능에 대해 하나의 열로 구성된 일련의 열을 출력합니다.

예를 들어, 해싱 후 기능 열은 다음과 같이 보일 수 있습니다.

등급 해시 기능 1 해시 기능 2 해시 기능 3
4 1 1 0
5 0 0 0
  • 열의 값이 0이면 행에 해시된 기능이 포함되지 않았습니다.
  • 값이 1이면 행에 기능이 포함된 것입니다.

기능 해시를 사용하는 이점은 가변 길이의 텍스트 문서를 동일한 길이의 숫자 기능 벡터로 표현하고 차원 감소를 달성할 수 있다는 것입니다. 반면 학습에 텍스트 열을 있는 그대로 사용하려고 하면 많은 고유 값이 있는 범주 기능 열로 처리됩니다.

출력을 숫자로 표시하면 데이터에 대해 분류, 클러스터링, 정보 검색 등의 다양한 기계 학습 방법도 사용할 수 있습니다. 조회 작업은 문자열 비교 대신 정수 해시를 사용할 수 있기 때문에 기능 가중치를 얻는 것도 훨씬 빠릅니다.

기능 해시를 구성하는 방법

  1. Studio(클래식)에서 실험에 기능 해시 모듈을 추가합니다.

  2. 분석하려는 텍스트가 포함된 데이터 세트를 연결합니다.

    기능 해시는 형태소 분석 또는 잘림과 같은 어휘 작업을 수행하지 않으므로 기능 해시를 적용하기 전에 텍스트 전처리를 수행하여 더 나은 결과를 얻을 수 있습니다. 제안 사항은 모범 사례기술 노트 섹션을 참조하세요.

  3. 대상 열의 경우 해시된 기능으로 변환하려는 텍스트 열을 선택합니다.

    • 열은 문자열 데이터 형식이어야 하며 기능 열로 표시되어야 합니다.

    • 입력으로 사용할 여러 텍스트 열을 선택하면 기능 차원에 큰 영향을 미칠 수 있습니다. 예를 들어 단일 텍스트 열에 10비트 해시를 사용하는 경우 출력에는 1024개의 열이 포함됩니다. 두 텍스트 열에 10비트 해시를 사용하는 경우 출력에는 2048개의 열이 포함됩니다.

    참고

    기본적으로 Studio(클래식)는 대부분의 텍스트 열을 기능으로 표시하므로 모든 텍스트 열을 선택하면 실제로 자유 텍스트가 아닌 많은 열을 포함하여 열이 너무 많을 수 있습니다. 메타데이터 편집에서 지우기 기능 옵션을 사용하여 다른 텍스트 열이 해시되지 않도록 합니다.

  4. 해시 비트 크기를 사용하여 해시 테이블을 만들 때 사용할 비트 수를 지정합니다.

    기본 비트 크기는 10입니다. 많은 문제의 경우 이 값이 적절하지만 데이터에 적합한지 여부는 학습 텍스트의 n-그램 어휘 크기에 따라 달라집니다. 큰 어휘를 사용하면 충돌을 방지하기 위해 더 많은 공간이 필요할 수 있습니다.

    이 매개 변수에 다른 비트 수를 사용하고 기계 학습 솔루션의 성능을 평가하는 것이 좋습니다.

  5. N-gram의 경우 학습 사전에 추가할 n-gram의 최대 길이를 정의하는 숫자를 입력합니다. n그램은 고유한 단위로 처리되는 n 단어의 시퀀스입니다.

    • N-그램 = 1: 유니그램 또는 단일 단어입니다.

    • N-그램 = 2: Bigrams 또는 2단어 시퀀스 및 유니그램.

    • N-그램 = 3: Trigram 또는 3단어 시퀀스 및 bigrams 및 유니그램.

  6. 실험을 실행합니다.

결과

처리가 완료되면 모듈은 원래 텍스트 열이 텍스트의 기능을 나타내는 여러 열로 변환된 변환된 데이터 세트를 출력합니다. 사전이 얼마나 큰지에 따라 결과 데이터 세트는 매우 클 수 있습니다.

열 이름 1 열 유형 2
USERTEXT 원본 데이터 열
감정 원본 데이터 열
USERTEXT - 해싱 기능 1 해시 기능 열
USERTEXT - 해싱 기능 2 해시 기능 열
USERTEXT - 해싱 기능 n 해시 기능 열
USERTEXT - 해싱 기능 1024 해시 기능 열

변환된 데이터 세트를 만든 후에는 2클래스 지원 벡터 머신과 같은 좋은 분류 모델과 함께 모델 학습 모듈에 대한 입력으로 사용할 수 있습니다.

모범 사례

텍스트 데이터를 모델링하는 동안 사용할 수 있는 몇 가지 모범 사례는 실험을 나타내는 다음 다이어그램에 설명되어 있습니다.

AML_FeatureHashingWorkflow

  • 입력 텍스트를 전처리하려면 기능 해시를 사용하기 전에 R 스크립트 실행 모듈을 추가해야 할 수 있습니다. R 스크립트를 사용하면 사용자 지정 어휘 또는 사용자 지정 변환을 유연하게 사용할 수 있습니다.

  • 출력 데이터 집합에서 텍스트 열을 제거하려면 기능 해싱 모듈 뒤에 데이터 세트 모듈에서 열 선택 모듈을 추가해야 합니다. 해시 기능이 생성된 후에는 텍스트 열이 필요하지 않습니다.

    또는 메타데이터 편집 모듈을 사용하여 텍스트 열에서 기능 특성을 지울 수 있습니다.

또한 결과를 단순화하고 정확도를 높이기 위해 다음 텍스트 전처리 옵션을 사용하는 것이 좋습니다.

  • 단어 분리
  • 단어 제거 중지
  • 대/소문자 정규화
  • 문장 부호 및 특수 문자 제거
  • 형태소 분석.

개별 솔루션에 적용할 최적의 전처리 방법 집합은 도메인, 어휘 및 비즈니스 요구 사항에 따라 달라집니다. 데이터를 실험하여 가장 효과적인 사용자 지정 텍스트 처리 방법을 확인하는 것이 좋습니다.

텍스트 분석에 기능 해시를 사용하는 방법에 대한 예제는 Azure AI 갤러리를 참조하세요.

  • 뉴스 분류: 기능 해시를 사용하여 문서를 미리 정의된 범주 목록으로 분류합니다.

  • 유사한 회사: 위키백과 문서의 텍스트를 사용하여 회사를 분류합니다.

  • 텍스트 분류: 이 5부로 구성된 이 샘플은 Twitter 메시지의 텍스트를 사용하여 감정 분석을 수행합니다.

기술 정보

이 섹션에는 구현 정보, 팁, 질문과 대답이 포함되어 있습니다.

기능 해시를 사용하는 것 외에도 다른 메서드를 사용하여 텍스트에서 기능을 추출하는 것이 좋습니다. 예를 들면 다음과 같습니다.

  • 전처리 텍스트 모듈을 사용하여 맞춤법 오류와 같은 아티팩트 제거 또는 해시에 대한 텍스트 준비를 간소화합니다.
  • 핵심 구 추출을 사용하여 자연어 처리를 사용하여 구를 추출합니다.
  • 명명된 엔터티 인식을 사용하여 중요한 엔터티를 식별합니다.

Machine Learning Studio(클래식)는 기능 추출을 위해 기능 해싱 모듈을 사용하는 것을 안내하는 텍스트 분류 템플릿을 제공합니다.

구현 세부 정보

기능 해시 모듈은 murmurhash3이라는 인기 있는 오픈 소스 해시 함수를 사용하여 기능 단어를 메모리 내 인덱스로 해시하는 Vowpal Wabbit이라는 빠른 기계 학습 프레임워크를 사용합니다. 텍스트 입력을 정수에 매핑하는 암호화되지 않은 해시 알고리즘인 이 해시 함수는 키 무작위 분포에서 효율적으로 작동하므로 널리 사용됩니다. 암호화 해시 함수와 달리 악의적 사용자가 쉽게 되돌릴 수 있으므로 암호화 목적에 적합하지 않습니다.

해시는 차원을 줄이고 기능 가중치를 훨씬 빠르게 조회할 수 있도록 가변 길이 텍스트 문서를 같은 길이의 숫자 기능 벡터로 변환하는 데 사용됩니다.

각 해시 기능은 비트 수(k로 표시)와 매개 변수로 지정된 n-gram 수에 따라 하나 이상의 n-gram 텍스트 기능(유니그램 또는 개별 단어, bi-gram, tri-gram 등)을 나타냅니다. murmurhash v3(32비트 전용) 알고리즘을 사용하여 기계 아키텍처 부호 없는 단어에 기능 이름을 투영합니다. 이 알고리즘은 AND-ed(2^k)-1입니다. 즉, 해시된 값은 첫 번째 k 하위 비트까지 프로젝팅되고 나머지 비트는 0이 됩니다. 지정된 비트 수가 14이면 해시 테이블에 2개의14-1(또는 16,383개) 항목을 포함할 수 있습니다.

많은 문제의 경우 기본 해시 테이블(bitsize = 10)이 적절합니다. 그러나 학습 텍스트의 n-그램 어휘 크기에 따라 충돌을 방지하기 위해 더 많은 공간이 필요할 수 있습니다. 해시 비트 크기 매개 변수에 다른 비트 수를 사용하고 기계 학습 솔루션의 성능을 평가하는 것이 좋습니다.

예상 입력

Name Type Description
데이터 세트 데이터 테이블 입력 데이터 세트

모듈 매개 변수

Name 범위 Type 기본값 Description
대상 열 모두 ColumnSelection StringFeature 해시가 적용될 열을 선택합니다.
해시 비트 크기 [1;31] 정수 10 선택한 열을 해시할 때 사용할 비트 수를 입력합니다.
N그램 [0;10] 정수 2 해시 중에 생성된 N-그램 수를 지정합니다. 기본적으로는 유니그램과 바이그램이 모두 추출됩니다.

출력

Name Type Description
변환된 데이터 집합 데이터 테이블 해시된 열을 포함하는 출력 데이터 집합입니다.

예외

예외 설명
오류 0001 데이터 세트의 지정된 열 중 하나 이상을 찾을 수 없으면 예외가 발생합니다.
오류 0003 하나 이상의 입력이 null이거나 비어 있으면 예외가 발생합니다.
오류 0004 매개 변수가 특정 값 이하이면 예외가 발생합니다.
오류 0017 지정한 열 중 하나 이상의 형식이 현재 모듈에서 지원되지 않으면 예외가 발생합니다.

Studio(클래식) 모듈과 관련된 오류 목록은 Machine Learning 오류 코드를 참조하세요.

API 예외 목록은 MACHINE LEARNING REST API 오류 코드를 참조하세요.

추가 정보

Text Analytics

전체 모듈 목록