2016-04-27 24 views
0

追加簡單的循環,我希望得到一個循環,所以不是我寫的代碼,例如:可以用Python

tfidf = vectorizer.fit_transform([ data[0]['body'] , data[1]['body'] , data[2]['body'] , data[3]['body'] .... ]) 

我把它在一個循環。到目前爲止,我已經嘗試過:

for i in range(len(data) - 1): 
    tfidf = vectorizer.fit_transform([ append(data[i]['body']) , data[i+1]['body']) ]) 

有關如何使其工作的任何想法?我收到以下錯誤:

name 'append' is not defined

+1

'append()'必須在列表上調用,它不作爲全局作用域函數存在。 –

回答

1

我想你想從json數據中提取'body'內容,並有一個文本元素列表,然後將它傳遞給特徵提取器(確保你已經預處理了文本之前)。

試試這個:

tfidf = vectorizer.fit_transform([d['body'] for d in data]) 

或者,如果是比較清楚的話,你可以先創建列表,然後將它傳遞給函數:

bodies = [d['body'] for d in data] 
tfidf = vectorizer.fit_transform(bodies) 

希望它能幫助:)

快樂編碼!

P.D:我沒有測試代碼,但我認爲這個想法很清楚。

+0

很好的回答@Salias!我看起來非常好,你是指通過處理之前的文本嗎? –

+1

如果你想提取你的集合的tf-idf矩陣,你應該已經刪除了停用詞,標點符號等......之前。否則,你將會得到一個非常嘈雜的矩陣,其中含有「to」或「and」這樣的無意義詞彙是最重要的,因此也是最重要的。預處理過濾器取決於您想要完成的任務。看看https://www.researchgate.net/publication/273127322_Preprocessing_Techniques_for_Text_Mining – Salias

1

您需要在列表中調用append()。例如MyList.append(element)

+0

是的,我試圖定義一個列表之前,但vectorizer.fit_transform不允許它....任何其他的選擇? –