Text- Inhalts-Erkennung PHP

LukaszRT

Grünschnabel
Hallo

Ich habe vor eine Text- Inhaltserkennung zu programmieren, was konkret in PHP ablaufen soll. Vorgestellt habe ich mir das so, dass ein willkürlicher Text eingeben werden kann, und ich dann versuche in diesen Text Daten wie Name, Nachname, Adressen, Telefonnummern, Datum Beträge usw... zu erkennen und als Vorschlag zu markieren (vorzuschlagen). Ziel ist z.B. aus einer Anfrage direkt den Kunden anzulegen, oder einen vorhanden Kunden vorzuschlagen, zuzuordnen.

Ich habe da schon mal die ersten Erfolge. z.B. gehen einige Dinge sehr simpel. Die PLZ als Beispiel prüfe ich ob ich eine 5 Stellige Nummer habe die in einen PLZ Bereich passt. Wenn ja wird diese als PLZ vorgeschlagen. Das selbe mit Telefonnummern. Hier entferne ich alle Leerzeichen und Sonderzeichen und belasse nur noch Ziffern und schaue ob die Vorwahl zum Beispiel ins Telefonschema passt.. Klappt wunderbar. Bei der Stadt zum Beispiel wird es schon um Welten schwieriger. Bei der Straße auch. Hier fehlt mir die Idee. Beim Namen kann man auf sowas wie "mit freundlichen grüßen" (strtolower) checkn, und dann den näheren Anschlusstext checken. Bei der Statdt ist so, dass mann nach der PLZ suchen und vorschlagen könnte. Bei der Straße und Hausnummer wird es aber verdammt schwer.


Hat jemand eine Idee?

Ich würde gerne praktisch Formulare vorausfüllen wollen. Der Programmierpart sollte kein Problem darstellen. Aber die Adresse komplett auszufiltern erweist sich als schwierig. Vor allem Str. und Hausnummer!
 
Unabhängig davon, dass dein Skript dann wahrscheinlich nur auf deutsche Kunden funktioniert:
In der Regel stehen Strasse und Hausnummer in einer Zeile, und zwar für sich selbst (Also nicht "zusammen" mit Name oder Ort)
In der Regel stehen Strasse und Hausnummer zwischen Name/Nachname und PLZ/Ort
Also:
Vorname Nachname
Strasse Hausnummer
PLZ Ort

Vielleicht als Ansatz?
 
Des wird leider so nicht funktionieren. Setzt Voraus, dass zu viele Infos da sind, die evtl. nicht da sind. D.h. vill kommt die Straße aber kein Ort usw...

Also die PLZ habe ich super ausgelesen. Auch wenn es eine 01577 PLZ wie Vorwahl gibt. Auch durch Prüfen der Vor und Nachzeichen.

PHP:
    private    function FindePLZ()
    {
        $i = 0;
        $zeichen = '';
        $vorzeichen = '';
        $muster = '';
        while($this->TextInhaltPosition($this->Text,$i) !== false)
        {
            $zeichen = $this->TextInhaltPosition($this->Text,$i);
            if(is_numeric($zeichen))
            {
                $muster .= $zeichen;
            }
            else
            {
                $muster = '';
            }
            $muster_array = str_split($muster);
            if
            (
                    strlen($muster) == 5
                &&
                    !is_numeric($this->TextInhaltPosition($this->Text,$i+1))
                &&
                    !$this->ErlaubteZeichen('-0123456789',$this->TextInhaltPosition($this->Text,$i+2))
                &&          
                    $this->ErlaubteZeichen('0123456789',$muster[4])

            )
            {
                echo 'gefunden '.$muster.'<hr>';
            }

            $vorzeichen = $zeichen;
            $i++;
        }
    }

}

Den Ort können wir ja gleich neben der PLZ suchen. Also die Position der PLZ wird gespeichert. Dann kann ich neben den PLZs nach Orten suchen.

Aber Straße habe ich erst gedacht nach dem Begriff Straße Str. Weg Platz am in usw..... mit einer in der Nähe folgenden Zahl gesucht. Aber beim Namen da hörts auf. Irgend wie nach "mfg" oder der gleichen.

Prinzipiell gehe ich so vor, dass ich den Text Zeichen für Zeichen durchgehe und nach einem eintretenden Muster suche. z.B. in diesem Fall nach einer Zahl. Tritt das ein, dann beginnt die Musteraufzeichnung. Haben wir 5 Zahlen aufeinanderfolgend ist ein Muster gegeben, wenn keine Zahl darauf folgt, oder auch kein Bindestrich.
 
Zuletzt bearbeitet:
Das wird prinzipiell ne harte Nuss.

Es gibt schliesslich auch "Strassen/Hausnummern" die so heissen: "Auf der Höhe"
Kein Wort "Strasse/Weg" oder auch keine Hausnummer.
Wird dir nur übrig bleiben per Position zu suchen, wie ich oben geschrieben habe
 

Neue Beiträge

Zurück