2012-04-03 2 views
-1

정상적인 텍스트 문자열에서 주소를 구문 분석 할 수있는 Java 라이브러리를 찾고 있습니다. 텍스트에는 모든 유형의 특수 문자와 특수 문자가 포함될 수 있습니다 (문자 수는 있지만 원래 문자열에서 실제로 빼내고 싶은 것은 대략적인 주소 문자열입니다).Java에서 좋은 주소/문자열 파싱 라이브러리는 무엇입니까?

즉, 임의의 문자열에 주소가 포함되어 있습니다 somehwere? 출력은 거리와 숫자가 어딘가에있는 한 형식은별로 중요하지 않습니다. 라이브러리가없는 경우 일반 표현식을 사용 하시겠습니까?

+1

입력 문자열에 대한 자세한 내용을 제공해야합니다. 단일 주소 만 포함하고 다른 것은 포함하지 않는 문자열이 보장됩니까? 그 주소 어딘가에 하나의 주소를 담고있는 문단입니까? 문자열에 여러 개의 주소가있을 수 있습니까? 근본적인 문제의 범위는 보통 (입력이 매우 제한적인 경우)에서 잠재적으로 어려울 때까지 다양합니다 (임의의 언어로 된 텍스트 페이지에서 유효한 모든 국제 주소를 찾는 문제를 고려하십시오). –

+1

@StuartGolodetz 나는 진술의 후자가 사실이라고 생각한다. 그는 "임의의 문자열"에서 주소를 가져오고 싶다고 말했기 때문에 거대한 더미에서 찾을 수있는 주소를 찾고 싶다고 말하는 것이 안전하다고 생각한다. 문자. 입력 문자열에 대한 더 이상 정보가 필요하지 않습니다. – CodeBlind

+0

주소? 어떤 나라에? –

답변

2

이 작업을 수행하는 라이브러리를 모르지만 ... 훌륭한 인공 지능 문제인 것 같습니다. :)

ASCII/유니 코드 형식의 기존 주소록이있는 경우 pote 일반적으로 정규 표현식 패턴을 생성하기 위해 이들을 사용하고 임의의 텍스트에 대해 알려진 모든 주소 정규 표현식 패턴을 실행하고 나오는 내용을 봅니다. 이렇게하면 알려진 주소 형식을 기반으로 동작하는 알고리즘을 "가르 칠 수"있습니다. 나는 이런 종류의 라이브러리가 존재하는지 의심 스럽다. 아마도 거리 주소의 형식을 지정하는 다양한 방식의 TON이 있기 때문에 아마이 방법이 가능할 것이다.

대표적인 미국 주소를 예로들 수 있습니다. 예 :

1234 Main St. NW, Some City, ST, 12345 //[ST] = two-letter state abbreviation 

중간에 두 개의 숫자와 상태 약어를 찾는 정규식을 작성할 수 있습니다. 물론 이것은 미국의 거리 주소에만 적용되며 모두 잡을 수는 없으며 위양성을 피하기 위해 정규 표현식을 사용하도록주의해야하지만 정규 표현식을 목록에 추가 할 수는 있습니다.

+0

이것은 좋은 솔루션이며 솔루션을 구현하기 시작한 방법입니다. 상태 약어는 실제로 보장되지 않으므로 순수한 번호 (거리 번호)를 찾은 다음 USPS 공식 거리 결말에서 얻은 일반적인 거리 주소가 나올 때까지 "레코드"토큰을 찾는 로직을 사용하고 있습니다. 대부분의 경우지만 약어 중 일부는 문제가 있습니다 (예 : bayou의 경우 BY). upvoted,하지만 나는 누군가가 여전히 살인자 정규식 라이브러리 또는 파싱 라이브러리, 대답 주셔서 감사합니다 희망이 열려 떠날거야! 더 이상 대답이 없으면 며칠 안에 받아 들일 것입니다. –