Frage

Ich versuche, die stategy oder Idee für den Aufbau räumliche Karten verwandt / common Keywords oder Tags zu verstehen. Verwendung SO als ein Beispiel; wenn Sie gehen auf https://stackoverflow.com/tags und geben Sie „Python“ finden Sie alle Tags erhalten, die dieses Wort in ihm haben , aber keine Tags, die (WSGI, Google App Engine, fliegen, etc.).

könnte eng verwandt werden

Im Einklang mit meiner Frage, wie kann man eine räumliche Karte erstellen, die abgefragt werden kann eng verwandte Tags / Schlüsselwörter aus der Suche zu finden, die durch ihr Gewicht bestellt? Aber dann, wie zu speichern, um Gewicht zu Tag foo sagen, auf eine potenziell größere Anzahl von Tags und immer noch das System anspricht?

Ich habe bereits diesen Google-Tech-Vortrag von David Weinberger beobachtet derdiedas ein großer Tech-Talk, das ich dachte, bekommen hat. http://video.google.com/videoplay?docid= 2159021324062223592 & ei = qseASZvgI6e4qAP91a2PDg & q = + tech google + sprechen

War es hilfreich?

Lösung

Überprüfen Sie die Clustering-Konzepte von O'Reilly "Programmieren Collective Intelligence" .

Andere Tipps

Es scheint, dass der wahrscheinlichste Weg, um die Daten in Bezug auf solche Beziehungen aufzubauen wäre zum Katalog, welche Tags zusammen erscheinen die am häufigsten, während mit der geringsten Anzahl von anderen Tags erscheinen zusammen.

Das heißt, "c ++" und "stl" erscheint viel zusammen, und "stl" selten (?) Erscheint ohne "c ++", so dass sie im Zusammenhang (in mindestens eine Richtung). „C ++“ und „Algorithmus“ auch viel zusammen erscheinen, aber sie scheinen auseinander sogar noch öfter, so dass sie nicht verwandt sind.

Denken, wie die Daten strukturiert sein könnten, eine Idee, die ich möglicherweise hatte könnte ein vier Tabellen-System sein. eine Tabelle würde Quelldaten (ex. mit SO es irgendeine Art von Frage Tisch sein muss), was zu einer Tag-Tabelle verbunden ist, und dann eine Tag Gewichtstabelle, die zurück zu der Tag-Tabelle verbindet.

#pseudo code
     source table {
     id: int
     source_data: text   
     }

     source_tag table {
        source_id: int
        tag_id: int
     }

     tag table{
      id: int
      tag: String(30)
     }

    tag_weight table {
        base_tag_id: int
        weight: float( 0-10 or 100 ) or int ( count of mutual occurrence )
        source_tag_id: int      
    }

Ich habe keine Ahnung, wie effizient diese Struktur ist, aber ich denke, es ist etwas zu arbeiten. Andernfalls es, Neuaufnahmen zu Quelldaten machen arbeiten könnte von einem Feuer nach Update-Trigger oder einen Arbeitsprozess, die Gewicht zu voreingestellten Zeiten Neuverteilung im Hintergrund hat.

Sie müssen eine gute Suchmaschine. ;)

Do it yourself: eines der Ähnlichkeitsalgorithmen implementieren. Zum Beispiel: Levenshtein Abstand oder Dice-Koeffizient .

Nutzen Sie etwas bereit wie benutzen Lucene .

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