Python sklearn kitaplıklarını kullanıyorum. 150.000'den fazla ciro var.scipy.sparse ile sayma
Her satırın bir cümle için olduğu, her bir sütunun bir kelimeye karşılık geldiği ve her öğenin söz konusu cümledeki sözcük sayısı olan dizi benzeri bir nesneye ihtiyacım var.
Örneğin:
[ [1, 1, 1, 0]
, [0, 1, 1, 1] ]
ihtiyaç iki cümle olsaydı "köpek koştu" ve "çocuk koştu" (sütun sıralamasının bir önemi yoktur ve sütun atandığı bağlıdır hangi kelime)
Dizim seyrek olacaktır (her bir cümlede olası sözcüklerin bir kısmı olacaktır) ve bu yüzden scipy.sparse kullanıyorum.
def word_counts(texts, word_map):
w_counts = sp.???_matrix((len(texts),len(word_map)))
for n in range(0,len(texts)-1):
for word in re.findall(r"[\w']+", texts[n]):
index = word_map.get(word)
if index != None:
w_counts[n,index] += 1
return w_counts
...
nb = MultinomialNB() #from sklearn
words = features.word_list(texts)
nb.fit(features.word_counts(texts,words), classes)
Kaba matrisin en iyi hangisinin olacağını bilmek istiyorum.
Ben coo_matrix kullanarak çalıştı ama bir hata var: Ben COO için documentation baktı
TypeError: 'coo_matrix' object has no attribute '__getitem__'
ama çok tarafından karıştı aşağıdadır:
Sparse matrices can be used in arithmetic operations ...
Disadvantages of the COO format ... does not directly support: arithmetic operations
ben dok_matrix kullanılan ve o Çalıştı, ama bu durumun en iyi performans gösterip göstermediğini bilmiyorum.
Şimdiden teşekkürler.
+1 sadece CountVectorizer için CountVectorizer –
+1 teklif edecektim. –
Kabul edilen cevap, CountVectorizer'ın gerçek cevap olduğu için. (Belki de DictVectorizer da, ama henüz denemedim.) –