Frage

Angenommen, ich eine Liste von Slogans hatte (kurz, Multi-Wort-Sätze), und die Menschen für diejenigen gestimmt hatten sie am besten gefallen, und ich wollte, welche Worte beurteilen, wenn überhaupt, als andere einige Slogans mehr populär gemacht. Was wäre der beste Weg, dies zu erreichen? Mein erster Gedanke war einfach alle die einzigartigen Worte in dem Satz von Slogans zu finden und jeden als die durchschnittliche Anzahl der Stimmen aller Slogans punkten, das Wort enthält gesagt, aber Frequenz sollte auch ins Spiel kommt, in irgendeiner Art und Weise, wie ich glaube, so dass die folgenden wahr sein sollte:

  • Wenn Word A tritt nur in der Slogan, der die meisten Stimmen bekam und Word B tritt nur in der Slogan, der die zweitmeisten, Word-A bekam ist mehr „Popularität erzeugenden“
  • Wenn jedoch Word-A tritt nur in dem Top-Slogan und Word B tritt sowohl in den zweiten und dritten Platz Slogans, sollte Word-B gewinnen, da es mehr Slogans an die Spitze geschoben.
  • jedoch ein einzelne Auftreten von Word A in dem oberen Slogan sollte noch Trumpf drei Auftritte von Wort B in anderen Slogans, wenn sie sind, sagen wir, in der Mitte oder untere Hälfte der Packung (das heißt, es muss ein Gleichgewicht von Stimmen bekommen und Frequenz in Scoring sein).

Ich mag auch Worte beseitigen, die allgemein üblich sind (zum Beispiel „der“ oder „von“). Dies ist eine Art im Zusammenhang mit Fragen zu streich Worte zu identifizieren, die in der Vergangenheit gefragt worden, aber anders, weil Veränderung im Laufe der Zeit ist kein Faktor. Ich würde gerne nur so weit in der richtigen Richtung zu diesem hingewiesen werden, wie Literatur betrifft, aber ich bin nicht wirklich sicher, was zu suchen. Ist das eine Klasse von Problem, dass andere Menschen behandeln?

War es hilfreich?

Lösung

Dies ist eine Maschine Lern ??Frage. Sie versuchen, ein Modell aus überwachten Daten zu lernen. Um dies zu tun, könnten Sie einen einfachen Algorithmus ausführen, der ist wie Perceptron oder SampleRank ( pdf ):

Zuerst Funktionen definieren, die auf die Worte in einem Slogan gelten. Funktionen können über Wörter geteilt werden, z.B. kennzeichnet das Wort „Frieden“ sein könnte:

  • "Frieden",
  • "Nomen",
  • "abstrakt-Substantiv",
  • "short-Substantiv",
  • "beginnt mit p",
  • "endet in‚s'-Sound",
  • ...

Das erste Merkmal „Frieden“ ist ein einzigartiges Merkmal, das ausgelöst wird nur auf „Frieden“, während die anderen Merkmale können auch Feuer auf anderen Wörtern.

hat Jedes Merkmal, ein Gewicht (je höher desto besser). So haben Sie eine Merkmalsvektor und einen Gewichtsvektor haben. Dies ermöglicht es Ihnen, ein Gewicht (score) einem Slogan zuweisen (nur die Summe aller gewichteten Merkmale, dass das Feuer auf die Worte in dem Slogan). Alle Gewichte werden auf 0,0 initialisiert.

Sie jetzt Training beginnen:

Sie Schleife über alle Paare von Slogans. Für jedes Paar kennen Sie die wahre Rangliste (nach den Stimmen Sie bereits haben). Dann berechnen Sie die Rangliste nach den Merkmalen und deren aktuellen Gewichte. Wenn die wahre Ranking und die Rangliste nach Ihren aktuellen Merkmalsgewichten (das heißt, nach Ihrem aktuellen Modell) ist die gleiche Sie einfach zum nächsten Paar bewegen. Wenn Ihr Modell die falsche zugewiesen Ranking Sie korrigieren die Funktion Gewichte: Sie fügen 1.0 auf die Gewichte der Features, die das Feuer auf den besseren Slogan (derjenige, der besser ist, nach der Abstimmung des Menschen) und subtrahieren 1,0 von den Gewichten der das Feuer kennzeichnet auf schlechteren Slogan (seine Punktzahl war offensichtlich zu hoch, so dass Sie es jetzt Senken). Dieses Gewicht Updates wirkt sich auf die Noten, dass Ihr Modell zuordnet die nächsten Paare, und so weiter.

Sie führen diese Schleife mehrmals, bis Ihr Modell die meisten der Paare bekam Recht (oder ein anderes Konvergenzkriterium).

Normalerweise Sie nicht wirklich addieren oder subtrahieren 1,0, aber eta mal 1,0, wobei eta die Lernrate ist, die man experimentell einstellen. Normalerweise ist es am Anfang der Ausbildung höher und wird nach und nach während des Trainings abgesenkt, wie Ihre Gewichte in der richtigen Richtung bewegen. (Siehe auch stochastische Gradientenabfallsaktualisierung.) Um loszulegen, man konnte es nur als Konstante auf 0,1 gesetzt.

Dieses Verfahren kümmert sich um die Stoppwörter ( „die“, „der“, ...), da sie ebenso oft in guten und in schlechten Parolen auftreten sollten (und wenn sie es tun wirklich nicht, dann lernt man, dass auch) .

Nach dem Training können Sie die Punktzahl für jedes Wort berechnen nach den gelernten Merkmalsgewichten.

Andere Tipps

Wie wäre es Bayes-Inferenz ?

Ich glaube, ich würde einen Algorithmus verwenden, der diese Dinge tut:

  1. Eliminiert Stoppwörter (gemeinsame Wörter) ( http://en.wikipedia.org/wiki/Stop_word )
  2. Normalisieren und Stiel Wörter ( http://en.wikipedia.org/wiki/Stemming )
  3. berechnen normalisierten Worthäufigkeiten und Stimmen
  4. Auftrag normalisierte Worte nach Stimmenzahl / Frequenz
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top