Frage

Problem:Ich habe ein Feld "Adresse" aus einer Access-Datenbank, die konvertiert wurde, um Sql Server 2005.Dieses Feld hat alles in einem Bereich.Ich muss analysieren, die einzelnen Teile der Adresse in Ihre entsprechenden Felder in eine normalisierte Tabelle.Ich muss für etwa 4.000 Datensätzen und muss es wiederholbar sein.

Annahmen:

  1. Übernehmen Sie eine Adresse in den USA (für jetzt)

  2. davon ausgehen, dass der input-string wird manchmal enthalten einen Empfänger (die person die angesprochen wird) und/oder eine zweite Straße-Adresse (d.h.Suite B -)

  3. Mitgliedstaaten können abgekürzt werden

  4. zip code kann standard 5-stellige oder zip+4

  5. es gibt Tippfehler, die in einigen Fällen

UPDATE:In der Antwort auf die Fragen, die Normen nicht allgemein gefolgt, ich brauche speichern müssen die einzelnen Werte, nicht nur geocode und Fehler bedeutet typo (korrigiert oben)

Beispieldaten:

  • A.P.Croll & Sohn 2299 Lewes-Georgetown Hwy Georgetown, DE 19947

  • 11522 Shawnee Road, Greenwood, DE 19950

  • 144 Kings Highway, S. W.Dover, DE 19901

  • Integrierte Const.Dienstleistungen 2 Penns Way, Suite 405 New Castle, DE 19720

  • Humes Realty 33 Bridle Ridge Court, Lewes, DE 19958

  • Nichols Ausgrabung 2742 Pulaski Highway Newark, DE 19711

  • 2284 Bryn Zion Road, Smyrna, DE 19904

  • VEI Dover Crossroads, LLC 1500 Serpentine Road, Suite 100 Baltimore, MD 21

  • 580 North Dupont Highway Dover, DE 19901

  • P. O.Box 778 Dover, DE 19903

War es hilfreich?

Lösung

Ich habe eine Menge Arbeit auf diese Art von Analyse.Da gibt es Fehler, die Sie nicht bekommen 100% ige Genauigkeit, aber es gibt ein paar Dinge, die Sie tun können, um die meisten der Art und Weise, und führen Sie dann eine visuelle BS test.Hier ist der Allgemeine Weg, um darüber zu gehen.Es ist kein code, weil es ist ziemlich akademisch zu schreiben, es gibt keine Verrücktheit, nur eine Vielzahl von string-handling.

(Nun, das Sie gepostet habe einige Beispieldaten, die ich gemacht habe, einige kleinere änderungen)

  1. Arbeiten rückwärts.Start aus dem zip-code, der sich in der Nähe der Ende, und in einer von zwei bekannten Formaten:XXXXX oder XXXXX-XXXX.Wenn dies nicht angezeigt wird, können Sie davon ausgehen, du bist in der Stadt, Staat Teil, unten.
  2. Die nächste Sache, bevor die zip-Datei, wird der Staat sein, und es werde entweder in den zwei-letter-format oder als Worte.Sie wissen, was diese sein werden, auch-es gibt nur 50 von Ihnen.Auch, Sie könnte soundex der Wörter zu kompensieren Rechtschreibfehler.
  3. vor der Stadt, und es ist wahrscheinlich auf der gleichen Linie wie der Staat.Sie könnte verwenden Sie ein zip-code-Datenbank um zu überprüfen, die Stadt und den Staat auf der Grundlage der zip-oder zumindest verwenden Sie es als eine BS-Detektor.
  4. Die Straße wird in der Regel ein oder zwei Zeilen.Die zweite Zeile wird in der Regel die suite-Nummer, wenn es einer ist, aber es könnte sich auch um eine PO-box.
  5. Es wird nahezu unmöglich zu erkennen, nur ein name auf der ersten oder zweiten Zeile, aber wenn es ist nicht-Präfix mit einer Zahl (oder, wenn es mit dem Präfix "Betreff:" oder "Aufmerksamkeit zu:" es könnte einen Hinweis darauf geben, ob es einen Namen oder eine Adresse Online.

Ich hoffe, das hilft etwas.

Andere Tipps

Ich denke outsourcing-das problem ist die beste Wette:senden Sie es auf die von Google (oder Yahoo) geocoder.Der geocoder gibt nicht nur die Breite/Länge (die sind nicht von Interesse), aber auch eine reiche Analyse der Adresse, mit Felder ausgefüllt, dass Sie nicht senden (einschließlich ZIP+4 und Landkreis).

Zum Beispiel analysieren ", 1600 Amphitheatre Parkway, Mountain View, CA" ergibt

{
  "name": "1600 Amphitheatre Parkway, Mountain View, CA, USA",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [
    {
      "address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
      "AddressDetails": {
        "Country": {
          "CountryNameCode": "US",
          "AdministrativeArea": {
            "AdministrativeAreaName": "CA",
            "SubAdministrativeArea": {
              "SubAdministrativeAreaName": "Santa Clara",
              "Locality": {
                "LocalityName": "Mountain View",
                "Thoroughfare": {
                  "ThoroughfareName": "1600 Amphitheatre Pkwy"
                },
                "PostalCode": {
                  "PostalCodeNumber": "94043"
                }
              }
            }
          }
        },
        "Accuracy": 8
      },
      "Point": {
        "coordinates": [-122.083739, 37.423021, 0]
      }
    }
  ]
}

Jetzt das ist parseable!

Das original-poster hat wahrscheinlich längst weitergezogen, aber ich nahm einen Stich an einer Portierung des Perl Geo::StreetAddress:US Modul verwendet geocoder.us C#, warf es auf CodePlex, und denke, dass die Leute stolpern über diese Frage in Zukunft möglicherweise nützlich finden:

US-Adresse Parser

Auf der Projekt-Homepage, die ich versuche zu sprechen über Ihre (sehr realen) Einschränkungen.Da ist es nicht gesichert, indem die USPS-Datenbank gültige Straßenbezeichnungen, analysieren können mehrdeutig sein und es kann auch nicht bestätigen, noch leugnen Sie die Gültigkeit einer gegebenen Adresse.Es können nur versuchen zu ziehen die Daten aus dem string.

Es ist gedacht für den Fall, wenn Sie brauchen, um eine Reihe von Daten, die meist in den rechten Feldern, oder wollen, um eine Verknüpfung zu Daten-Eintrag (Benutzer fügen Sie eine Adresse in ein Textfeld eher als die tabbing zwischen mehreren Feldern).Es ist nicht bedeutete für die Prüfung der Zustellbarkeit einer Adresse.

Es versucht nicht, zu analysieren, etwas über die street-Reihe, aber man könnte wahrscheinlich diddle mit der regex, um etwas ziemlich nahe-ich würde wahrscheinlich nur brechen es off in die Haus Anzahl.

Ich habe dies in der Vergangenheit getan.

Entweder macht man es manuell, (erstellen Sie eine schöne Benutzeroberfläche, die dem Anwender hilft es schnell tun) oder haben es automatisiert und überprüfen Sie gegen eine aktuelle Adressdatenbank (Sie haben zu kaufen) und manuell behandeln von Fehlern.

Manuelle Handhabung wird nehmen über 10 Sekunden, was bedeutet Sie können tun, 3600/10 = 360 pro Stunde, also 4000 sollten Sie etwa 11-12 Stunden.Dadurch erhalten Sie eine hohe Genauigkeit.

Für die Automatisierung, die Sie müssen eine aktuelle US-Adresse-Datenbank, und optimieren Sie Ihre Regeln gegen die.Ich schlage vor, nicht Lust auf die regex (schwer zu pflegen langfristige, so viele Ausnahmen).90% match an der Datenbank, den rest manuell.

Tun Holen Sie sich eine Kopie der Postalischen Adressierung Standards (USPS) an http://pe.usps.gov/cpim/ftp/pubs/Pub28/pub28.pdf und es bemerken, ist 130+ Seiten lang.Regexes zu implementieren, wäre Nüsse.

Für internationale Adressen, sind alle Wetten ab.US-amerikanische Arbeitnehmer nicht in der Lage wäre zu überprüfen.

Alternativ, verwenden Sie eine Daten-service.Ich habe jedoch keine Empfehlungen.

Außerdem:wenn Sie versenden heraus das Zeug in der E-mail (, dass ist, was es ist, richtig?) stellen Sie sicher, dass Sie "Adresse Korrektur gebeten" auf dem Umschlag (am richtigen Ort) und update die Datenbank.(Wir haben eine einfache gui für die Rezeption der person zu tun;die person, die tatsächlich möglichen durch die E-mail)

Schließlich, wenn Sie haben geschrubbt Daten, suchen nach Duplikaten.

Nach den Tipps hier, ich erdacht habe die folgende Funktion in VB erstellt passabel, wenn auch nicht immer perfekt (wenn ein Firmenname und eine suite, die Linie gegeben werden, es kombiniert die suite und Stadt) nutzbare Daten.Bitte fühlen Sie sich frei zu kommentieren/umgestalten/anschreien, mich für das brechen zu meinem eigenen Regeln, etc.:

Public Function parseAddress(ByVal input As String) As Collection
    input = input.Replace(",", "")
    input = input.Replace("  ", " ")
    Dim splitString() As String = Split(input)
    Dim streetMarker() As String = New String() {"street", "st", "st.", "avenue", "ave", "ave.", "blvd", "blvd.", "highway", "hwy", "hwy.", "box", "road", "rd", "rd.", "lane", "ln", "ln.", "circle", "circ", "circ.", "court", "ct", "ct."}
    Dim address1 As String
    Dim address2 As String = ""
    Dim city As String
    Dim state As String
    Dim zip As String
    Dim streetMarkerIndex As Integer

    zip = splitString(splitString.Length - 1).ToString()
    state = splitString(splitString.Length - 2).ToString()
    streetMarkerIndex = getLastIndexOf(splitString, streetMarker) + 1
    Dim sb As New StringBuilder

    For counter As Integer = streetMarkerIndex To splitString.Length - 3
        sb.Append(splitString(counter) + " ")
    Next counter
    city = RTrim(sb.ToString())
    Dim addressIndex As Integer = 0

    For counter As Integer = 0 To streetMarkerIndex
        If IsNumeric(splitString(counter)) _
            Or splitString(counter).ToString.ToLower = "po" _
            Or splitString(counter).ToString().ToLower().Replace(".", "") = "po" Then
                addressIndex = counter
            Exit For
        End If
    Next counter

    sb = New StringBuilder
    For counter As Integer = addressIndex To streetMarkerIndex - 1
        sb.Append(splitString(counter) + " ")
    Next counter

    address1 = RTrim(sb.ToString())

    sb = New StringBuilder

    If addressIndex = 0 Then
        If splitString(splitString.Length - 2).ToString() <> splitString(streetMarkerIndex + 1) Then
            For counter As Integer = streetMarkerIndex To splitString.Length - 2
                sb.Append(splitString(counter) + " ")
            Next counter
        End If
    Else
        For counter As Integer = 0 To addressIndex - 1
            sb.Append(splitString(counter) + " ")
        Next counter
    End If
    address2 = RTrim(sb.ToString())

    Dim output As New Collection
    output.Add(address1, "Address1")
    output.Add(address2, "Address2")
    output.Add(city, "City")
    output.Add(state, "State")
    output.Add(zip, "Zip")
    Return output
End Function

Private Function getLastIndexOf(ByVal sArray As String(), ByVal checkArray As String()) As Integer
    Dim sourceIndex As Integer = 0
    Dim outputIndex As Integer = 0
    For Each item As String In checkArray
        For Each source As String In sArray
            If source.ToLower = item.ToLower Then
                outputIndex = sourceIndex
                If item.ToLower = "box" Then
                    outputIndex = outputIndex + 1
                End If
            End If
            sourceIndex = sourceIndex + 1
        Next
        sourceIndex = 0
    Next
    Return outputIndex
End Function

Vorbei an der parseAddress Funktion "A.P.Croll & Sohn 2299 Lewes-Georgetown Hwy Georgetown, DE 19947" gibt:

2299 Lewes-Georgetown Hwy
A. P. Croll & Son  
Georgetown
DE
19947

Ich habe in der Adresse der Verarbeitung domain für über 5 Jahren, und es gibt wirklich keine silberne Kugel.Die richtige Lösung ist, hängt von dem Wert der Daten.Wenn es nicht sehr wertvoll, werfen Sie es durch einen parser als die anderen Antworten vorschlagen.Wenn es auch etwas wertvolles werden Sie auf jeden Fall brauchen, um eine menschliche auswerten/korrigieren Sie alle Ergebnisse des parsers.Wenn Sie suchen für eine vollständig automatisierte, wiederholbare Lösung, werden Sie wahrscheinlich wollen, zu sprechen, um die Adresse Korrektur Anbieter wie Group1 oder Trillium.

SmartyStreets hat eine neue Funktion zum extrahieren von Adressen aus beliebigen Eingangs-strings.(Hinweis:Ich arbeite nicht bei SmartyStreets.)

Es extrahiert alle Adressen aus dem Beispiel für die Eingabe in der oben genannten Frage.(Übrigens, nur 9 von 10-Adressen gültig sind.)

Hier sind einige Ausgabe:enter image description here

Und hier ist die CSV-formatierte Ausgabe, die gleiche Anfrage:

ID,Start,End,Segment,Verified,Candidate,Firm,FirstLine,SecondLine,LastLine,City,State,ZIPCode,County,DpvFootnotes,DeliveryPointBarcode,Active,Vacant,CMRA,MatchCode,Latitude,Longitude,Precision,RDI,RecordType,BuildingDefaultIndicator,CongressionalDistrict,Footnotes
1,32,79,"2299 Lewes-Georgetown Hwy, Georgetown, DE 19947",N,,,,,,,,,,,,,,,,,,,,,,
2,81,119,"11522 Shawnee Road, Greenwood DE 19950",Y,0,,11522 Shawnee Rd,,Greenwood DE 19950-5209,Greenwood,DE,19950,Sussex,AABB,199505209226,Y,N,N,Y,38.82865,-75.54907,Zip9,Residential,S,,AL,N#
3,121,160,"144 Kings Highway, S.W. Dover, DE 19901",Y,0,,144 Kings Hwy,,Dover DE 19901-7308,Dover,DE,19901,Kent,AABB,199017308444,Y,N,N,Y,39.16081,-75.52377,Zip9,Commercial,S,,AL,L#
4,190,232,"2 Penns Way Suite 405 New Castle, DE 19720",Y,0,,2 Penns Way Ste 405,,New Castle DE 19720-2407,New Castle,DE,19720,New Castle,AABB,197202407053,Y,N,N,Y,39.68332,-75.61043,Zip9,Commercial,H,,AL,N#
5,247,285,"33 Bridle Ridge Court, Lewes, DE 19958",Y,0,,33 Bridle Ridge Cir,,Lewes DE 19958-8961,Lewes,DE,19958,Sussex,AABB,199588961338,Y,N,N,Y,38.72749,-75.17055,Zip7,Residential,S,,AL,L#
6,306,339,"2742 Pulaski Hwy Newark, DE 19711",Y,0,,2742 Pulaski Hwy,,Newark DE 19702-3911,Newark,DE,19702,New Castle,AABB,197023911421,Y,N,N,Y,39.60328,-75.75869,Zip9,Commercial,S,,AL,A#
7,341,378,"2284 Bryn Zion Road, Smyrna, DE 19904",Y,0,,2284 Bryn Zion Rd,,Smyrna DE 19977-3895,Smyrna,DE,19977,Kent,AABB,199773895840,Y,N,N,Y,39.23937,-75.64065,Zip7,Residential,S,,AL,A#N#
8,406,450,"1500 Serpentine Road, Suite 100 Baltimore MD",Y,0,,1500 Serpentine Rd Ste 100,,Baltimore MD 21209-2034,Baltimore,MD,21209,Baltimore,AABB,212092034250,Y,N,N,Y,39.38194,-76.65856,Zip9,Commercial,H,,03,N#
9,455,495,"580 North Dupont Highway Dover, DE 19901",Y,0,,580 N DuPont Hwy,,Dover DE 19901-3961,Dover,DE,19901,Kent,AABB,199013961803,Y,N,N,Y,39.17576,-75.5241,Zip9,Commercial,S,,AL,N#
10,497,525,"P.O. Box 778 Dover, DE 19903",Y,0,,PO Box 778,,Dover DE 19903-0778,Dover,DE,19903,Kent,AABB,199030778781,Y,N,N,Y,39.20946,-75.57012,Zip5,Residential,P,,AL,

Ich war der Entwickler, der ursprünglich schrieb der Dienst.Der Algorithmus implementierten wir ein bisschen anders aus als irgendeine spezifische Antworten hier, aber jeder extrahiert Adresse verifiziert ist, gegen die Adresse lookup-API, so dass Sie sicher sein können, ob es gültig ist oder nicht.Jedes verifiziert Ergebnis ist garantiert, aber wir wissen, dass die anderen Ergebnisse nicht perfekt sein, weil, wie schon aus klar in diesem thread Adressen sind unberechenbar, sogar für den Menschen manchmal.

Dies wird nicht Ihr problem lösen, aber wenn Sie brauchte nur lat/long-Daten für diese Adressen, die Google-Maps-API analysieren nicht-formatierte Adressen ziemlich gut.

Guter Vorschlag, alternativ führen Sie eine CURL-Anfrage für jede Adresse, an Google Maps und es wird wieder die richtig formatierte Adresse.Sie können regex zu Inhalt Ihres Herzens.

+1 auf James A.Rosen empfohlene Lösung, da es hat gut funktioniert für mich, aber für completists diese Seite ist eine spannende Lektüre und der beste Versuch, den ich gesehen habe in der Dokumentation Adressen weltweit: http://www.columbia.edu/kermit/postal.html

Gibt es irgendwelche Normen in der Weise, dass die Adressen werden erfasst?Zum Beispiel:

  1. Sind es immer Kommas oder neue Zeilen, die Trennung von der street1 street2 von der Stadt, vom Staat aus zip-Datei?
  2. Address types (road, street, boulevard, etc) immer geschrieben?immer abgekürzt?Etwas von beidem?
  3. Definition von "Fehler".

Meine Allgemeine Antwort ist eine Reihe von Regulären Ausdrücken, obwohl die Komplexität hängt auf die Antwort.Und wenn es ist keine Konsistenz, dann können Sie nur in der Lage sein zu erreichen, teilweisen Erfolg mit einer Regex (ie:filtern Postleitzahl und Zustand) und haben den rest mit der hand (oder zumindest gehen durch der rest sehr sorgfältig und stellen Sie sicher, dass Sie vor Ort die Fehler).

Eine weitere Anforderung für die Probe Daten.

Wie bereits erwähnt, ich würde rückwärts aus dem zip.

Sobald Sie eine zip-würde ich die Abfrage eines zip-Datenbank, speichern Sie die Ergebnisse, und entfernen Sie diese & die zip aus dem string.

, Dass wird lassen Sie mit die Adresse, die Unordnung.Die MEISTEN (Alle?) Adressen beginnen mit einer Zahl, so finden die ersten Auftretens einer Zahl in der verbleibenden Zeichenfolge und packen alles aus, um die (neuen) Ende der Zeichenfolge.Werden Ihre Adresse.Alles, was Links von dieser Zahl wird wahrscheinlich einen Adressaten.

Sie sollten nun die City, State & Zip-in einer Tabelle gespeichert und möglicherweise zwei Saiten, Empfänger und Adresse.Für die Adresse überprüfen, die für die Existenz der "Suite" oder "Apt.", etc.und split, die in zwei Werte (Adresse der Linien 1 & 2).

Für den Empfänger würde ich punt und greifen Sie das Letzte Wort, die Zeichenfolge als Nachname und legte den rest in das Feld Vorname.Wenn Sie nicht wollen, das zu tun, müssen Sie für die Anrede (Herr, Frau, Dr., etc.) am start und machen einige Annahmen auf der Grundlage der Anzahl der Räume, wie der name gebildet wird.

Ich glaube nicht, dass es irgendeine Weise, die Sie analysieren kann mit 100% Genauigkeit.

Versuchen Sie es www.address-parser.com.Wir verwenden Ihre web-service, die Sie können online test

Basierend auf den Beispieldaten:

  1. Ich würde anfangen, am Ende der Zeichenfolge.Analysieren Sie ein Zip-code (format).Lesen Sie Ende, um den ersten Platz.Wenn keine Zip Code wurde gefunden " - Fehler.

  2. Trimmen des Endes dann für Leerzeichen und Sonderzeichen (Komma)

  3. Dann bewegen Sie auf, um Zustand, wieder den Raum nutzen als Trennzeichen.Vielleicht verwenden Sie eine lookup-Liste zur Validierung 2-letter state codes und die volle Staatliche Namen.Wenn kein Gültiger Zustand gefunden, Fehler.

  4. Trim Leerzeichen und Kommas aus dem Ende wieder.

  5. Stadt schwierig wird, würde ich verwenden Sie ein Komma hier, auf die Gefahr, sich zu viel Daten in die Stadt.Look für das Komma am Anfang oder Ende der Zeile.

  6. Wenn Sie noch chars Links in der Zeichenfolge, schieben alle, die in ein Adressfeld.

Dies ist nicht perfekt, aber es sollte ein ziemlich guter Ausgangspunkt.

Wenn es menschliche Daten eingegeben, dann werden Sie verbringen zu viel Zeit damit, sich um code, um die Ausnahmen.

Versuchen:

  1. Regulärer Ausdruck zum extrahieren der zip-code

  2. Zip code lookup (über die entsprechende Regierung DB), um die richtige Adresse

  3. Holen Sie sich ein Praktikum manuell bestätigen die neuen Daten der alten Spiele

Dies wird nicht Ihr problem lösen, aber wenn Sie nur benötigt, lat/long-Daten für diese Adressen die Google-Maps-API analysiert, nicht-formatierte Adressen ziemlich gut.

RecogniContact ist ein Windows-COM-Objekt, das analysiert amerikanische und Europäische Adressen.Sie können versuchen, es richtig auf http://www.loquisoft.com/index.php?page=8

Möchten Sie vielleicht, check this out!! http://jgeocoder.sourceforge.net/parser.html Arbeitete wie ein Zauber für mich.

Diese Art von problem ist schwer zu lösen, weil der zugrunde liegende Unklarheiten in den Daten.

Hier ist ein Perl-basierte Lösung, die definiert eine rekursive Abstieg Grammatik Baum basiert auf regulären Ausdrücken zu analysieren, viele gültige Kombination der Adresse: http://search.cpan.org/~kimryan/Lingua-EN-AddressParse-1.20/lib/Lingua/EN/AddressParse.pm .Dies beinhaltet die sub-Eigenschaften innerhalb einer Adresse, wie:12 1st Avenue N Suite # 2 Irgendwo CA 12345 USA

Es ist ähnlich wie http://search.cpan.org/~timb/Geo-StreetAddress-US-1.03/UNS.pm oben erwähnt, arbeitet aber auch für Adressen, die nicht aus den USA, wie Großbritannien, Australien und Kanada.

Hier ist die Ausgabe für eines Ihrer Probe-Adressen.Beachten Sie, dass der name im Abschnitt würde entfernt werden müssen, werden zuerst von "A.P.Croll & Sohn 2299 Lewes-Georgetown Hwy Georgetown, DE 19947" zu reduzieren, um "2299 Lewes-Georgetown Hwy Georgetown, DE 19947".Dies wird leicht erreicht, indem alle Daten bis auf die erste Zahl in der Zeichenfolge.

Non matching part       ''
Error                   '0'
Error descriptions      ''
Case all                '2299 Lewes-Georgetown Hwy Georgetown DE 19947'
COMPONENTS              ''
country                 ''
po_box_type             ''
post_box                ''
post_code               '19947'
pre_cursor              ''
property_identifier     '2299'
property_name           ''
road_box                ''
street                  'Lewes-Georgetown'
street_direction        ''
street_type             'Hwy'
sub_property_identifier ''
subcountry              'DE'
suburb                  'Georgetown'

Seit es die Möglichkeit von Fehlern in Wort, denken über die Verwendung von SOUNDEX-in Kombination mit LCS-Algorithmus zum vergleichen von strings, dies wird helfen, eine Menge !

die Verwendung von google API

$d=str_replace(" ", "+", $address_url);
$completeurl ="http://maps.googleapis.com/maps/api/geocode/xml?address=".$d."&sensor=true"; 
$phpobject = simplexml_load_file($completeurl);
print_r($phpobject);

Für die ruby-oder rails-Entwickler gibt es ein schönes Kleinod heißt street_address.Ich habe mit diesem auf mein Projekt und es macht die Arbeit, die ich brauche.

Das einzige Problem, das ich hatte, war, sobald eine Adresse in diesem format P. O. Box 1410 Durham, NC 27702 er kehrte nil, und daher musste ich ersetzen "P.O.Feld," mit " und, nachdem diese es in der Lage waren, zu analysieren.

Gibt es Daten, die Dienste, die angesichts einer Postleitzahl wird Ihnen die Liste der Straßennamen, die Postleitzahl.

Verwenden von regex zum extrahieren von Zip-oder Stadt-Staat - finden Sie die richtige ist, oder wenn eine Fehlermeldung erhalten beides.ziehen Sie die Liste der Straßen, aus einem Datenquelle Korrigieren Sie die Stadt und den Staat, und dann street Adresse.Sobald Sie eine gültige Adresszeile 1, Stadt, Bundesland und PLZ können Sie dann Ihre Annahmen auf Adresse 2..3

Ich weiß nicht, WIE dies MÖGLICH wäre, aber ich habe nicht gesehen, dies erwähnt, so dass ich dachte, ich würde gehen Sie voran und schlagen Sie diese:

Wenn Sie sind streng in den USA...Holen Sie sich eine riesige Datenbank, in der alle Postleitzahlen, Bundesländer, Städte und Straßen.Jetzt suchen Sie diese in Ihren Adressen.Sie können überprüfen, was Sie finden, indem Sie testen, wenn, sagen wir, die Stadt, die Sie gefunden, besteht in dem Staat Sie gefunden, oder überprüfen wenn die Straße Sie fand in der Stadt gibt es Sie gefunden.Wenn nicht, stehen die Chancen John ist nicht für John ' s street, aber der name des Adressaten...Grundsätzlich erhalten die meisten Informationen, die Sie können und überprüfen Sie Ihre Adressen gegen Sie.Ein extremes Beispiel wäre, um EINE LISTE ALLER ADRESSEN IN DEN US OF A und dann herauszufinden, welche hat die meisten relevanten passen zu jeder Ihrer Adressen...

Es ist javascript-port von perl-Geo::StreetAddress::UNS Paket: https://github.com/hassansin/parse-address .Es ist regex-basiert und funktioniert Recht gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top