2017-02-15 11 views
3

나는 gensim의 Doc2Vec을 가지고 놀고 있는데, stackexchange 덤프를 분석하여 질문의 의미 론적 유사성을 분석하여 중복을 식별합니다.Doc2Vec : 문장 및 문서 차별화

Doc2Vec-Tutorial의 자습서는 입력을 태그가 지정된 문장으로 설명합니다.

그러나 원래의 논문 : Doc2Vec-Paper은이 방법을 사용하여 단락/문서의 고정 길이 벡터를 추론 할 수 있다고 주장합니다.

누군가이 문맥에서 문장과 문서의 차이점을 설명하고 단락 벡터를 추론하는 방법을 설명 할 수 있습니까?

질문이 때로는 여러 문장으로 확장 될 수 있으므로 훈련 중에 나는 같은 질문에서 동일한 태그에서 나오는 문장을 줄 것이라고 생각하지만 보이지 않는 질문에 대해서는 어떻게해야합니까?

그리고이 노트북을 Doc2Vec-Notebook

훈련 및 TEST 문서에 벡터를 훈련 것으로 보인다는 사람이 뒤에있는 이론적 근거를 설명 할 수와 나는 같은 일을해야합니까?

답변

1

Gensim의 Doc2Vec은 wordstags 속성을 모두 가진 예제 TaggedDocument 클래스와 동일한 개체 모양의 텍스트 예제를 제공해야합니다.

words은 텍스트의 일련의 문자열 토큰입니다. 단 하나의 문장이나 단락 또는 긴 문서 일 수 있습니다. 이는 사용자의 책임입니다.

tags은 텍스트에서 학습해야하는 일반 int 또는 문자열 토큰과 같은 태그의 목록으로, 해당 텍스트의 이름을 지정하는 역할을합니다. 같은 정수 단조 0부터 증가 (그래서 첫 번째 TaggedDocument 그냥 [0]tags, 다음 [1] 등있을 수 있습니다)

를로 - 원래 '단락 벡터'논문에서, 그들은 각각의 텍스트 만의 고유 ID가 있었다 이 알고리즘은 문장/단락/문서 등이 무엇인지 알지 못하는 가운데 텍스트 덩어리에서 작동합니다. (Doc2Vec의 목적을 위해 모든 문서를 고려하십시오. 사용자가 코퍼스에서 올바른 '문서'유형을 결정해야합니다.) 토큰 화가 문장 사이의 기간과 같은 구두점을 독립형 토큰으로 유지하는 경우조차도 일반적입니다 .

추론되어야 필수 파라미터 doc_words을 취하는 방법 infer_vector() 통해 발생리스트 오브 토큰 스트링 중 단지 트레이닝 텍스트 words로서 공급 된 것들 등이 포함된다.

유추 한 텍스트에는 태그를 입력하지 않아도됩니다. Doc2Vec는 모델에서 습득 한 관계 내에서 텍스트를 잘 맞추는 원시 벡터를 다시 제공합니다. 즉, 벡터는 대량의 훈련 중에 배운 벡터 및 내부 모델 가중치가 훈련 텍스트의 단어를 예측할 때와 같은 방식으로 텍스트의 단어를 예측할 때 유용합니다.

많은 사람들이 옵션 steps 매개 변수를 증가시켜 추론 결과를 얻습니다. (아마도 alpha을 시작하는 추론을 대량 교육 시작 알파, 0.025에서 0.05와 비슷하게 줄임)

doc2vec-IMDB 데모 노트북은 원래의 단락 벡터 보고서에서 실험 중 하나를 재현하려고 시도 했으므로 여기에 설명 된 내용과 저자 (Mikolov)가 한 번 발표 한 데모 스크립트를 따르고 있습니다. 텍스트 모델링을 개선하기 위해 교육 시간에 '테스트'문서 (타겟 라벨/알려진 정서가 없음)가 여전히 사용 가능할 수 있으므로, 관리자가 지정되지 않은 Doc2Vec 교육 중에 원시 텍스트를 포함하는 것이 합리적 일 수 있습니다. (해당 상표는 doc-vectors를 사용하는 분류자를 훈련 할 때 이 아니고이 사용됩니다.)

(현재 2017 년 2 월에 doc2vec-IMDB 데모 노트는 오래된 것입니다 현재 gensim Doc2Vec 기본값 인 & 모범 사례와 비교할 때 - 특히 모델에 올바른 명시 적 iter=1 값이 부여되어 나중에 수동 루프를 수행 할 수 없으며 train()은 적절한 수의 교육 과정 만 수행 할 수 있습니다.