Tôi đang cố gắng sử dụng một trong các phương pháp học có giám sát của scikit-learning để phân loại các đoạn văn bản thành một hoặc nhiều danh mục. Chức năng dự đoán của tất cả các thuật toán tôi đã thử chỉ trả về một kết quả phù hợp.
Ví dụ, tôi có một đoạn văn bản:
"Theaters in New York compared to those in London"
Và tôi đã đào tạo thuật toán để chọn một vị trí cho mỗi đoạn văn bản tôi cung cấp cho nó.
Trong ví dụ trên, tôi muốn nó trả về New York
và London
, nhưng nó chỉ trả về New York
.
Có thể sử dụng scikit-learning để trả về nhiều kết quả không? Hoặc thậm chí trả lại nhãn với xác suất cao nhất tiếp theo?
Cảm ơn bạn đã giúp đỡ.
--- Cập nhật
Tôi đã thử sử dụng OneVsRestClassifier
nhưng tôi vẫn chỉ nhận được một tùy chọn trở lại cho mỗi đoạn văn bản. Dưới đây là mã mẫu tôi đang sử dụng
y_train = ('New York','London')
train_set = ("new york nyc big apple", "london uk great britain")
vocab = {'new york' :0,'nyc':1,'big apple':2,'london' : 3, 'uk': 4, 'great britain' : 5}
count = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2),vocabulary=vocab)
test_set = ('nice day in nyc','london town','hello welcome to the big apple. enjoy it here and london too')
X_vectorized = count.transform(train_set).todense()
smatrix2 = count.transform(test_set).todense()
base_clf = MultinomialNB(alpha=1)
clf = OneVsRestClassifier(base_clf).fit(X_vectorized, y_train)
Y_pred = clf.predict(smatrix2)
print Y_pred
Kết quả: ['New York' 'London' 'London']