Wörter nach Häufigkeit sortieren?

4 Antworten

Schau dir die Request-URLs an, die verwendet werden, wenn du bei Google etwas suchst. So findest du ein Muster, mit dem du deine Suchanfragen zusammenbauen kannst.

Einmal spontan geschaut, dürfte es dieses bereits sein:

https://www.google.com/search?q=YourSearchTerm

Mit einem AJAX-Request (JavaScript) oder cURL (PHP) kannst du einen konkreten Request abschicken und den Response (die Suchergebnisseite) erhalten. Da die Suchergebnisse bei Google in verschiedene Seiten aufgeteilt werden, erhältst du je Request natürlich nur eine Seite zurück. Über den URL-Querystring solltest du andere Seiten angeben können.

Im nächsten Schritt solltest du wohl schauen, dass du das HTML-Markup von dem Inhalt trennst. Dafür gibt es unterschiedliche Lösungsansätze:

  • DOM parsen (JS: z.B. via DOMParser oder jQuery; PHP: z.B. mit DOMDocument)
  • mittels externen Bibliotheken zum Parsen von HTML
  • Filtern via Regex oder String-Funktionen (ziemlich aufwendig)

Dabei solltest du dich nur auf den Bereich/Container beschränken, der die Suchergebnisse beinhaltet. Analysiere im Vorfeld also das Markup der Google-Suchergebnisseite.

Der herausgefilterte Inhalt muss nun in Wörter aufgetrennt werden. Die split-Funktion sollte ausreichen (Leerzeichen = Trennzeichen), oder man arbeitet hier erneut mit regulären Ausdrücken. Ein Filtern danach (oder vielleicht schon davor) ist eh nochmals notwendig, denn Satzzeichen müssen von den Wörtern getrennt werden und evt. gibt es noch andere Dinge, die du nicht mitzählen möchtest (irgendwelche Sonderzeichen, Abkürzungen, bestimmte Wörter, o.ä.).

Der nächste Schritt wäre das Durchlaufen durch die Liste an noch übrig gebliebener Wörter und zählen. Lege dir dafür ein assoziatives Array an (gibt es in beiden Sprachen). Der Key ist das Wort, der Wert die Anzahl an Vorkommen.

Pseudocode:

for word in words
  if wordMap[word]
    ++wordMap[word]
  else
    wordMap[word] = 1

Stelle im Vorfeld Bedingungen für die Vergleiche auf. Soll die Groß- und Kleinschreibung beachtet werden?

Das Sortieren zuletzt sollte nicht mehr sonderlich schwierig sein. In PHP gibt es einige Suchfunktionen, auch JS bietet eine Suchfunktion. Wenn diese nicht helfen, kannst du dir ja eine eigene Sortierfunktion schreiben. Unterschiedliche Suchverfahren findest du hier, auf den jeweiligen Unterseiten findet sich zudem oft noch ein Algorithmus.

In dieser Antwort habe ich nun Schritt für Schritt betrachtet, wie man die einzelnen Teilprobleme bewältigen kann. Sicherlich lässt sich dieses gesamte Verfahren noch etwas in der Performanz verbessern, wenn man bestimmte Schritte kombiniert. Darauf werde ich aber nicht mehr eingehen.

Das größte Problem ist hier wohl die Google Ergebnisse als string zu bekommen das zählen sortieren und ausschließen sollte das geringste problem sein. Mit Java wärs wohl am einfachsten.

Mit PHP würdest du den String der Ergebnisse beispielsweise mit preg_split("/\s+/", $ergebnisse) als einzelne Wörter in ein Array speichern.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik

JavaScript: Wörter sammeln, Wörter zählen, Wörter filtern. Ggf Ergebnisse abspeichern Wo ist das Problem?

Woher ich das weiß:Studium / Ausbildung – Informatikstudium
Tyldu  10.07.2018, 00:14

wie stellt man das denn mit javascript an?

0