Użyj scikit-nauczyć się klasyfikować do wielu kategorii
Próbuję użyć jednej z nadzorowanych metod nauki scikit-learn, aby sklasyfikować fragmenty tekstu w jedną lub więcej kategorii. Funkcja przewidywania wszystkich algorytmów, które próbowałem, po prostu zwraca jedno dopasowanie.
Na przykład mam fragment tekstu:
<code>"Theaters in New York compared to those in London" </code>
Wyszkoliłem algorytm, aby wybrać miejsce dla każdego fragmentu tekstu, który go zasilam.
W powyższym przykładzie chciałbym, aby powróciłNew York
iLondon
, ale to tylko powracaNew York
.
Czy możliwe jest użycie scikit-learn do zwracania wielu wyników? Lub nawet zwrócić etykietę z następnym najwyższym prawdopodobieństwem?
Dzięki za pomoc.
---Aktualizacja
Próbowałem użyćOneVsRestClassifier
ale wciąż otrzymuję tylko jedną opcję z powrotem na każdy fragment tekstu. Poniżej znajduje się przykładowy kod, którego używam
<code>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 </code>
Wynik: [„Nowy Jork” „Londyn” „Londyn”]