2009-11-18 4 views
2

차량 제목에 대한 XML 정보를 읽고 응용 프로그램에 구문 분석하는 응용 프로그램이 있습니다. 내 데이터베이스에서 나는 개인 이름인지 회사 이름인지에 따라 항상 내 이름을 저장합니다 (내 시스템에서 발생할 수 있기 때문에). 문제는 XML 소스에 이름 데이터가 있지만 개인 또는 회사인지 여부를 지정하지 않는다는 것입니다. 내 데이터베이스에 적절하게 저장할 수 있도록 알 필요가 있습니다. 개인의 이름과 일치하는지 확인하기 위해 문자열을 검사 할 수있는 이름이나 정규 표현식 또는 라이브러리 데이터베이스가 있습니까? 감사!문자열이 사람의 이름인지 확인하기위한 정규식 또는 데이터베이스?

+0

어떤 DB가 당신입니까? 사용 하시겠습니까? 어쨌든 이것은 까다 롭습니다. 우선 당신은 개인의 이름이 어떻게 생겼는지를 결정해야합니다. 회사의 경우도 마찬가지입니다. 일부 회사의 이름이 개별적인 이름처럼 보일 수도 있습니다. –

+0

일반적으로 회사는 사람과 같이 완전한 법인입니다. 재산을 소유하거나 소송을 제기 할 수 있습니다. 어쩌면 당신은 상관하지 않습니다. –

답변

0

당신은 하드 프레스를 찾을 것입니다. 개인의 이름은 종종 상상력에 의해서만 제한됩니다. 그러나 필요한 경우 응용 프로그램이 관심을 갖는 모든 자동차 제조업체의 목록을 수집하고이 목록과 비교하여 XML 이름 데이터를 확인하는 것이 좋습니다. 일치하는 것이 발견되면 분명히 이름은 회사이고 그렇지 않은 경우 이름이 개인이라고 생각할 수 있습니다.

+0

감사합니다. 같은 대답으로 사람들을 묘사 한 이래로, 나는 당신이 먼저 대답 한 이후로 당신을 선택했습니다. 그래서, 당신이이 어려움에 대해 좋은 점을 제기했다고 생각합니다. 나는 정말로 구별 할 필요가 없기 때문에 아마 하나의 필드 만 사용한다고 생각합니다. – Austin

5

아니요, 알 수있는 방법이 없습니다. Frank Zappa의 아동 인 Moon Unit을 다루고 있습니까, 아니면 진짜 달의 기념비적 인 기록 인 Moon Unit을 다루고 있습니까? 이름은 무엇이든 상관 없으며, 회사 이름은 무엇이든 될 수 있습니다 (소유자 이름 포함). 데이터가 귀하에게 제공되는지 여부를 확실히 알 수있는 유일한 방법입니다.

+2

언제든지 Frank Zappa를 답안에 넣을 수 있습니다. 저에게서 upvote를받습니다. – Adam

2

내가 일하는 데 사용했던 대형 통신 회사에서이 문제가 발생했습니다. 우리는 2 백만개의 더하기 이름에서 다음 정규 표현식을 테스트했습니다.

([A-Z][a-z][a-z]*) *([A-Z][a-z]*)\.? *([A-Z][a-z][a-z][a-z]*) 

우리는 99.8 %의 정확도를 얻었습니다. 데이터는 상당히 깨끗합니다. 이것은 C의 정규 표현 엔진을위한 것이므로 - 구문이 perl에서 약간 벗어날 수 있습니다. 에 괄호가 필요한지 여부는 알 수 없습니다.

+0

어포 스트로피 나 하이픈을 지원하지 않습니다. O'Halloran이나 Jones-Drew 같은 이름의 이름은 어떻게 다루었습니까? –

+0

아포스트로피가 발견되면 여분의 문장을 삽입하고 저장 프로 시저를 사용하여 삽입하면 저장 방법에 상관없이 저장됩니다. 전달하기 전에 입력 내용을 먼저 삭제하고 싶습니다. sproc에 ... – t0mm13b

0

글쎄, 이름은 분명히 공백으로 나눠진 성 (성)을 가지고 있지만 다른 회사는 Ltd (제한적), PLC (공개 상장 회사) 또는 LLC (미국 규정에 따라 나열된 회사 유형) ... 나는 여기에 구타 대위를 벗어날 것인가? last_name과 first_name이 비어 있으면 회사 필드를 확인하고 그 반대도 마찬가지입니다. 두 필드의 조합을 두 필드의 조합으로 처리하면 어려워집니다.

관련 문제