human
I am working on the file "Gensim - Word2Vec.ipynb".
The first task is:
Build Doc2Vec Model
Doc2Vec的參數

documents=None: 用來訓練的document，可以是list of TaggedDocument，或TaggedDocument generator
size=300: vector的維度
alpha=0.025: 初始的學習速度
window=8: context window的大小
min_count=5: 出現次數小於min_count的單字直接忽略
max_vocab_size=None: 限制vocabulary的大小，如果單字太多，就忽略最少見的單字，預設為無限制
sample=0: subsampling，隨機刪除機率小於sample的單字，兼具擴大context windows與減少stopword的功能
seed=1: 隨機產生器的random seed
workers=1: 在多核心的系統上，要用幾個核心來train
min_alpha=0.0001: 學習速度最後收斂的最小值
hs=1: 1表示用hierarchical soft-max，0表示用negative sampling
negative=0: 表示使用幾組negative sample來訓練
dbow_words=0: 1表示同時訓練出word-vector(用skip-gram)及doc-vector(用DBOW)，0表示只訓練doc-vector
dm=1: 1表示用distributed memory(PV-DM)來訓練，0表示用distributed bag-of-word(PV-DBOW)來訓練
dm_concat=0: 1表示不要sum/average而用concatenation of context vectors，0表示用sum/average。使用concatenation會產生較大的model，而且輸入的vector長度會變長
dm_mean=0: 在使用DBOW而且dm_concat=0的前提下，0表示使用sum作為hidden layer，1表示使用mean作為hidden layer
dm_tag_count=1: 當dm_concat=1時，預期每個document有幾個document tags
trim_rule=None: None表示小於min_count的單字會被忽略，也可以指定一個function(word, count, min_count)，這個function的傳回值有三種，util.RULE_DISCARD、util.RULE_KEEP、util.RULE_DEFAULT。這個參數會影響dictionary的生成
Can you write Python code for it?
 Can you provide a the Python code you requested?
assistant
#Here is the Python code you requested.

from gensim.models.doc2vec import Doc2Vec, TaggedDocument

class PatentDocGenerator(object):
    def __init__(self, filename):
        self.filename = filename
        
    def __iter__(self):
        f = codecs.open(self.filename, 'r', 'UTF-8')
        for line in f:
            text, appnum = docs_out(line)
            yield TaggedDocument(text.split(), appnum.split())

doc = PatentDocGenerator('/share/USPatentData/tokenized_appDate_2013/2013USPTOPatents_by_skip_1.txt.tokenized')
%timeit model_d2v = Doc2Vec(doc, size=200, window=8, sample=1e-5, hs=0, negative=5)

doc = PatentDocGenerator('/share/USPatentData/tokenized_appDate_2013/2013USPTOPatents_by_skip_1.txt.tokenized')
model_d2v = Doc2Vec(doc, size=200, window=8, sample=1e-5, hs=0, negative=5)

model_d2v.docvecs.most_similar(['20140187118'])

m = Doc2Vec(size=200, window=8, sample=1e-5, hs=0, negative=5)

m.build_vocab(doc)

m.train(doc)

m.docvecs.most_similar(['20140187118'])