Häufigkeiten vergleichen

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

  • Häufigkeiten vergleichen

    Hallo und guten Abend,

    ich will folgendes machen:

    Ich habe eine Tabelle, in der die Häufigkeit der Buchstaben im
    Deutschen Alphabet vorkommt. Die sieht so aus:

    a 6,51 %
    b 1,89 %
    c 3,06 %
    ...

    Ich will jetzt aus einem Text die Häufigkeit der Buchstaben ermitteln,
    das geht ja noch relativ einfach. Ich zähle einfach z.B. wie oft im String
    das "b" vorkommt und berechne aus der Gesambuchstabenzahl die Häufigkeit.
    Als Ergebnis hab ich dann z.B. 1.94 %

    Nehmen wir jetzt an, ich weiß nicht, um welchen Buchstaben es sich handelt,
    dann möchte ich zu folgendem Ergebnis kommen:

    "Das Zeichen xy hat im Text eine Häufigkeit von 1,94 % - das entspricht
    am ehesten dem Buchstaben "b" mit einer Abweichung von 0,05%"

    Um es dann zu verfeinern, wäre noch schön,
    die nahesten 3 Buchstaben auszugeben, die zu dem Ergbnis passen.

    Mein Problem dabei ist eigentlich nur,
    zwei _ähnliche_ Zahlen miteinander zu vergleichen,
    alles andere sollte kein Problem sein.

    Weiß jemand, wie das geht? Gibt es dafür eine Funktion?
    Hab leider nichts passendes gefunden...

    Danke schonmal,
    Coni
    Gruß, Coni
    ~~ codito ergo sum - ich code, also bin ich! ~~

  • #2
    Re: Häufigkeiten vergleichen

    Original geschrieben von Coniaric
    Hallo und guten Abend,

    ich will folgendes machen:

    Ich habe eine Tabelle, in der die Häufigkeit der Buchstaben im
    Deutschen Alphabet vorkommt. Die sieht so aus:

    a 6,51 %
    b 1,89 %
    c 3,06 %
    ...
    sobald du mir erklärst, seit wann das a häufiger im alphabet vorkommt, als das b, schau ich mal den rest durch

    edit: naja noch ma im ernst. ich denke (wenn du schon tabellen hast), dann lös das übern query:

    Code:
    select * from alphabet where haufigkeit > ermittelte_haufigkeit order by haeufigkeit asc limit 1;
    Zuletzt geändert von arkos; 05.11.2007, 17:19.
    **********
    arkos
    **********

    Kommentar


    • #3
      Haahaa.
      Okay, war etwa unglücklich ausgedrückt.
      Genau:
      Wie häufig ein Buchstabe des deutschen Alphabets in allen Wörtern
      (sprich, z.B. im Duden, in langen Texten usw.) vorkommt.

      Klar, es ist ein rein statistischer Wert,
      aber von irgendwas muß man ja ausgehen...

      EDIT:

      http://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit

      Gruß, Coni
      ~~ codito ergo sum - ich code, also bin ich! ~~

      Kommentar


      • #4
        s. edit ...

        hab erst nach deinem post editiert... oder mal wieder zu lange gebraucht
        **********
        arkos
        **********

        Kommentar


        • #5
          Re: Re: Häufigkeiten vergleichen

          Code:
          select * from alphabet where haufigkeit > ermittelte_haufigkeit order by haeufigkeit asc limit 1;
          Hm, danke, für eine SQL-Lösung schonmal nicht schlecht.
          Aber wenn

          haufigkeit1=10
          haufigkeit2=15
          ermittelte_haufigkeit=11

          ist, dann spuckt er ja h2 aus, obwohl h1 Näher dran wäre.
          Und wenn ich 3 Ergebnisse will,
          dann geht das so auch nicht,
          weil die Näherung ja von beiden Seiten sein kann.

          Grüße,
          Coni


          EDIT:

          Vorerst hab ich noch gar keine Tabelle, ich dachte,
          es ließe sich vielleicht erstmal einfach über eine PHP-Funktion lösen, à la

          naeherungsfunktion($anzahl, $haufigkeit);

          Ein anderer Lösungsansatz wäre ein Schleife, in der ich
          den Geringsten und den höchsten Wert durch eine FOR-Schleife in
          0.01er Schritten laufen lasse und für jeden ermittelten Wert den
          geringsten Abstand in eine Variable speichere - wenn es nicht
          einfacher geht!


          Zuletzt geändert von Coniaric; 05.11.2007, 19:47.
          Gruß, Coni
          ~~ codito ergo sum - ich code, also bin ich! ~~

          Kommentar


          • #6
            Du hast ein mathematisches Problem! Löse es erstmal, dann kannst du über die Umsetzung in PHP nachdenken. Wenn du dann Probleme bei der Umsetzung hast, dann poste:

            1. deine mathematische Lösung
            2. deine Umsetzungsprobleme

            Kommentar


            • #7
              Original geschrieben von asp2php
              Du hast ein mathematisches Problem!

              Klar, wenn es dafür keine Funktion gibt, hab ich ein mathematisches
              Problem, dann hast Du recht. Darum hab ich aber gefragt!

              Wenn die Antwort lautet, es gibt dafür keine Funktion,
              dann werd ich mich natürlich erstmal zurückziehen und schauen,
              wie die logische Lösung ist, bevor die programmiertechnische
              kommt.

              Aber da ich nicht alle Funktionen von PHP kenne (das sind ja schließlich
              ein paar und die Suche in der Referenz hat auch nichts gebracht),
              frage ich. Hätte ja durchaus sein können und ich hätte
              mir viel Zeit ersparen können, das umständlich zusammenzubauen.
              (So ging es mir nämlich schonmal mit preg_match und der einen
              oder anderen Berechnung von DATE-TIME-Feldern)
              Gruß, Coni
              ~~ codito ergo sum - ich code, also bin ich! ~~

              Kommentar


              • #8
                Hm, danke, für eine SQL-Lösung schonmal nicht schlecht.
                Aber wenn

                haufigkeit1=10
                haufigkeit2=15
                ermittelte_haufigkeit=11

                ist, dann spuckt er ja h2 aus, obwohl h1 Näher dran wäre.
                Und wenn ich 3 Ergebnisse will,
                dann geht das so auch nicht,
                weil die Näherung ja von beiden Seiten sein kann.
                Dann nimm die Näherung von beiden Seiten:
                Code:
                select buchstabe, abs( häufigkeit - ermittelte_häufigkeit ) as h
                from alphabet
                order by h
                limit 0,3
                Ungetestet, gibt dir aber die 3 nahesten Buchstaben zurück.

                Kommentar


                • #9
                  Danke!
                  Ich muß zugeben, da wär ich jetzt garnicht drauf gekommen...
                  werd gleich mal damit experimentieren.
                  Gruß, Coni
                  ~~ codito ergo sum - ich code, also bin ich! ~~

                  Kommentar


                  • #10
                    höhö, da war ich aber dermaßen lahm, die zwei Postings vor mir waren da noch nicht da ^^
                    Nächstmal hole ich das Bier nach dem Posting

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      höhö, da war ich aber dermaßen lahm, die zwei Postings vor mir waren da noch nicht da ^^
                      Nächstmal hole ich das Bier nach dem Posting
                      Dennoch warst Du asp2php um einen logischen Schritt voraus! ;-)
                      Gruß, Coni
                      ~~ codito ergo sum - ich code, also bin ich! ~~

                      Kommentar


                      • #12
                        Original geschrieben von Coniaric
                        Dennoch warst Du asp2php um einen logischen Schritt voraus! ;-)
                        Nur weil du nichts mit Mathe anfangen kannst? Ich biete generell keine fertige Lösung an!

                        Kommentar


                        • #13
                          Ich wollte ja keine fertige Lösung, nur eine Funktion, die es bereits gibt in PHP.
                          Ich will ja das Rad nicht neu erfinden!

                          Stimmt, ich kann mit Mathe nicht so viel anfangen. Allerdings ist PHP
                          für mich so praxisnah, daß ich da meist keine Probleme habe
                          und wie oben schon erwähnt, wollte ich mich eingehend damit beschäftigen,
                          bevor ich wieder poste. Er war aber schneller!
                          Gruß, Coni
                          ~~ codito ergo sum - ich code, also bin ich! ~~

                          Kommentar


                          • #14
                            Original geschrieben von asp2php
                            Nur weil du nichts mit Mathe anfangen kannst? Ich biete generell keine fertige Lösung an!
                            Vielleicht mache ich das nach meinen nächsten 9000 Postings auch nicht mehr

                            Kommentar


                            • #15
                              Nach 10000 Postings hier muß man auch schon ganz schön blass sein... ;-)

                              Ist nicht negativ gemeint, ich bin ja froh, daß hier so erfahrene Programmierer rumlaufen!
                              Gruß, Coni
                              ~~ codito ergo sum - ich code, also bin ich! ~~

                              Kommentar

                              Lädt...
                              X