Main Content

doc2sequence

딥러닝을 위해 문서를 시퀀스로 변환

설명

예제

sequences = doc2sequence(enc,documents)는 주어진 단어 인코딩 enc에 따라 documents 내 단어의 숫자형 인덱스로 구성된 셀형 배열을 반환합니다. sequences의 각 요소는 대응되는 문서 내 단어의 인덱스로 구성된 벡터입니다.

예제

sequences = doc2sequence(emb,documents)는 주어진 단어 임베딩 emb에 따라 documents 내 단어의 임베딩 벡터로 구성된 셀형 배열을 반환합니다. sequences의 각 요소는 대응되는 문서 내 단어의 임베딩 벡터로 구성된 행렬입니다.

예제

sequences = doc2sequence(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 추가로 지정합니다.

예제

모두 축소

공장 보고서 데이터를 불러와서 tokenizedDocument 배열을 만듭니다.

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
documents = tokenizedDocument(textData);

단어 인코딩을 만듭니다.

enc = wordEncoding(documents);

문서를 단어 인덱스 시퀀스로 변환합니다.

sequences = doc2sequence(enc,documents);

처음 10개 시퀀스의 크기를 표시합니다. 각 시퀀스는 1xS 벡터입니다. 여기서 S는 시퀀스의 단어 인덱스 수입니다. 시퀀스가 채워지므로 S는 상수입니다.

sequences(1:10)
ans=10×1 cell array
    {[           0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10]}
    {[  0 0 0 0 0 0 11 12 13 14 15 2 16 17 18 19 10]}
    {[    0 0 0 0 0 0 20 2 21 22 7 23 24 25 7 26 10]}
    {[        0 0 0 0 0 0 0 0 0 0 0 27 28 6 7 18 10]}
    {[        0 0 0 0 0 0 0 0 0 0 0 0 29 30 7 31 10]}
    {[    0 0 0 0 0 0 0 32 33 6 7 34 35 36 37 38 10]}
    {[      0 0 0 0 0 0 0 0 0 39 40 36 41 6 7 42 10]}
    {[    0 0 0 0 0 0 0 0 43 44 22 45 46 47 7 48 10]}
    {[      0 0 0 0 0 0 0 0 0 0 49 50 17 7 51 48 10]}
    {[0 0 0 0 52 8 53 36 54 55 56 57 58 59 22 60 10]}

사전 훈련된 단어 임베딩을 사용하여 토큰화된 문서로 구성된 배열을 단어 벡터 시퀀스로 변환합니다.

fastTextWordEmbedding 함수를 사용하여 사전 훈련된 단어 임베딩을 불러옵니다. 이 함수를 사용하려면 Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding 지원 패키지가 필요합니다. 이 지원 패키지가 설치되어 있지 않으면 함수에서 다운로드 링크를 제공합니다.

emb = fastTextWordEmbedding;

공장 보고서 데이터를 불러와서 tokenizedDocument 배열을 만듭니다.

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
documents = tokenizedDocument(textData);

doc2sequence를 사용하여 문서를 단어 벡터 시퀀스로 변환합니다. 기본적으로 doc2sequence 함수는 시퀀스의 왼쪽을 채워서 동일한 길이로 만듭니다. 고차원 단어 임베딩을 사용하여 대규모 문서 모음을 변환하는 경우 채우기를 수행하려면 대량의 메모리가 필요합니다. 함수가 데이터를 채우지 않도록 하려면 'PaddingDirection' 옵션을 'none'으로 설정하십시오. 또는 'Length' 옵션을 사용하여 채우는 양을 제어할 수 있습니다.

sequences = doc2sequence(emb,documents,'PaddingDirection','none');

처음 10개 시퀀스의 크기를 표시합니다. 각 시퀀스는 DxS 행렬입니다. 여기서 D는 임베딩 차원이고 S는 시퀀스의 단어 벡터 수입니다.

sequences(1:10)
ans=10×1 cell array
    {300×10 single}
    {300×11 single}
    {300×11 single}
    {300×6  single}
    {300×5  single}
    {300×10 single}
    {300×8  single}
    {300×9  single}
    {300×7  single}
    {300×13 single}

사전 훈련된 단어 임베딩을 사용하여 문서 모음을 단어 벡터 시퀀스로 변환하고 이 시퀀스를 지정된 길이로 채우거나 자릅니다.

사전 훈련된 단어 임베딩을 fastTextWordEmbedding을 사용하여 불러옵니다. 이 함수를 사용하려면 Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding 지원 패키지가 필요합니다. 이 지원 패키지가 설치되어 있지 않으면 함수에서 다운로드 링크를 제공합니다.

emb = fastTextWordEmbedding;

공장 보고서 데이터를 불러와서 tokenizedDocument 배열을 만듭니다.

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
documents = tokenizedDocument(textData);

문서를 단어 벡터 시퀀스로 변환합니다. 시퀀스의 길이가 100이 되도록 자르거나 왼쪽을 채웁니다.

sequences = doc2sequence(emb,documents,'Length',100);

처음 10개 시퀀스의 크기를 표시합니다. 각 시퀀스는 D×S 행렬입니다. 여기서 D는 임베딩 차원이고 S는 시퀀스의 단어 벡터 수(시퀀스 길이)입니다. 시퀀스 길이가 지정되어 있으므로 S는 상수입니다.

sequences(1:10)
ans=10×1 cell array
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}

입력 인수

모두 축소

입력 단어 임베딩으로, wordEmbedding 객체로 지정됩니다.

입력 단어 인코딩으로, wordEncoding 객체로 지정됩니다.

입력 문서로, tokenizedDocument 배열로 지정됩니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 각 이름과 값을 쉼표로 구분하고 Name을 따옴표로 묶으십시오.

예: 'Length','shortest'는 가장 짧은 시퀀스와 동일한 길이가 되도록 시퀀스를 자릅니다.

알 수 없는 단어 동작으로, 'UnknownWord'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'discard' – 단어가 입력 맵에 없으면 해당 단어를 무시합니다.

  • 'nan' – 단어가 입력 맵에 없으면 NaN 값을 반환합니다.

단어 임베딩으로 딥러닝 신경망을 훈련시키기 위해 시퀀스를 만드는 경우 'discard'를 사용합니다. NaN 값이 있는 시퀀스를 사용하면 신경망을 통해 오류가 전파될 수 있으므로 유의하십시오.

채우기 방향으로, 'PaddingDirection'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'left' – 왼쪽에 시퀀스를 채웁니다.

  • 'right' – 오른쪽에 시퀀스를 채웁니다.

  • 'none' – 시퀀스를 채우지 않습니다.

고차원 단어 임베딩을 사용하여 대규모 데이터 모음을 변환하는 경우 채우기를 수행하려면 대량의 메모리가 필요합니다. 함수가 너무 많은 채우기를 수행하지 않도록 하려면 'PaddingDirection' 옵션을 'none'으로 설정하거나 'Length'를 더 작은 값으로 설정하십시오.

채우기 값으로, 'PaddingValue'와 함께 숫자형 스칼라가 쉼표로 구분되어 지정됩니다. 시퀀스를 NaN으로 채우면 신경망을 통해 오류가 전파될 수 있으므로 유의하십시오.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

시퀀스 길이로, 'Length'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'longest' – 가장 긴 시퀀스와 동일한 길이가 되도록 시퀀스를 채웁니다.

  • 'shortest' – 가장 짧은 시퀀스와 동일한 길이가 되도록 시퀀스를 자릅니다.

  • 양의 정수 – 지정된 길이가 되도록 시퀀스를 채우거나 자릅니다. 이 함수는 시퀀스의 오른쪽을 자릅니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

출력 인수

모두 축소

출력 시퀀스로, 셀형 배열로 반환됩니다.

단어 임베딩 입력의 경우 sequences의 i번째 요소는 i번째 입력 문서에 대응되는 단어 벡터로 구성된 행렬입니다.

단어 인코딩 입력의 경우 sequences의 i번째 요소는 i번째 입력 문서에 대응되는 단어 인코딩 인덱스로 구성된 벡터입니다.

  • 고차원 단어 임베딩을 사용하여 대규모 데이터 모음을 변환하는 경우 채우기를 수행하려면 대량의 메모리가 필요합니다. 함수가 너무 많은 채우기를 수행하지 않도록 하려면 'PaddingDirection' 옵션을 'none'으로 설정하거나 'Length'를 더 작은 값으로 설정하십시오.

버전 내역

R2018b에 개발됨