sample collection = 
[['', 'test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'], 
['apple', 1, 1, 1, 1], 
['banana', 1, 1, 0, 0], 
['lemon', 1, 0, 2, 1]]

Dalam persiapan perhitungan tf-idf, saya ingin mengumpulkan jumlah 'hits' setiap baris alias, jumlah kali tidak ada nol.

Saya telah mencoba yang berikut ini tetapi saya macet:

def n_calc(frequency_matrix):
    non_zero_term_frequencies = []
    for list_ in sample_collection:
        for value in list_:
            if value != 0.0:
                non_zero_term_frequencies += 1
            else:
                pass

idf_calc(sample_collection)

Keluaran yang diinginkan:

non_zero_term_frequencies: [4, 2, 3]
1
Lana_Del_Neigh 30 Januari 2020, 20:50

2 jawaban

Jawaban Terbaik

Ini dapat dicapai seperti ini:

non_zero_term_frequencies = []
for list_ in frequency_matrix[1:]:
    non_zero = len(list_[1:]) \
               - len([x for x in list_ if x == 0])
    non_zero_term_frequencies.append(non_zero)

1
revliscano 30 Januari 2020, 18:10

Gunakan pemahaman daftar, ini seharusnya berfungsi:

counts = [
    sum(1 if value else 0 for value in line[1:]) for line in collection[1:]
]

print(counts)
>>> [4, 2, 3]
4
Marcos 30 Januari 2020, 18:04