2017-04-27 9 views
1

Tensorflow 코드에 사전에 포함 된 Word2Vec (또는 Glove) 포함을로드하려고 시도하지만 많은 예제를 찾을 수 없어 일부 문제가 있습니다. 문제는 내가 이해하는 임베딩 매트릭스를 가져오고로드하는 것이 아니라 단어 ID를 찾는 것입니다. 현재 https://ireneli.eu/2017/01/17/tensorflow-07-word-embeddings-2-loading-pre-trained-vectors/의 코드를 사용하고 있습니다. 먼저, 임베딩 행렬이로드됩니다 (이해). 이것은 작동하고 나에게 단어 ID의 목록을 제공Pretrained Word2Vec Tensorflow에 포함하기

vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length) 
#fit the vocab from glove 
pretrain = vocab_processor.fit(vocab) 
#transform inputs 
x = np.array(list(vocab_processor.transform(your_raw_input))) 

하지만이 맞다면 나도 몰라 : 은 그런 어휘 프로세서는 워드 ID 목록에 문장 X를 변환하는 데 사용됩니다. 가장 괴롭히는 것은 어휘 처리기가 방금 읽은 삽입에서 올바른 단어 ID를 얻는 방법에 대한 질문입니다 (그렇지 않으면 삽입의 결과가 잘못 될 수 있기 때문에). 적합 단계는이 작업을 수행합니까?

다른 방법이 있습니다. 어떻게이 조회를 수행합니까?

감사합니다! 올리버

답변

1

예는 fit 단계는 vocab 배열의 vocab_processor인덱스 (1부터) 각 단어를 말한다. transform은이 조회를 역순으로 바꾸어 단어에서 색인을 생성하고 0을 사용하여 출력을 max_document_size에 채 웁니다.

현재 짧은 예제에서 볼 수

vocab_processor = learn.preprocessing.VocabularyProcessor(5) 
vocab = ['a', 'b', 'c', 'd', 'e'] 
pretrain = vocab_processor.fit(vocab) 

pretrain == vocab_processor 
# True 

np.array(list(pretrain.transform(['a b c', 'b c d', 'a e', 'a b c d e']))) 

# array([[1, 2, 3, 0, 0], 
#  [2, 3, 4, 0, 0], 
#  [1, 5, 0, 0, 0], 
#  [1, 2, 3, 4, 5]]) 
# 
+0

확인을 두 번 게시물을 읽은 후, 나는 생각이있어. w2v 또는 grove에서 삽입 행렬을 읽을 때 데이터 행렬과 단어 목록 (이 경우에는 vocab)이 표시되며이 vocab에 맞게 vocab_processor를 사용하면 트릭을 수행 할 수 있습니다. –