Ich baue einen Textkategorisierer für kurze Sätze. Ich möchte dem Benutzer nicht nur mitteilen, dass die Kategorie des von Ihnen eingegebenen Textes C ist, sondern auch kurz und verständlich erklären können, warum ich diese Entscheidung getroffen habe. Zum Beispiel möchte ich dem Benutzer nicht sagen: "Ich habe Ihren Satz in ein komplexes dreischichtiges neuronales Netzwerk eingefügt, und das ist die Antwort, die am besten abgeschnitten hat." Ich möchte Erklärungen wie "Ihr Satz enthält die Wörter U, V und W, die für diese Kategorie charakteristisch sind, weil Sätze wie X, Y und Z in den Trainingsdaten enthalten sind".
Meine Frage ist: Welche Klassifizierungsalgorithmen eignen sich am besten für eine solche Anwendung?
k-next-neighbours scheint ein guter Kandidat zu sein, da ich dem Benutzer sagen kann: "Ihr Satz hat die Kategorie C, weil er den Sätzen X, Y und Z ähnelt, die dieselbe Kategorie haben. Die Leistung bei Textkategorisierungsproblemen ist jedoch bekannt Sei arm. Ich suche eine Klassifikation, die Leistung mit Erklärungsfähigkeit in Einklang bringt.
EDIT: Nachdem ich viel Zeit damit verbracht hatte, nach einem solchen Klassifikator zu suchen, begann ich mit dem Aufbau einer Bibliothek für maschinelles Lernen namens Limdu , mit der die Klassifikatoren ihre Entscheidungen erklären können. Es befindet sich noch in der Entwicklung, aber es hat mir bereits geholfen, mir und meinen Kollegen zu erklären, warum unsere Klassifikatoren so oft versagen ...
quelle
Antworten:
Obwohl es bei Textklassifizierungsaufgaben eine schlechte Leistung erbringt, ist ein Entscheidungsbaum die beste Option , wenn Sie eine klare Erklärung der Klassifizierungsgründe wünschen, da er klare Regeln für die Klassifizierung einer Instanz enthält. Eine Ablaufverfolgung des Baums würde die bestimmenden Werte liefern. Durch Analysieren der Instanzen in der Nähe des Stammknotens können Sie möglicherweise sogar bestimmen, welche Attribute in der Klassifizierung von größerer Bedeutung sind.
Eine andere Option wäre die Verwendung eines Naive Bayes-Klassifikators , der für Text Mining-Aufgaben eine bessere Leistung erbringt und Ihnen ein verständliches Bewertungsschema auf der Grundlage von Wahrscheinlichkeiten bietet, mit denen Sie das gesuchte "Warum" generieren und sogar einen Hinweis darauf geben können Welche Attributwerte waren für die Bestimmung wichtiger als andere?
Support-Vektor-Maschinen , insbesondere Sequential Minimum Optimization (SMO), scheinen mit diesen Aufgaben gut zu funktionieren und liefern ebenfalls Hinweise auf die Werte, die für die Klassifizierung in Form von Attributgewichten und Support-Vektoren verwendet werden. Ich denke, Sie haben es möglicherweise schwerer explizit machen, wie diese Gewichte und Vektoren die Gesamtklassifizierungsentscheidung beeinflusst haben.
Viel Glück bei Ihrem Projekt! Klingt sehr interessant.
quelle
Ich erinnere mich vage daran, dass Peter Norvig eine Implementierung von MYCIN hatte , einem Expertensystem für medizinische Diagnose , das in LISP in seinem Buch Paradigms of Artificial Intelligence Programming: Fallstudien in Common Lisp geschrieben wurde und genau dies tat.
Vielleicht ist das ein guter Ort, um Ihre Forschung zu beginnen. Sie finden den Quellcode online zusammen mit einer Regelbasis . Ich empfehle jedoch dringend, den Text zu lesen und nicht zu versuchen, ihn allein aus dem Quellcode zu verstehen.
Sie können auch direkt zur Seite für Emycin gehen (meine Betonung),
quelle