Ideen zu Algorithmen für maschinelles Lernen zur Klassifizierung von Produkten

7

Ich habe eine Liste von Produkten, einschließlich Variablen wie dem Produktnamen (wie auf der Quittung angegeben) und dem Händler, bei dem das Produkt gekauft wurde.

Ich habe viele von ihnen manuell in eine feste Gruppe von Kategorien eingeteilt (z. B. alkoholische Getränke, Gemüse, Fleisch usw.).

Die Daten sind wie immer verrauscht. In diesem Fall ist besonders laut, weil es von gescannten Belegen und OCR bei nicht so guten Scans kommt, normalerweise sehr laut.

Ich möchte mit Algorithmen herumspielen, um neue Daten anhand der beiden oben genannten Variablen zu klassifizieren.

Hier gibt es mehrere Hauptvariationsquellen:

  • Die OCR, dh ein Produkt (z. B. Huhn), kann mit vielen verschiedenen, aber relativ ähnlichen Schreibweisen gefunden werden (z. B. Chiken, Hicken, Chicen, ...).
  • Das gleiche Produkt kann je nach Händler, der das Produkt verkauft hat, unterschiedliche Namen haben. In diesem Fall können die Namen zwischen Händlern entweder ähnlich oder völlig unterschiedlich sein, aber in jedem Händler ziemlich ähnlich.
  • Das gleiche Produkt kann innerhalb desselben Händlers sehr unterschiedliche Namen haben (z. B. Markenprodukte, deren Name auf der Quittung der Markenname ist, im Vergleich zu generischen Namen; Erfrischungsgetränk oder Coca Cola).

Ich habe einen (naiven) Klassifikator ausprobiert, der beispielsweise den Abstand zwischen Zeichenfolgen verwendet (der hauptsächlich die erste oben erwähnte Hauptvariationsquelle betrifft), bin aber mit den Ergebnissen nicht sehr zufrieden.

Deshalb wollte ich hier nach Ideen fragen, wie dieses Problem angegangen werden kann. Ich denke, viele Leute haben diese Art von Problem "gelöst" oder zumindest viel länger gearbeitet als ich (ein paar Stunden), daher würde ich mich über jede Anleitung hier sehr freuen.

Übrigens verwende ich hauptsächlich R, daher wären R-basierte Lösungen sehr willkommen.

elikesprogramming
quelle
Dies mag weitestgehend ungenau sein, aber der Satz, der mir beim Lesen einfiel, ist "strukturierte Themenmodelle". Wenn diese Methode überhaupt relevant ist, gibt es dafür ein R-Paket namens stm.
lmo

Antworten:

2

Nacheinander Ihre Probleme angehen:

1) OCR: Dies ist wahrscheinlich das einfachste Ihrer Probleme, da es viele Algorithmen gibt, die bei dieser Aufgabe gut funktionieren. Als Referenz haben im bekanntesten handgeschriebenen Ziffern-Datensatz MNIST mehrere Algorithmen eine Genauigkeit von über 99,5% erreicht (Stand der Technik sind Faltungs-Neuronale Netze). Sie können auch viele sofort einsatzbereite Lösungen für Ihr Problem finden. Es ist sehr hilfreich, wenn Ihre Daten auf Englisch sind, da die Tools dort weiter fortgeschritten sind. Wenn Ihre Scans laut sind , können Sie versuchen , Entrauschen sie zuerst.

2) Sie müssen für dieses Problem eine Vorverarbeitung durchführen. Zuerst würde ich vorschlagen, wenn möglich, eine Tüte mit Wörtern zu erstellen , dh eine Liste aller eindeutigen Wörter in Ihrem "Korpus". Stellen Sie sicher, dass alle diese Wörter korrekt sind, und führen Sie einen Vergleich der Zeichenfolgenentfernung (z. B. Hamming-Entfernung) durch, um Tippfehler mit 1-2 Buchstaben zu korrigieren. Eine andere Sache, die ich tun würde, wäre, das Vorkommen jedes Begriffs in Ihrer Tasche zu berechnen und die am wenigsten häufigen zu entfernen (z. B. sind Begriffe, die weniger als N Mal in Ihrem Korpus vorkommen, wahrscheinlich Tippfehler oder entfernen die am wenigsten häufigen M% Ihrer Begriffe). Dies sollte das Rauschen in Ihrem Datensatz erheblich reduzieren.

3) Um dieses Problem zu lösen, müssen Sie eine Art semantische Kennzeichnung durchführen. Wenn Sie mit Ontologien vertraut sind, kann deren hierarchische Struktur hier sehr hilfreich sein. Sie können Regeln erstellen, wie "Coca-Cola" ist ein "Erfrischungsgetränk", eine Art Getränk usw.

Ich habe keine Erfahrung mit R, aber ich bin sicher, dass Sie Tools finden können, mit denen Sie all das ganz einfach ausführen können.

Djib2011
quelle
0

Es scheint, dass Sie Ähnlichkeit zwischen den Entitäten definieren sollten.

Sie haben viele Quellen für Ähnlichkeit. Sie haben die Entfernung in den Namen (Entfernung bearbeiten) und die Mitgliedschaft in Gruppen erwähnt. Beachten Sie, dass Sie die Ähnlichkeit nach Gruppen auf viele Gruppen und viele Ähnlichkeitstypen erweitern können. Gruppen können zu demselben Rezept gehören, von demselben Händler verkauft werden, zu derselben Kategorie gehören usw. Ähnlichkeitstypen können Ebenen sein, die zu derselben Gruppe gehören, Gewicht mit umgekehrtem Verhältnis zur Gruppengröße usw. Bei allen Verwendungszwecken kann Transitivität verwenden. Zum Beispiel können Sie ähnliche Produkte mit unterschiedlichen Namen finden, indem Sie die Tatsache verwenden, dass sie mit denselben Produkten verwendet werden (z. B. werden Gewürz X` und Gewürz X`` beide mit Hühnchen verwendet).

Sehr bald werden Sie viele Ähnlichkeitsbeziehungen haben und sich fragen, wie Sie sie kombinieren können. Hier kommen Sie, um die Beschriftung zu unterstützen, die Sie bereits vorgenommen haben. Nehmen Sie diese als positive Paare zugehöriger Produkte. Generieren Sie Sätze unterschiedlicher Produkte (nicht in den positiven Paaren) als negative Paare. Erstellen Sie einen Datensatz, in dem die Positivität das Konzept und die Ähnlichkeiten die Paare sind. Jetzt können Sie den überwachten Lernalgorithmus verwenden, um ein Modell zu erhalten, das die Ähnlichkeiten in einer einzigen Vorhersage kombiniert. Mit diesem Modell können Sie die Zuordnung zwischen neuen Paaren vorhersagen. Als Bonus können Sie die Leistung des Modells im Datensatz bewerten (z. B. Genauigkeit, Präzision, ...) und mehr Sicherheit haben.

DaL
quelle