Wie viel Zeit brauchen Scikit-Klassifikatoren, um zu klassifizieren?

10

Ich plane, einen SVM-Klassifikator (Scikit Linear Support Vector Machine) für die Textklassifizierung auf einem Korpus zu verwenden, der aus 1 Million beschrifteten Dokumenten besteht. Was ich vorhabe, ist, wenn ein Benutzer ein Schlüsselwort eingibt, der Klassifizierer es zuerst in eine Kategorie klassifiziert und dann eine nachfolgende Abfrage zum Abrufen von Informationen in den Dokumenten dieser Kategoriekategorie erfolgt. Ich habe ein paar Fragen:

  1. Wie bestätige ich, dass die Klassifizierung nicht viel Zeit in Anspruch nimmt? Ich möchte nicht, dass Benutzer Zeit darauf warten müssen, dass eine Klassifizierung abgeschlossen ist, um bessere Ergebnisse zu erzielen.
  2. Ist die Verwendung der Python-Scikit-Bibliothek für Websites / Webanwendungen dafür geeignet?
  3. Weiß jemand, wie Amazon oder Flipkart Benutzerabfragen klassifizieren, oder verwenden sie eine völlig andere Logik?
user3498
quelle
Sie können alle Schlüsselwörter vorher klassifizieren und dann einfach die Kategorie aus dem Index ziehen.
Freund
@ffriend scheint eine Antwort auf eine Wortabfrage zu sein. Aber wenn die Suchabfrage aus mehr Wörtern oder Wortkombinationen besteht, muss ich einen Index für alle Kombinationen erstellen !!!
user3498
1
SVC ist schnell. Wenn Sie es also für die Abfrageklassifizierung in einer Anwendung mit mittlerer Last verwenden möchten, funktioniert es. In den meisten Fällen ist die Klassifizierung nach einem einzelnen (oder sogar mehreren Wörtern) eine schlechte Idee. Nehmen Sie zum Beispiel mehrdeutige Wörter: Was ist, wenn ein Wort zu zwei Kategorien mit sehr geringem Unterschied in den Wahrscheinlichkeiten gehört? Wirst du nur eine etwas weniger wahrscheinliche Kategorie aus der Suche werfen? Was Sie höchstwahrscheinlich wollen, ist ein zusätzlicher Begriff in der Ranking-Formel während der Suche, der weniger wahrscheinliche Kategorien überhaupt nicht ablehnt.
Freund

Antworten:

3

Der einzig verlässliche Weg, um zu sehen, wie lange es dauert, besteht darin, es zu codieren und es auszuprobieren. Das Training dauert länger, dann können Sie Ihr Modell (Gurke) speichern, um es später zu verwenden.

user1269942
quelle
3

Ich sehe hier kein großes Problem. Daher würde ich versuchen, alle Ihre Fragen aus Sicht der Produktion zu beantworten:

Wie bestätige ich, dass die Klassifizierung nicht viel Zeit in Anspruch nimmt?

Nehmen Sie eine Teilmenge der Korpusdaten, die Sie haben (Sie können dies zufällig tun, ohne dass eine Stichprobe erforderlich ist), und testen Sie Ihren Algorithmus darauf, und sie approximieren / verallgemeinern sie dem Gesamtdatensatz.

(SVM ist vergleichsweise schneller. Führen Sie den obigen Vorgang dennoch aus, um sicherzugehen.)

Testen Sie es in der Entwicklungsumgebung, bevor Sie mit der Produktion beginnen.

Ist die Verwendung der Python-Scikit-Bibliothek für Websites / Webanwendungen dafür geeignet?

Ja , das ist es. Es wird bereits von einem netten Teil der Unternehmen da draußen verwendet.

Die dritte Frage zu Amazon und Flipkart kann von niemandem außerhalb ihres Teams beantwortet werden.

Darüber hinaus würde ich Ihnen raten, die Mapreduce-Techniken zum Trainieren Ihrer Modelle zu verwenden. Und wie bereits empfohlen, wählen Sie Ihre Modelle aus, damit Sie sie nicht bei jeder Anfrage trainieren müssen.

Dawny33
quelle