我有一個帶有5個文檔的文本語料庫,每個文檔之間用/ n分隔。我想爲文檔中的每個單詞提供一個id並計算其各自的tfidf
分數。 例如,假設我們有一個名爲「corpus.txt」文本語料庫如下: -將文本語料庫轉換爲帶有vocabulary_id和tfidf分數的文本文檔
「堆棧 過流 文本量化scikit 蟒蛇SciPy的稀疏CSR」 在計算使用
mylist =list("corpus.text")
vectorizer= CountVectorizer
x_counts = vectorizer_train.fit_transform(mylist)
tfidf_transformer = TfidfTransformer()
x_tfidf = tfidf_transformer.fit_transform(x_counts)
的TFIDF
輸出是
(0,12) 0.1234 #for 1st document
(1,8) 0.3456 #for 2nd document
(1,4) 0.8976
(2,15) 0.6754 #for third document
(2,14) 0.2389
(2,3) 0.7823
(3,11) 0.9897 #for fourth document
(3,13) 0.8213
(3,5) 0.7722
(3,6) 0.2211
(4,7) 0.1100 # for fifth document
(4,10) 0.6690
(4,2) 0.0912
(4,9) 0.2345
(4,1) 0.1234
我轉換這個scipy.sparse.csr
矩陣成列表的列表刪除的文檔ID,並且k eeping僅使用vocabulary_id及其相應tfidf
得分:
m = x_tfidf.tocoo()
mydata = {k: v for k, v in zip(m.col, m.data)}
key_val_pairs = [str(k) + ":" + str(v) for k, v in mydata.items()]
但問題是,我正在其中vocabulary_id及其相應tfidf
分數以升序排列,沒有任何關於文件的輸出。
例如,對於上面給出的語料庫我的電流輸出(我丟到使用文本文件JSON)看起來像:
1:0.1234
2:0.0912
3:0.7823
4:0.8976
5:0.7722
6:0.2211
7:0.1100
8:0.3456
9:0.2345
10:0.6690
11:0.9897
12:0.1234
13:0.8213
14:0.2389
15:0.6754
,而我會想我的文本文件,要像如下:
12:0.1234
8:0.3456 4:0.8976
15:0.1234 14:0.2389 3:0.7823
11:0.9897 13:0.8213 5:0.7722 6:0.2211
7:0.1100 10:0.6690 2:0.0912 9:0.2345 1:0.1234
任何想法如何完成它?
我已經回答了你的問題,希望他會lp你! –