Ich habe einen Datensatz mit Textfragmenten mit einer festen Struktur, die Parameter enthalten kann. Beispiele sind:
Temperature today is 20 centigrades
Temperature today is 28 centigrades
oder
Her eyes are blue and hair black.
Her eyes are green and hair brown.
Das erste Beispiel zeigt eine Vorlage mit einem numerischen Parameter. Die zweite ist eine Vorlage mit zwei Faktorparametern.
Die Anzahl der Vorlagen und die Anzahl der Parameter ist nicht bekannt.
Das Problem besteht darin, die Vorlagen zu identifizieren und jedes Textfragment der entsprechenden Vorlage zuzuweisen.
Die naheliegende erste Idee ist die Verwendung von Clustering. Das Abstandsmaß ist als eine Anzahl nicht übereinstimmender Wörter definiert. Das heißt, die Datensätze in Beispiel 1 haben Abstand 1, in Beispiel 2 beträgt Abstand 2. Der Abstand zwischen dem Datensatz in Beispiel 1 und 2 beträgt 7. Dieser Ansatz funktioniert einwandfrei, vorausgesetzt, die Anzahl der Cluster ist bekannt, was nicht der Fall ist es ist nicht nützlich.
Ich kann mir einen programmatischen Ansatz vorstellen, bei dem die Entfernungsmatrix nach Datensätzen mit vielen Nachbarn in Entfernung 1 (oder 2,3, ..) durchsucht wird, aber ich bin gespannt, ob ich einen unbeaufsichtigten Algorithmus für maschinelles Lernen anwenden kann, um das Problem zu lösen. R ist bevorzugt, aber nicht erforderlich.
quelle
Antworten:
Das Grundprinzip des folgenden Vorschlags besteht darin, "Eigenvektoren" und "Vorlagen" zuzuordnen.
Insbesondere könnte man LSA für den gesamten Korpus verwenden, basierend auf einer Tüte mit Wörtern. Die resultierenden Eigenvektoren würden als Ersatzvorlagen dienen; Diese Eigenvektoren sollten nicht direkt von der Anzahl der Wörter in jeder Vorlage beeinflusst werden. Anschließend könnten die Bewertungen verwendet werden, um die Dokumente nach einem Standardverfahren (z. B. Mittel in Verbindung mit AIC) zusammenzufassen. Als Alternative zu LSA könnte man NNMF verwenden. Lassen Sie mich darauf hinweisen, dass die LSA (oder NNMF) wahrscheinlich eher mit der transformierten TF-IDF als mit der Rohwortzählmatrix durchgeführt werden müsste.k
quelle
Sie können word2vec verwenden , um Phrasen im Korpus zu identifizieren . Das Vorhandensein einer Phrase (anstelle einzelner Token) weist wahrscheinlich auf eine "Vorlage" hin.
Von hier aus sind die Token, die Ihrer Vorlagenphrase am ähnlichsten sind, wahrscheinlich die Werte für Ihre Parameter.
quelle
Das folgende Skript verwendet LSA mit transformierter IDF, um die Parameter von Vorlagen abzuschneiden. Die Idee ist, dass alle Terme mit einer höheren IDF als einem bestimmten Schwellenwert als Parameter betrachtet werden und ihre Frequenz auf Null zurückgesetzt wird. Der Schwellenwert kann mit dem durchschnittlichen Vorkommen der Schablone im Korpus angenähert werden. Wenn Sie die Parameter eliminieren, ist der Abstand der Datensätze mit derselben Vorlage Null.
Die Distanzmatrix zeigt deutlich, dass die Datensätze 1,2,3 aus derselben Vorlage stammen (Distanz = 0 mit den synthetischen Daten; in einem realen Fall sollte ein kleiner Schwellenwert verwendet werden). Gleiches gilt für die Datensätze 4,5,6 und 7,8,9.
quelle