Ankündigung

Einklappen
Keine Ankündigung bisher.

Algorithmisch häufigkeit von Wortketten in Text ermitteln

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Algorithmisch häufigkeit von Wortketten in Text ermitteln

    Hallo,

    ich möchte gerne einen Text algorithmisch auswerten lassen und Wortketten, die im Text vorkommen zählen und die jeweilige Häufigkeit ermitteln.

    zum Beispiel, Ausgangstext:
    das hier ist ein beispielstext. ein beispielstext kann verschiedene wörter enthalten.

    Ergebnis:
    "ein beispieltext" - 2x im Text enthalten.

    Um die Häufigkeit einzelner Wörter zu zählen würde ich nach Leerzeichen ein explode durchführen und dann mittels verschiedener Array Funktionen sortieren und zählen. Wie gehe ich aber für 2...n wortstücke vor um auch effezient zu zählen? Mir fehlt komplett der Ansatz

    Vielleicht hat jemand ja schon mal ähnliches umgesetzt - bin für jegliche Hilfe dankbar!

  • #2
    http://www2.inf.fh-rhein-sieg.de/~pb...men/script.pdf
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      vielleicht das?

      https://php.net/manual/de/function.count-chars.php

      Kommentar


      • #4
        Ich weiß ja nicht, wie wichtig es für Dich ist, einen eigenen Algorithmus zu entwickeln.

        PHP hat die Funktion substr_count an Bord, die eben genau das tut, was Du machen möchtest. http://php.net/manual/de/function.substr-count.php
        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

        Kommentar


        • #5
          Danke für euere Antworten. Also wenn es geht würde ich es gerne vermeiden einen eigenen Algorithmus dafür zu entwerfen - gerade weil ich denke dass diese Sache schon mehrfach umgesetzt wurde.

          Der Ansatz mit count_chars ist schon richtig. Das Problem ist, dass ich die Texte vorher nicht kenne um die entsprechenden Keywords in einem "Set" zu halten, nach dem durchsucht wird. Für Wörter (=1 String) wäre das ganze aber auch ganz schnell realisierbar über:

          1: Explode gesamten Textkorpus nach Leerzeichen (Ergebnis, Array aus allen einzelnen Wörtern)
          2: array_count_values

          Mein Problem liegt aber darin, wie oben im Beispiel schon angegeben, dass ich auch 2, 3 oder n Wörter die immer hintereinander folgen mit der entsprechenden Häufigkeit haben möchte, sofern diese größer als x ist.

          Kommentar


          • #6
            Also zum Beispiel sowas wie "string1 string2" - kommt x mal vor, "string1 string2 string3" kommt y mal vor. Hoffe ich konnte mich möglichst klar ausdrücken.

            Kommentar


            • #7
              Zitat von mts20 Beitrag anzeigen
              Also zum Beispiel sowas wie "string1 string2" - kommt x mal vor, "string1 string2 string3" kommt y mal vor. Hoffe ich konnte mich möglichst klar ausdrücken.
              Kommt es den auf sprachliche Relevanz an. "Er war sich sicher, automatische Klospülungen sind die Zukunft."

              Soll dann auch "sicher, automatische" gezählt werden.

              Und auch "sich sicher, automatische Klospülung".

              Gibt es denn eine Höchstzahl von aufeinanderfolgenden Strings oder geht das tatsächlich von 1 string bis Anzahl der abgrenzbaren Ausdrücke inkl. der jeweiligen Erstreckungspermutationen.

              Wenn Du jetzt auf alles mit "Ja" antwortest, kannst Du schon mal Rechenzeit beim Tianhe-2 buchen, schätze ich.
              [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

              Kommentar


              • #8
                Mit ein paar Einschränkungen kannst du die Zeit drastisch verkürzen:
                • Beginne bei Wortkette mit einer Anzahl Wörtern von 1 und arbeite dich zu n Wörtern "vor".
                • Wurde die Wortkette bereits einmal gefunden, so berechne nicht noch einmal.
                • Wurde die derzeitige Wortkette abzüglich dem letzten Wort nicht gefunden, so berechne nicht.
                • Besteht das Wort nur aus einem Zeichen, so ist es kein Wort => nicht berechnen.
                • Wurde kein keine Wortkette mit n Wörtern gefunden, so wird auch keine Wortkette mit n+1 Wörtern gefunden => Funktion ist fertig.

                Mit berechnen ist das Herausfinden der Vorkommnisse gemeint.

                Wenn man darüber noch länger nachdenkt, kommen sicherlich noch einige andere Bedingungen hinzu.
                Natürlich kann man die potenzierende Wirkung eines solchen Algorithmus nicht komplett aushebeln, aber deutlich eindämmen.
                War der Beitrag hilfreich? Dann Bedank dich mit einem klick auf .

                Kommentar

                Lädt...
                X