Wie der Titel schon sagt, werde ich euch mal zeigen wie man mittels PHP Keywords aus einem String ziehen kann. Dazu zeige ich euch mein kleines Skript, welches ich für mein Forum geschrieben habe.
Es durchsucht den Text nach Wörtern, die groß geschrieben sind. Ich gehe nämlich davon aus, dass alle Wörter, die groß geschrieben sind, wichtig sind. Großgeschriebene Wörter sind ja meist Namen, Orte oder Objekte, kleine meistens nicht.
Klar, die besten Keywords sind die, die man manuell eingibt. Hat man jedoch nicht die Zeit oder Muse dazu, das selbst zu machen, ist so ein Keyword Generator eine gute Wahl.
Keyword Meta Tags sollen ja von manchen Suchmaschinen inzwischen ignoriert werden oder zumindest an Bedeutung verloren haben. Anders sieht es jedoch aus, wenn man mit Adsense Werbung anzeigen lässt. Dabei spielen die Meta Tags doch ein wichtige Rolle. Oder denkt an Tag-Wolken. Um die zu erzeugen ist es notwendig, die wichtigsten Wörter herauszufischen und sie je nach Vorkommen unterschiedlich groß darzustellen, evtl. noch mit unterschiedlichen Farben von dunkelgrau bis weiß. Ganz unten könnt ihr euch ein Beispiel ansehen, wie ich es in meinem Forum verwende.
Das müsst ihr dann aber selbst programmieren.
Eine viel bessere Lösung wäre es, nicht nur nach großgeschriebenen Wörtern zu suchen, sondern den Text mit einer Keywords-Bibliothek zu vergleichen. Das ist jedoch mühsam, denn wo kriegt man so eine Keywords Bibliothek her, in der so ziemlich alle Wörter stehen, die wichtig sein könnten? Zweitens würde sicher die Performance darunter leiden, wenn wir den Text mit solch einer riesigen Bibliothek vergleichen würden.
Mein Keyword Generator macht den Job auch ziemlich gut. Ein Problem sind die Leute, die alles klein schreiben, aber mit denen müssen wir halt leben.
Wir fangen einfach mal an und erstellen einen String mit dem Text.
$text = 'Wir schreiben einen Keyword Generator. Man könnte auch sagen es ist ein Keyword Generator Tool, vielleicht schreiben wir einfach mal Keyword-Generator Tool, oder auch Keyword-GENERATOR-Tool, was ja das gleiche ist. Das Keyword in diesem Text ist natürlich KeYwoRD.';
Wir haben jetzt unseren Text, der in der Praxis z.b. aus sämtlichen Forumspostings einer Seite bestehen könnte, so wie es in meinem Forum der Fall ist.
Nun machen wir uns daran, einfach mal alle groß geschriebenen Wörter und Wortkombinationen (bestehend aus maximal 3 aufeinanderfolgenden groß geschriebenen Wörtern) herauszufiltern. Dafür benutzen wir ein Pattern und den PHP Befehl preg_match_all.
$pattern1 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/'; preg_match_all($pattern1, $text, $array1);
Nicht erschrecken! Dieses Pattern besteht regex-Mustern, also Mustern, mit denen wir nach Übereinstimmungen suchen können. [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ bedeutet einfach, wir suchen nach Wörtern, deren erster Buchstabe groß geschrieben ist, die darauf folgenden Wörter groß oder klein geschrieben sind, und das Wort muss aus mindestens 3 Buchstaben bestehen.
Da wir aber nicht nur einzelne Wörter auslesen wollen, sondern auch Kombinationen aus Wörtern, sagen wir in unserem Muster, dass zuerst nach Wortkombinationen aus drei Wörtern gesucht werden soll – oder nach Kombis mit zwei Wörtern, zum Schluß nach einzelnen Wörtern – in dieser Reihenfolge.
Wir schauen uns mal das Ergebnis an, welches in dem Array $array1[0] gespeichert ist.
print_r($array1[0]);
Das Ergebnis:
Array ( [0] => Wir [1] => Keyword Generator [2] => Man [3] => Keyword Generator Tool [4] => Keyword [5] => Generator Tool [6] => Keyword [7] => GENERATOR [8] => Tool [9] => Das Keyword [10] => Text [11] => KeYwoRD )
Naja, irgendwie ist da etwas schief gelaufen! Wo kommt denn Generator Tool her, oder gar Generator? In unserem Muster steht doch Keyword-Generator Tool, aber wir bekommen nur Generator Tool. Achja, der Bindestrich. Klar, unser Muster ignoriert Keyword-Generator, da es davon ausgeht, dass Wortkombinationen mit einem Leerzeichen getrennt werden. Also ersetzen wir einfach mal alle Binde- und Unterstriche mit einem Leerzeichen, sodaß aus Keyword-Generator Tool ganz einfach Keyword Generator Tool wird.
$text = str_replace(array('-','_'),array(' '),$text);
Array ( [0] => Wir [1] => Keyword Generator [2] => Man [3] => Keyword Generator Tool [4] => Keyword Generator Tool [5] => Keyword GENERATOR Tool [6] => Das Keyword [7] => Text [8] => KeYwoRD )
Ja, so gefällt mir das schon besser.
Jetzt zählen wir die Wörter nach ihrem Vorkommen und sortieren sie auch danach. Das geht ziemlich einfach.
$ausgabe1 = array_count_values($array1[0]); array_multisort($ausgabe1, SORT_DESC);
Nun haben wir ein weiteres Array, nämlich $ausgabe1. Wir sehen uns mal den Inhalt an.
print_r($ausgabe1);
Array ( [Keyword Generator Tool] => 2 [Text] => 1 [KeYwoRD] => 1 [Das Keyword] => 1 [Keyword GENERATOR Tool] => 1 [Man] => 1 [Wir] => 1 [Keyword Generator] => 1 )
Aha, wie wir sehen, bestehen die Schlüssel dieses Arrays aus unseren Wörtern, die Werte bestehen aus der Häufigkeit ihres Vorkommens. Demnach kommt Keyword Generator Tool 2 mal vor, Text 1 mal, KeYwoRD auch 1 mal. Moment, das ist doch dumm. KeYwoRD und Keyword ist doch das selbe.
Ja, für Menschen natürlich schon, für einen Computer ist es aber absolut nicht das selbe.
Also was machen wir? Wir lösen dieses Problem ganz einfach so: wir wandeln von Anfang an alle unsere durch das Muster gefundenen Wörter in Kleinbuchstaben um, um dann jeden ersten Buchstaben eines jeden Wortes in einen Großbuchstaben zu verwandeln.
$array1[0] = array_map('ucwords', array_map('strtolower', $array1[0]));
Ergebnis:
Array ( [Keyword Generator Tool] => 3 [Text] => 1 [Keyword] => 1 [Das Keyword] => 1 [Wir] => 1 [Man] => 1 [Keyword Generator] => 1 )
Gut, es hat hingehauen. Keyword GENERATOR Tool wurde zu Keyword Generator Tool und kommt nun drei mal vor, statt nur 2 mal wie vorher.
Wir werden jetzt mal einen String erzeugen, den wir dann einfach als META-TAG benutzen können. Die Werte des Arrays, also das Vorkommen der Wörter, interessiert uns jetzt nicht mehr, da wir ja die Worte schon danach geordnet haben. Uns interessieren jetzt die Schlüssel, also die Wörter, die wir für unsere Liste brauchen.
$keywords = array_keys($ausgabe1); $keywords = implode(', ',$keywords); echo $keywords;
Ergebnis:
Keyword Generator Tool, Text, Keyword, Das Keyword, Wir, Man, Keyword Generator
Naja, nicht schlecht, aber auch noch nicht das wahre. Die Wörter “Wir”, “Man” und auch das “Das” haben in unserer Liste nichts verloren. Faul wie wir sind, werden wir sie direkt am Anfang einfach aus dem Text entfernen. Dazu brauchen wir eine sogenannte Stopwords-Liste.
Stopwords sind z.B. das, er, sie, es, wenn, seine, und etc.
$stopwords = array('Wir ','Das ','Man '); $text = str_replace($stopwords,'',$text);
Das ist so ziemlich die einfachste Methode, um ungewünschte Wörter zu entfernen. Wir benutzen ganz einfach str_replace und fügen nach jedem Stopword ein Leerezeichen hinzu. So können wir vermeiden, dass aus Wörtern wie “Manchester” “chester” wird, wenn wir das “Man” entfernen, oder aus dem Wort “Wirtshaus” “tshaus”.
Normalerweise werden diese Stopwords eh klein geschrieben und fallen eh durch unser Suchraster, allerdings kann es vorkommen, dass diese Wörter auch mal groß geschrieben werden. Eben am Satzanfang.
Das einzige Problem ist es, wenn dem “Wir” oder “Das” oder “Man” kein Leerzeichen folgen würde, sonder z.B. ein Komma. Dieses “Das,” würde nicht entfernt werden.
Mit preg_replace könnten wir das auch noch hinkriegen, aber erstens müssten wir dann unser ganzes Skript umkrempeln. Ich habe jetzt keine Lust, genauer darauf einzugehen, es hat jedenfalls etwas mit der Reihenfolge meines Skripts zu tun. ![]()
Und zweitens geht es auch so, und das wahrscheinlich performance-freundlicher (genau!!).
Gut, dann schauen wir mal, wie es jetzt aussieht.
Keyword Generator Tool, Keyword, Text, Keyword Generator
Ok. Bei längeren Texten empfiehlt es sich auch, die Keywords auf maximal 40 Wörter zu beschneiden.
$ausgabe1 = array_slice($ausgabe1,0,39);
Bis jetzt sieht unser Skript so aus:
$stopwords = array('Man ','Wir ','Das '); $text = 'Wir schreiben einen Keyword Generator. Man könnte auch sagen es ist ein Keyword Generator Tool, vielleicht schreiben wir einfach mal Keyword-Generator Tool, oder auch Keyword-GENERATOR-Tool, was ja das gleiche ist. Das Keyword in diesem Text ist natürlich KeYwoRD.'; $text = str_replace($stopwords,'',$text); $text = str_replace(array('-','_'),array(' '),$text); $pattern1 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-Z\ÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/'; preg_match_all($pattern1, $text, $array1); $array1[0] = array_map('ucwords', array_map('strtolower', $array1[0])); $ausgabe1 = array_count_values($array1[0]); $ausgabe1 = array_slice($ausgabe1,0,39); array_multisort($ausgabe1, SORT_DESC); $keywords = array_keys($ausgabe1); $keywords = implode(', ',$keywords); echo $keywords;
Wir können es aber noch besser machen.
Und zwar benutzen wir einfach mehrere Pattern. Das erste Pattern liest alle großgeschriebenen Wörter aus, sowie auch alle Wortkombinationen aus maximal drei aufeinander folgenden großgeschriebenen Wörtern.
Das zweite Pattern liest nur alle Wortkombinationen bestehend aus exakt drei aufeinander folgenden großgeschriebenen Wörtern aus. (Und zwar nicht aus dem ganzen Text sondern aus dem 1. Ergebnis, weil hier schon alles was wir brauchen enthalten ist. Es wäre ja auch blöd viermal den gesamten Text durchzusuchen)
Das dritte Pattern liest nur alle Wortkombinationen bestehend aus exakt zwei aufeinander folgenden großgeschriebenen Wörtern aus. Natürlich aus dem vorigen Ergebnis.
Und das vierte Pattern liest nur alle einzelnen roßgeschriebenen Wörter aus. Natürlich aus dem vorigen Ergebnis.
Dazu poste ich einfach mal das veränderte Skript und erkläre dann, was es damit auf sich hat.
$tags = 'Wir schreiben einen Keyword Generator. Man könnte auch sagen es ist ein Keyword Generator Tool, vielleicht schreiben wir einfach mal Keyword-Generator Tool, oder auch Keyword-GENERATOR-Tool, was ja das gleiche ist. Das Keyword in diesem Text ist natürlich KeYwoRD.'; $pattern1 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+|[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/'; $pattern2 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/';$pattern3 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+ [A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/'; $pattern4 = '/\b[A-ZÄÖÜ]{1}+[A-Za-zäüöéèáàúùß]{2,}+\b/'; preg_match_all($pattern1, $tags, $array1); $tags2 = implode(', ',$array1[0]); preg_match_all($pattern2, $tags2, $array2); $tags3 = implode(', ',$array1[0]); preg_match_all($pattern3, $tags3, $array3); $tags4 = implode(', ',$array1[0]); preg_match_all($pattern4, $tags4, $array4); $array1[0] = array_map('ucwords', array_map('strtolower', $array1[0])); $array2[0] = array_map('ucwords', array_map('strtolower', $array2[0])); $array3[0] = array_map('ucwords', array_map('strtolower', $array3[0])); $array4[0] = array_map('ucwords', array_map('strtolower', $array4[0])); $ausgabe1 = array_count_values($array1[0]); $ausgabe2 = array_count_values($array2[0]); $ausgabe3 = array_count_values($array3[0]); $ausgabe4 = array_count_values($array4[0]); $new_keys = array_merge($ausgabe1,$ausgabe2,$ausgabe3,$ausgabe4); array_multisort($new_keys, SORT_DESC); $new_keys = array_slice($new_keys,0,39); $keywords = array_keys($new_keys); $keywords = implode(', ',$keywords);
Das Ergebnis:
Erstes Skript:
Keyword Generator Tool, Keyword, Text, Keyword Generator
Zweites Skript:
Keyword, Generator, Keyword Generator, Tool, Keyword Generator Tool, Text
Genial, Keyword ist an erster Stelle. Das Generator an zweiter stelle bereitet mir aber doch irgendwie Unbehangen. Um einen Generator geht es hier ja nicht wirklich, oder?
Hm, kurz überlegen. Mit array_merge verbinden wir ja alle $ausgabe Arrays zu einem einzigen Array, das uns dann das Ergebnis liefert.
In $ausgabe1 finden wir alle Wörter und Wortkombinationen. Wenn das Pattern auf eine Wortkombination aus drei Wörtern stößt, wird dieser Treffer gespeichert. Es speichert dann bei Keyword Generator Tool nur “Keyword Generator Tool”. “Generator” und “Tool” wird nicht noch mal gespeichert.
Wenn es aber nicht auf eine Wortkombination aus drei Elementen stößt, schaut es nach, ob es eine Wortkombination aus zwei Worten findet. “Keyword Generator” zum Beispiel. Wir auch vorher speichert es “Keyword Generator” und fährt mit der Suche fort, ohne sich um den “Generator” zu kümmern.
In $ausgabe2 finden wir alle Wortkombinationen aus drei Elementen bestehend. Das zweite Pattern ignoriert jetzt alle einzelnen Wörter und alle Kombis mit zwei Elementen.
In $ausgabe3 finden wir alle Kombis aus zwei Elementen.
In $ausgabe4 finden wir alle einzelnen Wörter, unabhängig davon, ob diese in einer Wortkombination stehen oder nicht. Es findet bei “Keyword Generator Tool” einmal “Keyword”, einmal “Generator” und einmal “Tool”.
Mit
array_merge($ausgabe1,$ausgabe2,$ausgabe3,$ausgabe4);
fügen wir nun alle $ausgaben zusammen, wobei die Werte der jeweils vorherigen $ausgabe von der folgenden Ausgabe überschrieben werden.
Das heisst, steht in $ausgabe1 das Wort Keyword => 4 mal, und in $ausgabe4, dass ja alle einzelnen Wörter zählt, Keyword => 6 mal, wird aus dem Keyword => 4 in $ausgabe1 Keyword => 6.
Und so weiter.
Das Problem ist nun die Sache mit dem Generator. In der ersten $ausgabe1 kommt es gar nicht vor, denn im Text steht es nicht alleine, d.h. es steht immer in einer Kombination. Das ist schon mal gut.
In $ausgabe4 wird aber auf die Kombinationen gepfiffen und es erscheint dann trotzdem im Ergebnis-Array, und zwar nicht nur einmal sondern öfter, weil es ja schon in “Keyword Generator” vorkommt, aber auch in “Keyword Generator Tool”. Dabei ist dieses “Generator”, wenn es alleine steht, unnütz, belegt aber in unserer Keywords-Liste den zweiten Platz.
Das ist gewiss suboptimal. Was könnte man da machen? Die Lösung ist natürlich relativ einfach.
Wir schauen einfach in unserer ersten $ausgabe1 nach, ob das Wort “Generator” auch als einzelnes Wort ausserhalb einer Kombi gefunden wurde. Ist dem so, schenken wir ihm die volle Aufmerksamkeit. Ist dem nicht so, ignorieren wir es komplett als einzelnes Wort: Wir lassen es erst gar nicht in unserem Suchergebnis erscheinen.
Dazu schreiben wir einfach vor dem array_merge($ausgabe1,$ausgabe2,$ausgabe3,$ausgabe4); zwei foreach-Schleifen. Die kümmern sich nur um die einzelnden und um die Kombis mit 2 Elementen. Um die 3er Kombis müssen wir uns nicht weiter kümmern, wir können sie danach einfach zum ersten $ausgabe1 dazufügen.
foreach ($ausgabe3 as $key => $value) { if (isset($ausgabe1[$key])) {$ausgabe1[$key] = $value;} } foreach ($ausgabe4 as $key => $value) { if (isset($ausgabe1[$key])) {$ausgabe1[$key] = $value;} }
Wir ändern jetzt einfach die Zeile mit
$new_keys = array_merge($ausgabe1,$ausgabe2,$ausgabe3,$ausgabe4);
in
$new_keys = array_merge($ausgabe1,$ausgabe2);
In den Schleifen steht einfach drin, dass wir für jeden Treffer in den jeweiligen $ausgaben diese mit dem Wert in $ausgabe1 ersetzen – so kann kein in einer Kombi gefundenes “Generator” im Ergebnis landen.
Anders ist es, wenn wir im Text einmal das Wort “Generator” alleine finden würden. Das ist aber nicht der Fall.
Und das Ergebnis sieht dann so aus:
Keyword, Keyword Generator, Keyword Generator Tool, Text
Das Generator ist weg.
Nehmen wir jetzt mal ein anderes Beispiel als Text.
“Super Metroid Fans können mit dem Super Metroid Hack Super Metroid Redesign endlich mal ein neues Super Metroid spielen. Metroid ist ja auch ein geiles Spiel! Super Metroid Redesign ist ein Hack vom originalen Super Metroid. Es ist einfach genial.”
Ergebnis:
Metroid, Super Metroid, Super Metroid Redesign, Hack, Spiel, Super Metroid Hack, Super Metroid Fans
Seht ihr was ich meine? Metroid ist an erster Stelle, weil es auch mal als alleine stehendes Wort gefunden wird. Super ist erst gar nicht dabei? Warum nicht? Weil es im Text nicht ein einziges mal ausserhalb einer Kombination vorkommt. Hack kommt vor, und Spiel kommt auch vor, aber Super nicht. Das finde ich gut, denn Super würde den ersten Platz in unserer Liste belegen, weil es in Kombis öfter auftaucht.
Evtl. werde ich das Skript noch soweit verändern, dass ein alleine stehendes Wort auch öfter Vorkommen muss, um gezählt zu werden.
Denn was passiert, wenn in dem Text zufällig “Ja, das ist Super!” vorkommt. Na, die Frage könnt ihr doch selbst beantworten, nehme ich an.
So, jetzt muss ich aber Schluß machen.
Ich hoffe der eine oder andere kann mit diesem Beinahe Tutorial etwas anfangen. Ich weiß, das Skript ist nicht perfekt, aber vermutlich ein guter Ansatz für Newbies, die auch mal so etwas programmieren wollen und nicht nur fertige Skripts einbauen wollen.
Wenn ihr euch für die Sache interessiert könnt ihr irgendwann sicher ein Skript schreiben, dass meins alt aussehen lässt. Viel Spaß dabei. (Ich werde dann mal versuchen es zu verbessern.)
ich finde deine idee genial.
auch wenn ich die patterns und php-codes (noch?) nicht verstehe. ich glaube nicht an seit längerem kursierenden gerüchte, daß metatags “out” sein sollen.
vor ca. 1 jahr habe ich mal eine glosse auf dem “weblog” meiner homepage geschrieben die generell mit SearchEngineOptimization (SEO) zu tun hat und diese glosse jetzt in nochmal gebloggt.
Das Problem mit den angeblich kaum noch beachteten Meta-Tag Keywords ist ja, dass Google davon ausgeht, je öfter ein Wort vorkommt, desto wichtiger ist es, anstatt einfach angeben zu können, um was es eigentlich geht. Das zwingt die Leute dann dazu, ständig die Keywords zu wiederholen, was zu richtig blöden Texten führt. Jemand der nach Gefühl schreiben will, wird schlecht platziert. Statt dessen findet man ganz vorne diese Seiten, die dutzendmal die gleichen Wörter wiederholen. Auch nicht der Bringer!
Hey, vielen Dank für dieses schöne Tutorial. Das ist alles super erklärt! Habe es noch nicht ausprobiert, werde das aber nachher sicherlich einmal machen.
Lieben Dank!!!
Wirklich gute Idee!! Ich wollte es umsetzen, aber es kamen eine Reihe an Fehlermeldungen. Den Fehler habe ich leider nicht gefunden, konnte ihn aber auf die patterns (wahrscheinlich) eingrenzen. Irgendwas passt da wohl nicht?! …Sofern ich selbst jetzt nichts falsch gemacht habe, aber ich habe ewig rumprobiert und geschaut. Weißt Du da was drüber oder läuft’s bei Dir einwandfrei??
Lg Johannes
Ja ich habs probiert, hat irgendwie nicht so geklappt. Aber ich hab das ganze ein bisschen verbessert, einfach hier downloaden.
danke vielmals!
Ein super Script und sehr schön erklärt. Die überarbeitete Version funktioniert auch einwandfrei.
Kleiner Tipp von meiner Seite, sofern du deinen Traffic auf deiner Seite erhöhen möchtest. Binde doch noch ein Formular mit ein, in dem man seinen Text einfügen kann und anschließend über den „Senden“ Button über dein Script die Keywörter generieren lässt.
Ich bin nämlich auf der Suche nach so einem Tool gewesen und jetzt konnte ich mir dank deiner Hilfe, ein eigenes Script hierzu erstellen. Werde ich natürlich nicht online stellen, da es ja dein Code ist
Sorry, hier der Codeschnippsel dazu als start.php
<form action=”generator.php” method=”post”>
<textarea name=”tags” cols=”40″ rows=”20″>Hier Text einfügen</textarea>
<p><input type=”submit” value=”Absenden”/></p>
</form>
und anschließend in deiner php (hab ich generator.php genannt) noch folgenden Befehl auswechseln
$tags = $_POST["tags"];
anstatt
$tags = ‘Wir schreiben einen Keyword Generator. Man könnte auch sagen es ist ein Keyword Generator Tool, vielleicht schreiben wir einfach mal Keyword-Generator Tool, oder auch Keyword-GENERATOR-Tool, was ja das gleiche ist. Das Keyword in diesem Text ist natürlich KeYwoRD.’;
Ja, das ist eine gute Idee. Werde ich machen, danke.
Ich werd das ganze erst mal neu programmieren und dann als Klasse anbieten.
Damals hatte ich ja noch keine Ahnung, dass es sowas wie OOP gibt.
Habe mal etwas änhliches gebastelt, muss aber sagen, dein Ansatz bzgl. der Priorisierung ist besser. Allerdings kann dein Script nicht mit Umlauten umgehen… Wäre super, wenn du das noch berichtigst. Statt “Verbesserungsmöglichkeit” kommt nämlich “verbesserungsm” oder statt “Vorführung” nur noch “vorf” heraus.
Hallo. Das Script selbst kann schon mit Umlauten umgehen, es liegt daran dass der Text hier den man downloaden bzw. kopieren kann UTF-8 ist. Du müsstest den Text z.B. als ISO-8851-1 oder ISO-8851-15 speichern, dann haut das auch mit den Umlauten hin.
Als ich das ursprünglich programmiert habe – ich war ehrlich gesagt noch totaler Anfänger – hat das ja auch hingehaut, nur als ich wiederum den Text hier zum Download angeboten habe – damals hatte ich noch keine Ahnung von UTF-8 und Kodierung und so
Ich hab inzwischen mal angefangen alles neu zu machen, objektorientiert. Ich hab dann z.B. auch kleine Wörter berücksichtigt, wenn die in Zusammenhang mit einem wichtigen großen Wort stehen, bin aber gescheitert, weil ich wohl zu viel wollte.
Z.B. wenn jemand einen Text schreibt a la:
Die französiche Revolution ist nicht vergleichbar mit der sexuellen Revolution. Bla bla französische Revolution, bla bla ein Zeichen sexueller Revolution…
Dann sollten Keywords rauskommen wie:
französische Revolution, sexuelle Revolution.
Bis jetzt steht aber da:
französische Revolution, sexueller Revolution, sexuellen Revolution
Weiß nicht, ob ich das noch besser hinbekomme. Aber wenn ich mal Zeit habe kümmere ich mich zumindest mal um das Kodierungsproblem und lad ein verbessertes Skript hoch, das auch kleine Wörter berücksichtigt usw.
(Aber das Umlautproblem ist wie gesagt einfach nur ein Kodierungsproblem, Text einfach mal als ISO-8859-15 speichern mit einem Editor der Kodierungseinstellung erlaubt)
Wir haben ausgehend von der modifizierten Version das Script auf unserer Seite im Einsatz. Anfangs gab es Probleme mit den Umlauten (a,ö,ü ect.). Aus “grüne” wurde “üne” usw. In einem Forum fand ich nach langer Suche folgende Lösung:
In dem Scripte einfach mal folgende Zeile einfügen:
(am besten am Anfang bzw. vor der verwendung von \w in einem regexp)
setlocale(LC_CTYPE,”de_DE.ISO-8859-1″);
Und siehe da: Es klappt!
Noch ein Tipp für die Stopwords: http://members.unine.ch/jacques.savoy/clef/germanST.txt
Sehr gute Liste – über 600 Wörter. Auf der Seite gibt es auch für andere Sprachen entsprechende Listen.
Das sind gute News, dass das Skript jemand verwendet. Freut mich.
Die Liste kann ich auch gut brauchen.
Ich muss den Artikel und das Skript wirklich mal auf den neuesten Stand bringen, z.B. dieses A-ZÄÖÜ a-zäöüàá usw. kann man ja bei richtiger Einstellung des locales durch ein einfaches \w ersetzen.
Also ich finde es eine gute Idee…..
*grins*
)
dafür sollte es ein Plugin für WordPress geben finde ich
Hey jetzt hast a Geschäftsidee