2016-12-19 53 views
0

我學習從gensimDoc2Vec模型和如下使用它:Gensim Doc2Vec異常AttributeError的:「STR」對象沒有屬性「單詞」

class MyTaggedDocument(object): 
    def __init__(self, dirname): 
     self.dirname = dirname 

    def __iter__(self): 
     for fname in os.listdir(self.dirname): 
      with open(os.path.join(self.dirname, fname),encoding='utf-8') as fin: 
       print(fname) 
       for item_no, sentence in enumerate(fin): 
        yield LabeledSentence([w for w in sentence.lower().split() if w in stopwords.words('english')], [fname.split('.')[0].strip() + '_%s' % item_no]) 
sentences = MyTaggedDocument(dirname) 
model = Doc2Vec(sentences,min_count=2, window=10, size=300, sample=1e-4, negative=5, workers=7) 

輸入dirname是具有目錄路徑,用於爲了簡單起見,每個文件僅包含兩個文件,其中包含超過100行。我得到以下異常。

Output

而且,與print發言中,我可以看到迭代器遍歷目錄的6倍。這是爲什麼?

任何形式的幫助,將不勝感激。

+0

有一件事,你不想要不停用字?現在你的句子只包含停用詞 – datawrestler

+0

是的,這是一個錯誤,我糾正它,但仍然存在相同的問題。 –

回答

0

它看起來像文本示例對象中的一個,這應該被形如TaggedDocument(具有wordstags性質,以前稱爲LabeledSentence),是某種純字符串來代替。您是否100%確定截圖中的錯誤是由您所包含的可迭代代碼生成的? (這裏的代碼看起來像它只能發出接受LabeledSentece對象。)

您所提供的語料庫可迭代便讀取一次做它發現的所有字/標籤,然後再多次進行訓練的初始掃描。 iter參數控制了多少次,默認值(在最近版本的gensim中)爲5,所以初始掃描加5次訓練通過等於總共6次迭代。 (10次或更多的迭代與Doc2Vec常見)。

相關問題