Tôi đang sử dụng thư viện sklearn của Python. Tôi có hơn 150.000 câu.Đếm với scipy.sparse
Tôi cần một đối tượng giống như mảng, trong đó mỗi hàng là một câu, mỗi cột tương ứng với một từ và mỗi phần tử là số từ trong câu đó.
Ví dụ: Nếu hai câu là "Con chó chạy" và "Cậu bé chạy", tôi cần
[ [1, 1, 1, 0]
, [0, 1, 1, 1] ]
(thứ tự của các cột là không thích hợp, và phụ thuộc vào cột được gán cho từ nào)
Mảng của tôi sẽ thưa thớt (mỗi câu sẽ có một phần nhỏ các từ có thể) và vì vậy tôi đang sử dụng scipy.sparse.
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)
Tôi muốn biết ma trận thưa thớt nào là tốt nhất.
tôi đã cố gắng sử dụng coo_matrix nhưng có một lỗi:
TypeError: 'coo_matrix' object has no attribute '__getitem__'
Tôi nhìn documentation cho COO nhưng đã rất bối rối bởi những điều sau:
Sparse matrices can be used in arithmetic operations ...
Disadvantages of the COO format ... does not directly support: arithmetic operations
tôi đã sử dụng dok_matrix, và rằng đã làm việc, nhưng tôi không biết điều này có thực hiện tốt nhất trong trường hợp này hay không.
Xin cảm ơn trước.
1 tôi đã chỉ cần đi để đề xuất CountVectorizer –
1 cho CountVectorizer –
câu trả lời chấp nhận vì CountVectorizer là câu trả lời thực sự ở đây. (Có lẽ DictVectorizer quá, nhưng tôi chưa thử nó.) –