Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

wordEmbedding

단어를 벡터로 매핑하는 단어 임베딩 모델

설명

단어 임베딩은 단어집의 단어를 실수형 벡터로 매핑합니다(word2vec, GloVe 및 fastText 라이브러리를 통해 대중화됨).

벡터는 유사한 단어들이 유사한 벡터를 갖도록 단어의 의미 체계를 캡처합니다. 또한 어떤 임베딩은 "왕과 왕비의 관계는 남자와 여자의 관계와 같다"처럼 단어 사이의 관계도 캡처합니다. 벡터 형식에서 이 관계는 왕 – 남자 + 여자 = 여왕입니다.

생성

fastTextWordEmbedding을 사용하여 사전 훈련된 임베딩을 불러오거나, readWordEmbedding을 사용하여 파일로부터 임베딩을 읽어오거나, trainWordEmbedding을 사용하여 임베딩을 훈련해서 단어 임베딩을 만듭니다.

속성

모두 확장

단어 임베딩의 차원으로, 양의 정수로 지정됩니다.

예: 300

모델 내 고유한 단어로, string형 벡터로 지정됩니다.

데이터형: string

객체 함수

vec2word임베딩 벡터를 단어에 매핑
word2vec단어를 임베딩 벡터에 매핑하기
isVocabularyWord단어가 단어 임베딩 또는 인코딩에 포함되었는지 테스트
writeWordEmbedding단어 임베딩 파일 쓰기

예제

모두 축소

Text Analytics Toolbox™ Model for fastText English 16 Billion Token Word Embedding 지원 패키지를 다운로드하여 설치합니다.

명령줄에 fastTextWordEmbedding을 입력합니다.

fastTextWordEmbedding

Text Analytics Toolbox Model for fastText English 16 Billion Token Word Embedding 지원 패키지가 설치되어 있지 않으면, 필요한 지원 패키지로 연결되는 애드온 탐색기 링크를 함수에서 제공합니다. 지원 패키지를 설치하려면 링크를 클릭한 다음, 설치를 클릭하십시오. 명령줄에 emb = fastTextWordEmbedding을 입력하여 성공적으로 설치되었는지 확인합니다.

emb = fastTextWordEmbedding
emb = 

  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

필요한 지원 패키지가 설치되었으면 함수가 wordEmbedding 객체를 반환합니다.

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

emb = fastTextWordEmbedding
emb = 
  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

word2vec을 사용하여 단어 "Italy", "Rome" 및 "Paris"를 벡터에 매핑합니다.

italy = word2vec(emb,"Italy");
rome = word2vec(emb,"Rome");
paris = word2vec(emb,"Paris");

vec2word를 사용하여 벡터 italy - rome + paris를 단어에 매핑합니다.

word = vec2word(emb,italy - rome + paris)
word = 
"France"

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

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}

예제 단어 임베딩을 읽어옵니다. 이 모델은 Wikipedia의 텍스트를 분석하여 도출되었습니다.

filename = "exampleWordEmbedding.vec";
emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 50
    Vocabulary: ["utc"    "first"    "new"    "two"    "time"    "up"    "school"    "article"    "world"    "years"    "university"    "talk"    "many"    "national"    "later"    "state"    "made"    "born"    "city"    "de"    ...    ] (1x9999 string)

word2vecvec2word를 사용하여 단어 임베딩을 탐색합니다.

king = word2vec(emb,"king");
man = word2vec(emb,"man");
woman = word2vec(emb,"woman");
word = vec2word(emb,king - man + woman)
word = 
"queen"

단어 임베딩을 훈련시키고 텍스트 파일에 씁니다.

예제 데이터를 불러옵니다. 파일 sonnetsPreprocessed.txt에는 셰익스피어 소네트의 전처리된 버전이 들어 있습니다. 파일에는 한 줄에 하나씩 소네트가 들어 있으며 단어가 공백으로 구분되어 있습니다. sonnetsPreprocessed.txt에서 텍스트를 추출하고, 추출한 텍스트를 새 줄 문자에서 문서로 분할한 후 그 문서를 토큰화합니다.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

trainWordEmbedding을 사용하여 단어 임베딩을 훈련시킵니다.

emb = trainWordEmbedding(documents)
Training: 100% Loss: 2.64718  Remaining time: 0 hours 0 minutes.
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: ["thy"    "thou"    "love"    "thee"    "doth"    "mine"    "shall"    "eyes"    "sweet"    "time"    "nor"    "beauty"    "yet"    "art"    "heart"    "o"    "thine"    "hath"    "fair"    "make"    "still"    ...    ] (1x401 string)

단어 임베딩을 텍스트 파일에 씁니다.

filename = "exampleSonnetsEmbedding.vec";
writeWordEmbedding(emb,filename)

readWordEmbedding을 사용하여 단어 임베딩 파일을 읽어옵니다.

emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: ["thy"    "thou"    "love"    "thee"    "doth"    "mine"    "shall"    "eyes"    "sweet"    "time"    "nor"    "beauty"    "yet"    "art"    "heart"    "o"    "thine"    "hath"    "fair"    "make"    "still"    ...    ] (1x401 string)

버전 내역

R2017b에 개발됨