Zur Boardunity Forenstartseite

Zurück   Boardunity Ratgeber Forum » Projekt Foren » Projekt Forum

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 7 Stimmen, 4,71 durchschnittlich.
  #126  
Alt 28.12.2008, 19:40
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Jetzt übertreibst du aber.

Bitte denke daran, das wir keine Größe wie Google haben. Wenn die sowas machen ist das ja noch ok, aber wir 3 (?) solle ein eigenes Datenbanksystem entwickeln?

Bitte denk dran, es muss nicht sofort perfekt sein! Wenn es funktioniert und sinnvolle Ergebnisse liefert, ist das schon ganz gut.

Vlt. ist die einfachste Lösung doch die Sinnvollste: Datensätze mit Link und Stichwörtern, keine Vernetzung, usw.

  #127  
Alt 28.12.2008, 19:46
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Ja, stimmt. Vielleicht ist das fürs Erste doch ein wenig übertrieben. Aber die Vernetzung würde ich trotzdem beibehalten. Das scheint mir nämlich das einzige System zu sein, das einigermaßen gute Ergebnisse liefert.

  #128  
Alt 28.12.2008, 20:46
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
warum sollte ein System wie ich es unten beschrieben habe keine guten Ergebnisse liefern?

  #129  
Alt 28.12.2008, 22:04
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Wie willst du denn die ähnlichen Themen genau herausfinden? Bisher hast du nur beschrieben, wie du die Stichwörter sammeln würdest.

  #130  
Alt 28.12.2008, 22:52
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Ich schreibe ein Thema neu oder lese es nur, Frage der Implementierung.
Dabei wird lokal (auf dem Forum) ein Script eingebunden, das die Stichworte aus diesem Thema extrahiert und diese zusammen mit dem Link zu diesem Thema ans BUN sendet.

Dieses speichert den Datensatz ab, falls er noch nicht existiert.

Anschließend sucht das BUN anhand der Stichworte (vom neuen Thema) alle Datensätze hinaus, in denen auch eins dieser Stichworte (vom neuen Thema) als Stichwort (vom Datensatz) angegeben ist und sortiert diese danach, wie viele Stichworte (vom neuen Thema) in den einzelnen Datensätzen vorhanden sind.

  #131  
Alt 29.12.2008, 00:27
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Hab gerade etwas entdeckt: Objektdatenbank ? Wikipedia

  #132  
Alt 29.12.2008, 14:19
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Was sagts du denn zu meinem vorherigen Post?

  #133  
Alt 29.12.2008, 15:31
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Oh entschuldige, hatte ganz vergessen zu antworten.
Dein Ansatz ist natürlich recht einfach und dennoch sicherlich nicht einmal schlecht, aber ich vermisse da ein wenig die Lernfähigkeit des Systems. Beispielsweise müssen wir ja davon ausgehen, dass Typfehler gemacht werden. Ein neuronales Netz könnte da eher Ausbesserungen vornehmen.
Außerdem gestaltet sich das Laden der ähnlichen Themen aus der Datenbank bei deinem System vermutlich schwieriger. Gehen wir mal davon aus, dass wir einen Crawler haben, der die Stichwörter eines Themas erfasst, und der von den Foren benachrichtigt wird, sobald ein neues Thema erstellt wurde, und einen Loader, der zu einem bereits in der Datenbank vorhandenen Thema die ähnlichen Themen liefert und an die Foren sendet. Bei deinem Ansatz müssten aufwändig die Stichwörter miteinander abgeglichen werden, bei Einsatz eines neuronalen Netzes (in Verbindung mit einer MySQL-Datenbank) könnte das in etwa so aussehen:

Code:
SELECT n2.* FROM nodes AS n1, nodes AS n2, links AS l WHERE n1.url='url_des_aufgerufenen_themas' AND l.node1 = n1.id AND l.node2 = n2.id AND n2.type = 'TOPIC' ORDER BY l.strength DESC LIMIT 5
(Keine Ahnung, ob das so stimmt, mein SQL ist ein wenig eingerostet, wie ich gerade feststellen musste. )

  #134  
Alt 29.12.2008, 15:44
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Keine Sorge meins ist noch eingerosteter. Kapiere rein garnichts.

  #135  
Alt 29.12.2008, 15:52
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Kein Problem.
Code:
SELECT n2.* FROM nodes AS n1, nodes AS n2, links AS l WHERE n1.url='url_des_aufgerufenen_themas' AND l.node1 = n1.id AND l.node2 = n2.id AND n2.type = 'TOPIC' ORDER BY l.strength DESC LIMIT 5
heißt letztlich folgendes:
"Suche mir zu einem Thema mit der URL X Themen, die [über die Tabelle links] mit diesem Thema verbunden sind und sortiere sie absteigend nach der Stärke dieser Verbindung. Suche mir jedoch nicht alle heraus, sondern nur die obersten 5."

  #136  
Alt 29.12.2008, 16:39
Mitglied
 
Registriert seit: 09.2005
Ort: Ulm
Beiträge: 109
Hallo,

Ich schalt mich mal in die Diskussion ein, weil ich mich in dem Thema sehr gut auskenne (beweg mich mit meiner Dissertation in dieser Gegend). Die Berechnung der Ähnlichkeiten zwischen zwei Foren-Threads ist theoretisch einfach. Im einfachsten Fall verwendet man das Vektor-Raum-Modell von Salton, das jedes Wort als eigene Dimension in einem sehr hochdimensionalen Vektor realisiert. Die Ähnlichkeit wird dann in der Regel mit einem einfachen cosinus zwischen diesen beiden Vektoren berechnet. Im Prinzip sucht ihr dann nichts anderes wie alle Dokumente, die eine Mindestähnlichkeit haben. Soweit so "einfach".

Ein neuronales Netz dürfte euch dabei gar nichts bringen, weil ihr ja keine Muster erlernt. Das Problem ist auch nicht, dass ihr keine relevanten Seiten findet, sondern das Problem ist die extrem große Anzahl an Daten, die ihr handhaben musst, so dass das Problem nicht das "Auffinden" von verwandten Seiten ist, sondern vielmehr das Auffinden in verantwortbarer Zeit. Die Berechnung on the fly könnt ihr also vergessen, solang ihr nicht eine entsprechende Serverfarm habt.

Was man aber machen könnte wäre folgendes:

1. Zentrale Datenbank an Beiträgen (das ist braucht man auf jeden Fall, weil man die Daten ja vorrätig haben muss, sonst kann man nichts finden).
2. Nach einem neuen Post eines Benutzers wird der gesamte Thread an die zentrale Datenbank geschickt, welche die internen Daten aktualisiert und verwandte Seiten zurückliefert. Dieses Ergebnis kann ein paar Sekunden dauern und muss deshalb dann gespeichert werden.

Das wäre eine handhabbare Möglichkeit, die funktionieren müsste.

Wurstbrot

  #137  
Alt 29.12.2008, 16:40
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Das klingt das schon mal verständlicher.
Also Stichworte rausfinden ist ja kein problem (relativ gesehen), aber um zu vermeiden das ähnliche Wörter in das Netz kommen könnte man ja die php funktion levenshtein levenshtein() benutzen.

//Edit: Da war wohl jemand schneller.

  #138  
Alt 29.12.2008, 17:10
Mitglied
 
Registriert seit: 09.2005
Ort: Ulm
Beiträge: 109
Hallo,

der Levenshtein-Abstand ist leider für die Anfrage viel zu langsam. Er wird in der Regel in der Vorverarbeitung für automatisierte Rechtschreibkorrekturen verwendet. State of the Art ist eben die Cosinus-Suche. Die Frage ist nur, ob auf binär-Daten (wort kommt vor oder nicht) wie große Suchmaschinen oder auf float-Werte (beachtet die Relevanz besser).

Und nochmal: ein neuronales Netz wird euch nicht viel helfen. Ein neuronales Netz ist ein Muster-Erkennungs-System. Das heißt, ihr könnt (theoretisch) jede beliebige Funktion mit einem neuronalen Netz approximieren. Das NN kann das dann nahezu perfekt nachbilden. Wenn ihr aber Foren vernetzen wollt, dann muss das System keine Funktion approximieren (es soll ja auch nicht die "Nähe" von gesamten Foren berechnen), sondern es soll relevante Beiträge aus anderen Foren anbieten, so dass der Besucher möglichst viel "relevanten" Inhalt angeboten bekommt und dadurch - hoffentlich - wieder kommt. Soweit hab ich das bisher in diesem Thread zumindest verstanden.

Ich wäre bereit, in den nächsten Wochen mal so ein System zusammen zu häcken. Wer hätte denn Interesse, aus seinem Forum die Daten dann zu übermitteln? Ich stelle mir gerade eine XML-RPC-Schnittstelle vor, die nach dem Übermitteln der Daten die relevanten Seiten im XML-Format zurückliefert.

Wurstbrot

  #139  
Alt 29.12.2008, 17:19
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
man, prügelt das untereinander aus welche methode die bessere ist!

Zum Levenshtein Abstand:
Ich meinte den könnte man für das NN verwenden und zu verhindern, das dort sehr ähnliche Wörter vorkommen, wie "Programmiersprache" und "Programmiersprachen"

  #140  
Alt 29.12.2008, 23:03
Benutzerbild von Luki
Administrator
 
Registriert seit: 02.2004
Ort: Hamburg
Beiträge: 489
Hiho,

ich lese mich später gerne ausführlich durch die Theorien, aber ich würde das erstmal supersimpel machen, alle Threadtitel in einer Datenbank gesammelt/gespidert und anhand von einer Blacklist von der, die, das, hilfe etc. (hat vB auch) kann man schon den MySQL Match Befehl für ähnliche Themen verwenden (und ja das ist gigantisch performant und trifft ziemlich gut!)

Code:
MATCH(threadtopic) AGAINST ('$title') AS score
dafür muss man natürlich ein FULLTEXTINDEX setzen + das cacht MySQL automatisch!

Nicht viel anders macht es das vbulletin selbst bei der Boardunity
Performancesorgen habe ich aus Erfahrung nicht

  #141  
Alt 30.12.2008, 11:47
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Da ist nur die Frage wie gut die Ergebnisse sind.

Ich persönlich stimme dir da zu, das einfach besser ist.

mE wird das wohl auf einen Versuch hinauslaufen.

  #142  
Alt 30.12.2008, 16:00
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Zitat:
Zitat von Mathias
Die Berechnung der Ähnlichkeiten zwischen zwei Foren-Threads ist theoretisch einfach. Im einfachsten Fall verwendet man das Vektor-Raum-Modell von Salton, das jedes Wort als eigene Dimension in einem sehr hochdimensionalen Vektor realisiert. Die Ähnlichkeit wird dann in der Regel mit einem einfachen cosinus zwischen diesen beiden Vektoren berechnet.
Aber würde die Berechnung des Winkels zwischen solchen hochdimensionalen Vektoren nicht einen viel zu großen Rechenaufwand bedeuten?

Zitat:
Zitat von Mathias
Ein neuronales Netz dürfte euch dabei gar nichts bringen, weil ihr ja keine Muster erlernt.
Vielleicht habe ich mich auch ein wenig falsch ausgedrückt, so tief stecke ich in der Materie leider auch nicht drin. (Aber seit wann können neuronale Netze nur für Mustererkennung eingesetzt werden?)
Ich hatte eher an ein neuronales Netz zur Wissenrepräsentation gedacht. Ein semantisches Netz, welches ja eigentlich für die Wissenrepräsentation gedacht ist, betrachtet ja die unterschiedlichen Arten von Beziehungen zwischen Begriffen, was ich (u.a. der Einfachheit halber) durch eine reelle Zahl, wie in neuronalen Netzen, ersetzen wollte. Ebenso sollten auch Verbindungen zwischen den Begriffen wie in neuronalen Netzen aufgebaut werden, sodass ein Lernen des Systems möglich ist. Ziel war auch nicht, dass ich das Netz nach ähnlichen Themen frage und es sie mir eigenhändig ausspuckt, sondern ich sie mir selber aus dem Netz heraussuche (eben anhand der Stärke der Verbindungen zwischen den Begriffen).
Mag sein, dass ich da einige Konzepte durcheinandergebracht habe. Nichtsdestotrotz sieht das für mich immer noch nach einem brauchbaren Lösungsansatz aus.

Zitat:
Zitat von Mathias
Das Problem ist auch nicht, dass ihr keine relevanten Seiten findet, sondern das Problem ist die extrem große Anzahl an Daten, die ihr handhaben musst,
Das Problem besteht aus meiner Sicht bei allen unseren Lösungsansätzen, die darauf basieren, dass wir Stichwörter abgleichen.


@Luki: Ich bezweifle stark, dass die Ergebnisse dann gut sein werden. Jeder Autor betitelt Themen anders, manche so, dass man schon genau weiß, worum es im Thema geht, und manche eben nicht.

@Jendrik: Auf den ersten Blick scheint die levenshtein()-Funktion natürlich brauchbar zu sein, um Ähnlichkeiten zwischen Stichwörten festzustellen. Aber willst du wirklich jedes Stichwort mit jedem vergleichen?
Ich will deine Idee nicht schlecht reden, ich sage nur, dass die Lösung für dieses Problem der Tippfehler noch nicht komplett ist.
Im Übrigen können wir das vielleicht zunächst auch erst einmal außer Acht lassen, denn so häufig treten Tippfehler ja nun auch nicht auf, als dass sie unser System kaputt machen würden.

  #143  
Alt 30.12.2008, 18:23
Benutzerbild von JonnyX
Sir SeVeN
 
Registriert seit: 10.2005
Beiträge: 886
Müssen dann eigentlich alle Foren diese Systemvoraussetzungen erfüllen?

Oder wird es einen Server geben, der die Daten sammelt, den ansonsten wird dass schon wieder schwerer, da viele Foren diese Servervoraussetzungen nicht verwirklcihen können / wollen

Nur mal so aus reinem interesse, mitarbeiten kann ich eh nicht weil ich da einfach den Skill dazu habe aber die Idee an sich ist nice

  #144  
Alt 30.12.2008, 18:27
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Nein, das wird voneinander getrennt. Die Foren müssten nichts anderes tun als das BUN über ein neues Thema zu benachrichtigen und sich die ähnlichen Themen zu holen und auf deren Server zu cachen.

  #145  
Alt 30.12.2008, 21:00
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Ich würde gerne nochmal die Sache mit den Stichwörtern in Erinnerung bringen.

Das stellt mE den sinnvollsten Kompromiss zwischen Systemlast, Speicherplatzverbrauch und Qualität der Ergebnisse dar.

  #146  
Alt 30.12.2008, 21:12
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Zitat:
Zitat von codethief Beitrag anzeigen
Außerdem gestaltet sich das Laden der ähnlichen Themen aus der Datenbank bei deinem System vermutlich schwieriger. Gehen wir mal davon aus, dass wir einen Crawler haben, der die Stichwörter eines Themas erfasst, und der von den Foren benachrichtigt wird, sobald ein neues Thema erstellt wurde, und einen Loader, der zu einem bereits in der Datenbank vorhandenen Thema die ähnlichen Themen liefert und an die Foren sendet. Bei deinem Ansatz müssten aufwändig die Stichwörter miteinander abgeglichen werden
Darauf bist du aber bisher noch gar nicht eingegangen?

  #147  
Alt 30.12.2008, 21:54
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Idee: Foren vernetzen über ähnl. Themen ?

Ich dachte eingentlich ich hätte das erklärt?
übersehen?

  #148  
Alt 31.12.2008, 01:15
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
Ja, schon. Nur ist das Abgleichen (und zwar Stück für Stück, Stichwort für Stichwort) extrem aufwendig und führt zu einer extrem hohen Systemlast. Deshalb wollte ich eben noch einmal darauf hinweisen, dass das (zumindest aus meiner Sicht) vielleicht noch nicht zu Ende gedacht war.
Man könnte natürlich alle Stichwörter zu einem Thema speichern und dann die Themen mittels MATCH AGAINST wie von Luki oben beschrieben miteinander vergleichen. Aber überlegt bitte, wie speicher- und rechenintensiv das dann wird.

  #149  
Alt 31.12.2008, 15:27
Mitglied
 
Registriert seit: 11.2008
Beiträge: 56
Also ich habe die Suchstichwörter 'Stichwort1', 'Stichwort2', 'Stichwort3'.

Dann für jedes Stichwort:
PHP-Code:
$result mysql_query"SELECT `id` FROM table WHERE (`words` LIKE '".$Stichwort."')"
Für jeden Datensatz (While( $i = mysql_fetch_object( $result ):
PHP-Code:
$array[$i->id] += 1
Und zum Schluss:
PHP-Code:
asort$array 
Somit habe ich am Ende ein Array, welches die Id des Themas (als Key) nach Anzahl der übereinstimmenden Stichwörtern sortiert enthält.

Davon kann ich mir dann zum bsp. die ersten drei Einträge nehmen.

  #150  
Alt 31.12.2008, 22:33
Benutzerbild von codethief
Visionär
 
Registriert seit: 09.2003
Beiträge: 803
D.h. zum Einen speicherst du alle Stichwörter jedes Themas und gehst die zum Anderen dann auch noch Stück für Stück durch und führst dabei jeweils eine Query aus.

Funktioniert zwar mit Sicherheit, aber es dürfte das System allerdings nicht zu knapp belasten.
Aber da der Aufbau des Systems mit meinem übereinstimmen würde und der Unterschied nur darin bestünde, wie Daten gespeichert und geladen werden, könnten wir ja dann auch beides ausprobieren und Benchmarks erstellen (denn mein System dürfte beim Crawlen ordentlich Last verursachen).

Antwort


Stichworte
foren, network, seo

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mitmachen: Die schönsten Foren MrNase Web Design und Grafik 70 09.09.2007 11:33






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24