문단 벡터의 PyTorch 구현 (doc2vec)

모든 모델은 T. Mikolov 등이 제안한 네가티브 샘플링 오브젝티브(Negative Sampling objective)를 최소화합니다. 이는 희소성 업데이트(sparse update) 범위를 제공합니다 (예 : 순방향과 역방향 통과에서 샘플링된 노이즈 단어의 벡터만 사용됨).

또한 모델에서 GPU를 학습하는 동안 CPU에서 병렬로 학습 데이터의 배치(노이즈 샘플링 포함)가 생성됩니다.

 

 

설치
  1. PyTorch를 설치 하십시오 (지시 사항을 보려면 링크를 클릭하십시오)

  2. paragraph-vectors 라이브러리를 설치하십시오

git clone https://github.com/inejc/paragraph-vectors.git cd paragraph-vectors pip install -e .

Note that installation in a virtual environment is the recommended way.

사용 방법

1. csv 파일을 데이터 디렉토리에 놓습니다. 각 행은 단일 문서를 나타내고 첫번째 열은 항상 텍스트를 포함해야합니다.

data/example.csv
—————-
“In the week before their departure to Arrakis, when all the final scurrying about had reached a nearly unbearable frenzy, an old crone came to visit the mother of the boy, Paul.”,…
“It was a warm night at Castle Caladan, and the ancient pile of stone that had served the Atreides family as home for twenty-six generations bore that cooled-sweat feeling it acquired before a change in the weather.”,…

2. 선택된 파라미터로 train.py 를 실행하십시오 (모델은 모델 디렉토리에 저장 됨 ).

python train.py start –data_file_name ‘example.csv’ –num_epochs 100 –batch_size 32 –context_size 4 –num_noise_words 5 –vec_dim 150 –lr 1e-4

파라미터
  • data_file_name: str    데이터 디렉토리에있는 파일의 이름

  • context_size: int    대상 단어의 이웃 크기의 절반 (즉, 좌우로 몇 개의 단어가 문맥으로 간주되는지)

  • num_noise_words: int    노이즈 분포에서 샘플링할 노이즈 단어의 수

  • vec_dim: int   학습할 벡터의 차원 (단락과 단어의 경우)

  • num_epochs: int   모델을 학습하는 반복 수 (예 : 모든 샘플이 학습 중 표시되는 횟수)

  • batch_size: int   단일 그라디언트 업데이트 당 샘플의 수

  • lr: float   SGD 최적화 알고리즘의 학습 속도 (0.9 nesterov momentum 사용)

  • model_ver: str, one of (‘dm’, ‘dbow’), default=’dm’   Q. V. Le 등이 제안한 모델 버전[5], 문장 및 문서의 분산된 표현. ‘dm’은 Distributed Memory의 약자, ‘dbow’는 Distributed Bag Of Words의 약자. 현재는 ‘dm’버전 만 구현

  • vec_combine_method: str, one of (‘sum’, ‘concat’), default=’sum’     ‘dm’모델에서 단락과 단어 벡터를 결합하는 방법. 현재 ‘sum’연산만 구현

  • save_all: bool, default=False    각 에포크 이후에 체크포인트를 저장할지 여부. false인 경우 가장 실적이 좋은 모델만 저장

  • max_generated_batches: int, default=5    미리 생성 된 일괄 처리의 최대 개수

  • num_workers: int, default=1   병렬로 실행할 배치 생성기 작업수. value를 -1로 설정하면 총 시스템 CPU 수가 사용됩니다. 일괄 처리의 순서는 num_workers> 1 일 때 현재 보장되지 않습니다 .

3. 훈련된 문단 벡터를 csv 파일로 내보내십시오. (벡터는 데이터 디렉토리에 저장됩니다 ).

python export_vectors.py start –data_file_name ‘example.csv’ –model_file_name ‘example_model.dm.sum_contextsize.5_numnoisewords.50_vecdim.300_batchsize.32_lr.0.010000_epoch.791_loss.0.057607.pth.tar’

파라미터
  • data_file_name: str
    학습중에 사용된 데이터 디렉토리의 파일 이름

  • model_file_name: str
    모델 디렉토리에 있는 파일명 (data_file_name 데이터세트에서 학습된 모델).

리소스

원문 깃허브 링크

https://github.com/inejc/paragraph-vectors