Frage

Twitters Trending Topics oft bestehen aus mehr als nur ein Wort. Aber zusammengesetzt Bedingungen gibt es oft verschiedene Arten von Rechtschreibung, z.

"Halbblutprinz" / "Halbblutprinz"

Um alle Updates finden ein Trending Topic zu erwähnen, müssen Sie die alle Möglichkeiten der Rechtschreibung. Twitter tut dies:

Sie haben den Namen des Themas auf der linken Seite und die verschiedenen Möglichkeiten der Schreibweisen auf der rechten Seite. Glauben Sie, das manuell oder automatisch erfolgt? Ist es möglich, dies automatisch zu tun? Wenn ja: Wie

Ich hoffe, dass Sie mir helfen können. Vielen Dank im Voraus!

War es hilfreich?

Lösung 2

Ich werde versuchen, meine eigene Frage zu beantworten Haften Link Kommentar auf Basis von (danke dafür):


Sie haben extrahierten Sätze, bestehend aus 1 bis 3 Wörter aus Ihrer Datenbank von Dokumenten. Unter diesen extrahierte Sätze gibt es folgende Sätze:

  • Halbblutprinz
  • Half-Blood Prince
  • Halbblut Prinz

Für jede Phrase, Sie alle Sonderzeichen abzustreifen und Leerzeichen und die Zeichenfolge Klein machen:

$ phrase = 'Halbblutprinz'; $ Begriff = preg_replace ( '/ [^ a-z] / i', '', $ Phrase); $ Phrase = strtolower ($ Satz); // Ergebnis "halfbloodprince"

Wenn Sie dies getan haben, alle drei Sätze (siehe oben) haben eine Rechtschreibung gemeinsam:

  • Halbblutprinz => halfbloodprince
  • Half-Blood Prince => halfbloodprince
  • Halbblut Prinz => halfbloodprince

So "halfbloodprince" ist die Mutter Phrase. Sie fügen beide in Ihre Datenbank, die normale Phrase und der übergeordneten Begriff.

Um ein "Trending Topics Admin" wie Twitters zeigen Sie wie folgt vor:

// first select the top 10 parent phrases
$sql1 = "SELECT parentPhrase, COUNT(*) as cnt FROM phrases GROUP BY parentPhrase ORDER BY cnt DESC LIMIT 0, 10";
$sql2 = mysql_query($sql1);
while ($sql3 = mysql_fetch_assoc($sql2)) {
    $parentPhrase = $sql3['parentPhrase'];
    $childPhrases = array(); // set up an array for the child phrases
    $fifthPart = round($sql3['cnt']*0.2);
    // now select all child phrases which make 20% of the parent phrase or more
    $sql4 = "SELECT phrase FROM phrases WHERE parentPhrase = '".$sql3['parentPhrase']."' GROUP BY phrase HAVING COUNT(*) >= ".$fifthPart;
    $sql5 = mysql_query($sql4);
    while ($sql6 = mysql_fetch_assoc($sql5)) {
        $childPhrases[] = $sql3['phrase'];
    }
    // now you have the parent phrase which is on the left side of the arrow in $parentPhrase
    // and all child phrases which are on the right side of the arrow in $childPhrases
}

Ist das, was Sie daran gedacht, Haften Link? Würde diese Arbeit?

Andere Tipps

Was Sie im Grunde wollen, ist die Ähnlichkeit zwischen zwei finden Strings .

Ich denke, die Soundex Algorithmus ist das, was Sie suchen. Es kann für den Vergleich von Zeichenketten verwendet werden, je nachdem, wie sie klingen. Oder als Wiki beschreibt:

  

Soundex ist ein Laut Algorithmus für die Indizierung Namen von Klang, wie im Englischen ausgesprochen. Das Ziel ist, für homophones auf die gleiche Darstellung codiert werden, so dass sie trotz kleinerer Unterschiede in der Rechtschreibung angepasst werden.

Und:

  

Mit diesem Algorithmus mit [EDIT: das heißt, „Bewertung“ Worte von einem Buchstaben und drei Ziffern], die beide „Robert“ und „Rupert“ Rückkehr der gleiche Zeichenfolge „R163“, während „Rubin“ Erträge „R150“. "Ashcraft" Erträge "A261".

Es gibt auch den Levenshtein Abstand .

Viel Glück.

Es gibt viele Möglichkeiten, dies zu tun. Ein Straight-Forward-Artikel über Google-Stil „Meinen Sie“ Prüfung gut zu lesen ist für Ideen, wie dies zu erreichen. geschrieben von Peter Norvig, Forschungsdirektor bei Google.

http://norvig.com/spell-correct.html

„anderstornvig“ erwähnt die Levenshtein / Edit-Distanz, die eine gute Idee ist, ist aber nicht ganz angemessen, weil bestimmte Permutationen bedeutsamer sind als andere Permutationen. Das Problem scheint zu sein, dass wir eine Menge domänenspezifische Wissen verwenden, wenn wir die Unterschiede sind „signifikant“ und welche bestimmen „unbedeutend.“ Zum Beispiel wissen wir, dass der Strich „Halbblutprinz“ sehr wichtig ist aber die Zahl in „Firefox 3“ ist sehr wichtig.

Aus diesem Grund könnten Sie eine einfache Metrik wie Levenshtein Anpassung betrachten. In Parameter, die Sie anpassen können, welche Arten von Unterschiede sind wichtig und welche Arten sind unwichtig.

Insbesondere zählt Levenshtein die Anzahl der „Änderungen“ (das heißt, Insertionen, Deletionen und Substitutionen) erforderlich, um eine Zeichenkette in eine andere zu drehen. Effektiv es Gewichte bearbeiten jeden gleich. Sie könnten eine Implementierung, die Gewichte einige Änderungen anders schreiben. Zum Beispiel Ändern einer „-“ zu einem „“ ein sehr geringen Gewicht (unter Angabe Bedeutungslosigkeit) haben sollte. Ändern einer „3“ auf „2“, wenn die Zahl allein ist, ein sehr hohes Gewicht (was eine hohe Bedeutung) haben sollte.

die Berechnung von Parametrierung Sie einen Weg schaffen für Ihren Algorithmus kontinuierlich zu verbessern. Erstellen Sie eine anfängliche Konfiguration und führen Sie es auf einigen Testdaten. Finden Sie Orte, an denen die Metrik schwach ist - wo es zwei Begriffe verschmilzt Sie denken, sollten getrennt werden, zum Beispiel -. Und ändern Sie die Parametrierung bis Sie zufrieden sind

Auf diese Weise können Sie Ihren Algorithmus mit Ihrem domänenspezifischen Wissen trainieren.

Die meisten wahrscheinlich, dass sie einige automatische Systeme, die für die Kombination von wahrscheinlichen Kandidaten vorschlagen, und dann macht ein Mensch die ultimative Wahl, sie zu kombinieren. Es kann einige sie automatisch kombinieren sein.

  • Ihr Vorschlag zur Entfernung von Räumen und anderen Zeichensetzung ist ein guter. Die meisten wahrscheinlich, dass sie Dinge kombinieren, die nur auf Interpunktion oder weißen Raum allein automatisch unterscheiden.
  • Plural vs. Singular: für diese Unterschiede suchen wäre leicht zu automatisieren und wahrscheinliche Kandidaten für die Kombination erzeugen würde.
  • Gemeinsame Fehlbuchstabierungen - werden sind Datenbanken von häufigen Rechtschreibfehlern. Sie könnten vertrauen auch auf der Google-API für Rechtschreibvorschläge (ich glaube sie, dass aussetzen).
  • Soundex (oder ähnlich) ist ein guter Rechtschreibfehler für die Suche, aber es wäre müssen zuerst durch die beiden oben genannten Filter gehen (Leerzeichen entfernen, Zeichensetzung und Plurale) und dann wahrscheinlich brauchen einen Menschen, den Anruf zu machen, wenn sie die gleichen sind. Aber wenn Sie einen grafischen Darstellung, die zeigt Clustering mit dem gleichen oder einem ähnlichen soundex präsentieren könnten dann würden Sie wirklich, dass ein Teil einfach machen. Sie könnten automatisch eine Benachrichtigung senden, wenn ein Cluster zu erscheinen und Trend beginnt (sie wirklich nur irgendwie über die Trend-Themen kümmern, also, wenn auch ein kombiniertes ein Cluster nicht tendiert können sie es zu prüfen, warten.)

Wenn Sie wirklich einen Menschen müssen ist zu dem Schritt, wenn es gemeinsame Spitznamen sind. Wie Michael Jackson, MJ, Michael, etc. Oder MacDonalds, McD, Micky-D, etc. Und dann mit technisch Sie haben Visual Studio, VS2008, VS, usw. oder Stackoverflow, SO, etc. Dann C #, C-Sharp, C # .NET sind alle gleich, aber C und C ++ sind unterschiedlich.

So würde es braucht eine Kombination zu sein. Es könnte auf einer Datenbank bekannten Variationen verlassen und Kombination auf vorheriger Analyse oder anderen Quellen basieren, aber das Datenbank würde regelmäßig von einem Editor beibehalten werden.

Unter der Annahme, dass die Trending Topics rechnerisch erzeugt werden, wird der genaue Algorithmus auf Twitter tun schwer zu erraten. Es ist sehr wahrscheinlich sehr vertraulich und patentierte auch (so beängstigend wie es an dem Patent Algorithmen klingen mag).

Ich finde es vernünftig, glauben aber, dass sie irgendeine Art von natürlicher Sprache Algorithmus verwenden würden. Je nach Fall sind sie oft sehr schwer rechnerisch durchzuführen und nur das tun, was Sie wollen einige erweitern.

Eine offensichtliche hilfreich Lese zum Thema ist aus dem Wiki:

Viel Glück.

Ich erinnere mich, als MJ vergangen, twitter manuell ging zurück und fixiert die Themen Tweets seines Todes zu zeigen. Es wäre viel sein von einem Computer so etwas wie dies in diesen Tagen fragen automatisch zu tun, obwohl es locker gemacht werden kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top