doc2sequence
딥러닝을 위해 문서를 시퀀스로 변환
구문
설명
예제
문서를 단어 인덱스 시퀀스로 변환하기
공장 보고서 데이터를 불러와서 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}
입력 인수
emb
— 입력 단어 임베딩
wordEmbedding
객체
입력 단어 임베딩으로, wordEmbedding
객체로 지정됩니다.
enc
— 입력 단어 인코딩
wordEncoding
객체
입력 단어 인코딩으로, wordEncoding
객체로 지정됩니다.
documents
— 입력 문서
tokenizedDocument
배열
입력 문서로, tokenizedDocument
배열로 지정됩니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 각 이름과 값을 쉼표로 구분하고 Name
을 따옴표로 묶으십시오.
예: 'Length','shortest'
는 가장 짧은 시퀀스와 동일한 길이가 되도록 시퀀스를 자릅니다.
UnknownWord
— 알 수 없는 단어 동작
'discard'
(디폴트 값) | 'nan'
알 수 없는 단어 동작으로, 'UnknownWord'
와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.
'discard'
– 단어가 입력 맵에 없으면 해당 단어를 무시합니다.'nan'
– 단어가 입력 맵에 없으면NaN
값을 반환합니다.
팁
단어 임베딩으로 딥러닝 신경망을 훈련시키기 위해 시퀀스를 만드는 경우 'discard'
를 사용합니다. NaN
값이 있는 시퀀스를 사용하면 신경망을 통해 오류가 전파될 수 있으므로 유의하십시오.
PaddingDirection
— 채우기 방향
'left'
(디폴트 값) | 'right'
| 'none'
채우기 방향으로, 'PaddingDirection'
과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.
'left'
– 왼쪽에 시퀀스를 채웁니다.'right'
– 오른쪽에 시퀀스를 채웁니다.'none'
– 시퀀스를 채우지 않습니다.
팁
고차원 단어 임베딩을 사용하여 대규모 데이터 모음을 변환하는 경우 채우기를 수행하려면 대량의 메모리가 필요합니다. 함수가 너무 많은 채우기를 수행하지 않도록 하려면 'PaddingDirection'
옵션을 'none'
으로 설정하거나 'Length'
를 더 작은 값으로 설정하십시오.
PaddingValue
— 채우기 값
0 (디폴트 값) | 숫자형 스칼라
채우기 값으로, 'PaddingValue'
와 함께 숫자형 스칼라가 쉼표로 구분되어 지정됩니다. 시퀀스를 NaN
으로 채우면 신경망을 통해 오류가 전파될 수 있으므로 유의하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Length
— 시퀀스 길이
'longest'
(디폴트 값) | 'shortest'
| 양의 정수
시퀀스 길이로, 'Length'
와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.
'longest'
– 가장 긴 시퀀스와 동일한 길이가 되도록 시퀀스를 채웁니다.'shortest'
– 가장 짧은 시퀀스와 동일한 길이가 되도록 시퀀스를 자릅니다.양의 정수 – 지정된 길이가 되도록 시퀀스를 채우거나 자릅니다. 이 함수는 시퀀스의 오른쪽을 자릅니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
출력 인수
sequences
— 출력 시퀀스
셀형 배열
출력 시퀀스로, 셀형 배열로 반환됩니다.
단어 임베딩 입력의 경우 sequences
의 i번째 요소는 i번째 입력 문서에 대응되는 단어 벡터로 구성된 행렬입니다.
단어 인코딩 입력의 경우 sequences
의 i번째 요소는 i번째 입력 문서에 대응되는 단어 인코딩 인덱스로 구성된 벡터입니다.
팁
고차원 단어 임베딩을 사용하여 대규모 데이터 모음을 변환하는 경우 채우기를 수행하려면 대량의 메모리가 필요합니다. 함수가 너무 많은 채우기를 수행하지 않도록 하려면
'PaddingDirection'
옵션을'none'
으로 설정하거나'Length'
를 더 작은 값으로 설정하십시오.
버전 내역
R2018b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)