아마존 해왕성의 다국어 텍스트 속성을 인코딩하여 예측 모델 플래토 블록 체인 데이터 인텔리전스를 훈련시킵니다. 수직 검색. 일체 포함.

Amazon Neptune에서 다국어 텍스트 속성을 인코딩하여 예측 모델 훈련

아마존 넵튠 ML 는 머신 러닝(ML) 기능입니다. 아마존 해왕성 그래프 데이터를 정확하고 빠르게 예측하는 데 도움이 됩니다. 내부적으로 Neptune ML은 그래프 신경망(GNN)을 사용하여 그래프 구조와 노드/에지 속성을 동시에 활용하여 당면한 작업을 해결합니다. 기존 방법은 속성만 사용하고 그래프 구조는 사용하지 않거나(예: XGBoost, Neural Networks) 또는 속성 없이 그래프 구조만 사용합니다(예: node2vec, Label Propagation). 노드/에지 속성을 더 잘 조작하기 위해 ML 알고리즘은 데이터가 제대로 작동하는 숫자 데이터여야 하지만 데이터베이스의 원시 데이터는 원시 텍스트와 같은 다른 유형을 가질 수 있습니다. 이러한 다른 유형의 데이터를 사용하려면 원시 유형에서 숫자 데이터로 변환하는 특수 처리 단계가 필요하며 ML 결과의 품질은 이러한 데이터 변환의 품질에 크게 의존합니다. 문장과 같은 원시 텍스트는 변환하기 가장 어려운 유형 중 하나이지만, 최근 자연어 처리(NLP) 분야의 발전으로 여러 언어 및 다양한 길이의 텍스트를 처리할 수 있는 강력한 방법이 개발되었습니다.

버전 1.1.0.0부터 Neptune ML은 다음을 지원합니다. 다중 텍스트 인코더 (text_fasttext, text_sbert, text_word2vectext_tfidf)는 NLP의 최근 발전의 이점을 가져오고 다국어 텍스트 속성과 언어 및 텍스트 길이에 대한 추가 추론 요구 사항에 대한 지원을 가능하게 합니다. 예를 들어, 직업 추천 사용 사례에서 다른 국가의 직업 게시물은 다른 언어로 설명될 수 있으며 작업 설명의 길이는 상당히 다양합니다. 또한 Neptune ML은 자동 데이터의 텍스트 특성에 따라 최적의 인코딩 방법을 자동으로 선택하는 옵션입니다.

이 게시물에서는 각 텍스트 인코더의 사용법을 설명하고 장단점을 비교하며 작업 추천 작업에 적합한 텍스트 인코더를 선택하는 방법의 예를 보여줍니다.

텍스트 인코더란 무엇입니까?

텍스트 인코딩의 목표는 Neptune의 텍스트 기반 에지/노드 속성을 노드 분류 또는 링크 예측 작업을 위한 다운스트림 기계 학습 모델에 사용하기 위해 고정 크기 벡터로 변환하는 것입니다. 텍스트 피처의 길이는 많이 다를 수 있습니다. 단어, 구, 문장, 단락 또는 여러 문장이 있는 문서일 수도 있습니다(단일 속성의 최대 크기는 Neptune에서 55MB임). 또한 텍스트 기능은 다른 언어로 표시될 수 있습니다. 우리가 다음과 같이 정의하는 여러 다른 언어로 된 단어를 포함하는 문장이 있을 수도 있습니다. 코드 전환.

1.1.0.0 릴리스부터 Neptune ML을 사용하면 다양한 텍스트 인코더 중에서 선택할 수 있습니다. 각 인코더는 약간 다르게 작동하지만 Neptune의 텍스트 값 필드를 Neptune ML을 사용하여 GNN 모델을 구축하는 데 사용하는 고정 크기 벡터로 변환하는 동일한 목표를 가지고 있습니다. 새로운 인코더는 다음과 같습니다.

  • text_fasttext (신규) – 용도 빠른 텍스트 부호화. FastText는 효율적인 텍스트 표현 학습을 위한 라이브러리입니다. text_fasttext fastText가 지원하는 XNUMX개 언어(영어, 중국어, 힌디어, 스페인어 및 프랑스어) 중 하나만 사용하는 기능에 권장됩니다. 그만큼 text_fasttext 메소드는 선택적으로 max_length 문자열이 잘린 후 인코딩될 텍스트 속성 값의 최대 토큰 수를 지정하는 필드입니다. 토큰을 단어로 간주할 수 있습니다. 이렇게 하면 텍스트 속성 값에 긴 문자열이 포함된 경우 성능이 향상될 수 있습니다. max_length 지정되지 않은 경우 fastText는 문자열 길이에 관계없이 모든 토큰을 인코딩합니다.
  • text_sbert (신규) – BERT 문장 사용(스베르트) 인코딩 방법. SBERT는 문맥 표현 학습 모델인 BERT-Networks를 사용하는 일종의 문장 임베딩 방법입니다. text_sbert 언어가 지원되지 않는 경우 권장됩니다. text_fasttext. Neptune은 두 가지 SBERT 방법을 지원합니다. text_sbert128, 지정하기만 하면 기본값입니다. text_sberttext_sbert512. 이들 간의 차이점은 인코딩되는 텍스트 속성의 최대 토큰 수입니다. 그만큼 text_sbert128 인코딩은 처음 128개의 토큰만 인코딩하는 반면 text_sbert512 최대 512개의 토큰을 인코딩합니다. 결과적으로 사용 text_sbert512 보다 더 많은 처리 시간이 필요할 수 있습니다. text_sbert128. 두 방법 모두 다음보다 느립니다. text_fasttext.
  • text_word2vec -용도 워드투벡 원래 Google에서 텍스트를 인코딩하기 위해 게시한 알고리즘입니다. Word2Vec은 영어만 지원합니다.
  • text_tfidf – 빈도 역 문서 빈도라는 용어를 사용합니다(TF-IDF) 텍스트 인코딩을 위한 벡터라이저. TF-IDF 인코딩은 다른 인코딩이 지원하지 않는 통계 기능을 지원합니다. 다른 모든 노드 중 한 노드 속성에서 단어의 중요성 또는 관련성을 수량화합니다.

참고 text_word2vectext_tfidf 이전에 지원되었으며 새로운 방법 text_fasttexttext_sbert 이전 방법보다 권장됩니다.

다른 텍스트 인코더의 비교

다음 표는 지원되는 모든 텍스트 인코딩 옵션(text_fasttext, text_sberttext_word2vec). text_tfidf 는 모델 기반 인코딩 방법이 아니라 토큰(예: 단어)이 다른 노드 또는 가장자리의 텍스트 기능과 얼마나 관련이 있는지 평가하는 카운트 기반 측정이므로 포함하지 않습니다. text_tfidf 비교하려고. 우리는 사용하는 것이 좋습니다 text_tfidf 다른 모든 노드 또는 에지 속성 중에서 한 노드 또는 에지 속성에 있는 일부 단어의 중요도 또는 관련성을 수량화하려는 경우).

. . text_fasttext text_sbert text_word2vec
모델 기능 지원되는 언어 영어, 중국어, 힌디어, 스페인어, 프랑스어 50 개 이상의 언어 영어
다른 언어로 된 단어가 포함된 텍스트 속성을 인코딩할 수 있습니다. 아니 가능 아니
최대 길이 지원 최대 길이 제한 없음 최대 길이가 128 및 512인 텍스트 시퀀스를 인코딩합니다. 최대 길이 제한 없음
시간 비용 로딩중 약 10 초 약 2 초 약 2 초
추론 빠른 천천히 중급

다음 사용 팁에 유의하십시오.

  • 영어, 중국어, 힌디어, 스페인어 및 프랑스어로 된 텍스트 속성 값의 경우, text_fasttext 권장 인코딩입니다. 그러나 동일한 문장에 둘 이상의 언어로 된 단어가 포함된 경우는 처리할 수 없습니다. XNUMX개 언어 이외의 다른 언어의 경우 fastText 지원하다, 사용하다 text_sbert 부호화.
  • 예를 들어 120개 토큰보다 긴 속성 값 텍스트 문자열이 많은 경우 max_length 각 문자열의 토큰 수를 제한하는 필드 text_fasttext 인코딩합니다.

요약하자면 사용 사례에 따라 다음 인코딩 방법을 권장합니다.

  • 텍스트 속성이 지원되는 XNUMX개 언어 중 하나인 경우 다음을 사용하는 것이 좋습니다. text_fasttext 빠른 추론 때문입니다. text_fasttext 는 권장되는 선택이며 다음을 사용할 수도 있습니다. text_sbert 다음 두 가지 예외에서.
  • 텍스트 속성이 다른 언어로 되어 있는 경우 다음을 사용하는 것이 좋습니다. text_sbert 여러 언어로 된 단어를 포함하는 텍스트 속성을 인코딩할 수 있는 유일한 지원 방법이기 때문입니다.
  • 텍스트 속성이 지원되는 XNUMX개 언어 중 하나가 아닌 한 언어로 되어 있는 경우 다음을 사용하는 것이 좋습니다. text_sbert 50개 이상의 언어를 지원하기 때문입니다.
  • 텍스트 속성의 평균 길이가 128보다 긴 경우 다음을 사용하는 것이 좋습니다. text_sbert512 or text_fasttext. 두 방법 모두 더 긴 텍스트 시퀀스를 인코딩하는 데 사용할 수 있습니다.
  • 텍스트 속성이 영어로만 되어 있으면 다음을 사용할 수 있습니다. text_word2vec하지만 다음을 사용하는 것이 좋습니다. text_fasttext 빠른 추론을 위해.

사용 사례 데모: 작업 추천 작업

직업 추천 작업의 목표는 사용자가 이전 지원, 인구 통계 정보 및 작업 기록을 기반으로 지원할 작업을 예측하는 것입니다. 이 게시물은 사용 열린 Kaggle 데이터셋. 데이터 세트를 XNUMX노드 유형 그래프로 구성합니다. , 사용자시티.

직업은 제목, 설명, 요구 사항, 위치한 도시 및 주에 의해 특징지어집니다. 사용자는 전공, 학위 유형, 경력 수, 총 경력 년 수 등의 속성으로 설명됩니다. 이 사용 사례의 경우 직위, 직무 설명, 직무 요구 사항 및 전공이 모두 텍스트 형식입니다.

데이터세트에서 사용자는 다음 속성을 가집니다.

  • 주 정부 – 예: CA 또는 广东省(중국어)
  • 주요한 – 예: 인적 자원 관리 또는 Lic Cytura Fisica(스페인어)
  • 학위 유형 – 예: 학사, 석사, 박사 또는 없음
  • 작업 기록 수 – 예: 0, 1, 16 등
  • 총연수경력 – 예: 0.0, 10.0 또는 NAN

작업에는 다음과 같은 속성이 있습니다.

  • Title – 예: 행정 보조 또는 Lic Cultura Física(스페인어).
  • 상품 설명 – 예를 들어, "이 행정 보조 직위는 커뮤니케이션 분야에서 다양한 사무 및 행정 지원 기능을 수행하는 책임이 있습니다. ..." 설명의 평균 단어 수는 약 192.2개입니다.
  • 요구조건 니즈 – 예를 들어, “작업 요구 사항: 1. 세부 사항에 대한 주의; 2. 급변하는 환경에서 일할 수 있는 능력, 3. 인보이스 발행…
  • 주 정부: – 예: CA, NY 등.

노드 유형 시티 Washington DC 및 Orlando FL과 같이 각 노드에 대한 식별자만 있습니다. 다음 섹션에서는 다양한 텍스트 기능의 특성을 분석하고 다양한 텍스트 속성에 대해 적절한 텍스트 인코더를 선택하는 방법을 설명합니다.

다른 텍스트 인코더를 선택하는 방법

우리의 예를 들어, 주요한Title 속성은 여러 언어로 되어 있고 짧은 텍스트 시퀀스가 ​​있으므로 text_sbert 권장됩니다. 에 대한 샘플 코드 내보내기 매개변수 다음과 같다. 를 위해 text_sbert 유형, 다른 매개변수 필드가 없습니다. 여기서 우리는 선택합니다 text_sbert128 이외의 text_sbert512, 텍스트 길이가 128보다 상대적으로 짧기 때문입니다.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

XNUMXD덴탈의 상품 설명요구조건 니즈 속성은 일반적으로 긴 텍스트 시퀀스에 있습니다. 설명의 평균 길이는 약 192 단어로 최대 입력 길이보다 깁니다. text_sbert (128). 우리는 사용할 수 있습니다 text_sbert512하지만 추론 속도가 느려질 수 있습니다. 또한 텍스트는 단일 언어(영어)로 되어 있습니다. 따라서 우리는 다음을 권장합니다. text_fasttext 와 더불어 en 빠른 추론과 제한된 입력 길이로 인해 언어 값을 제공합니다. 에 대한 샘플 코드 내보내기 매개변수 다음과 같다. 그만큼 text_fasttext 인코딩은 다음을 사용하여 사용자 정의할 수 있습니다. 언어최대 길이. 그만큼 language 값이 필요하지만 max_length 선택 사항입니다.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

직업 추천 사용 사례에 대한 자세한 내용은 넵튠 노트북 튜토리얼.

데모를 위해 '관리 및 인적 자원'에서 석사 학위를 소지한 사용자 443931을 선택합니다. 사용자는 "인사(HR) 관리자", "HR Generalist", "Human Resources Manager", "Human Resources Administrator" 및 "Senior Payroll Specialist"라는 50가지 직무에 지원했습니다. 추천 작업의 성과를 평가하기 위해 사용자의 적용 작업(에지)의 10%(여기서는 "인사 관리자" 및 "인사(HR) 관리자 삭제)를 삭제하고 상위 예측을 시도합니다. 이 사용자가 지원할 가능성이 가장 큰 작업 XNUMX개.

작업 특징과 사용자 특징을 인코딩한 후 관계형 그래프 컨볼루션 네트워크(RGCN) 모델을 훈련하여 링크 예측 작업을 수행합니다. Neptune ML 모델을 교육하려면 데이터 처리, 모델 교육 및 엔드포인트 생성의 세 단계가 필요합니다. 추론 엔드포인트가 생성된 후 사용자 443931에 대한 권장 사항을 만들 수 있습니다. 사용자 10에 대해 예측된 상위 443931개 작업(즉, "HR Generalist", "Human Resources(HR) Manager", "Senior Payroll Specialist", "Human Resources Administrator”, “HR Analyst”, et al.)에서 삭제된 10개의 작업이 XNUMX개의 예측 중 하나임을 관찰했습니다.

결론

이 게시물에서는 Neptune ML에서 새로 지원되는 텍스트 인코더의 사용법을 보여주었습니다. 이러한 텍스트 인코더는 사용이 간편하고 여러 요구 사항을 지원할 수 있습니다. 요약해서 말하자면,

  • text_fasttext는 text_fasttext가 지원하는 XNUMX개 언어 중 하나만 사용하는 기능에 권장됩니다.
  • text_sbert는 text_fasttext가 지원하지 않는 텍스트에 권장됩니다.
  • text_word2vec는 영어만 지원하며 모든 시나리오에서 text_fasttext로 대체할 수 있습니다.

솔루션에 대한 자세한 내용은 GitHub 레포. 요구 사항을 충족하려면 그래프 데이터에 텍스트 인코더를 사용하는 것이 좋습니다. GNN 모델을 변경하지 않고 유지하면서 인코더 이름을 선택하고 일부 인코더 속성을 설정할 수 있습니다.


저자 소개

아마존 해왕성의 다국어 텍스트 속성을 인코딩하여 예측 모델 플래토 블록 체인 데이터 인텔리전스를 훈련시킵니다. 수직 검색. 일체 포함.장지아니 AWS AI Research and Education(AIRE)의 응용 과학자입니다. 그녀는 기계 학습 알고리즘, 특히 자연어 및 그래프 관련 문제를 사용하여 실제 응용 프로그램을 해결하는 데 일하고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습