이메일 주소에서 이름 추출

Nov 02 2020

두 개의 이메일 주소가 있는데 이들이 같은 사람의 것일 가능성이 있는지 확인하고 싶습니다. 예를 들어, [email protected]그리고 [email protected](가 likeliness를 제공하는 것이 충분한 될 것이라고 확신 할 필요가 없습니다) 같은 사람에서 할 가능성이 높다.

이를 달성하기 위해 두 가지 방향을 염두에 두었습니다. 하나는 두 이메일 주소 간의 문자열 비교이고 다른 하나는 먼저 이메일 주소에서 이름을 추출한 다음 동일한 사람인지 비교하는 것입니다. 위의 예에서와 같이 추출 된 이름은 Cameron M Thompson및 이어야합니다 c thompson.

또한 이메일 주소 중 하나에 전체 이름이 포함되어 있는지 (일반적으로 회사 이메일 주소에는 전체 이름이 있음)가 다른 이메일 주소에서 이름을 추출하는 데 도움이되는지 궁금합니다 (개인 이메일 주소에는 항상 두 이메일 주소를 비교하는 데 도움이 될 것입니다.

위의 두 가지 방향 중 어느 것이라도 가능한지 알아 내기 위해 노력해 왔습니다. 특히 이메일 주소에 구분 기호가 없을 수 있고 이름이 많이 다를 수 있으므로 목록이 일치 항목을 찾기에 충분하지 않을 수 있습니다.

이 문제를 해결하려면 어떻게해야합니까? 기계 학습 / 딥 러닝이 도움이 될까요 아니면 정규식 및 퍼지 문자열 일치와 같은 다른 간단한 것을 사용해야합니까?

업데이트 : 두 개의 열, 이메일 주소 및 이름, 약 2k 행이있는 데이터 세트가 있습니다. 나는 이것이 두 번째 방향 (이름 추출)에 사용될 수 있다고 생각합니다. 첫 번째 방향 (문자열 비교 유사성)의 경우 데이터 집합을 3 개의 열 (이메일 주소 1, 이메일 주소 2, 동일한 사람인지 레이블)로 수정하여 약 1k 행의 데이터를 제공해야합니다.

답변

1 ShahriyarMammadli Nov 02 2020 at 23:48

솔루션에 대해 이야기하기 전에 콘텐츠에 집중하지 않는 이유는 무엇입니까? 대부분의 이메일 주소가 발신자의 기호 인 이름 성으로 끝나는 점을 고려하면 문제를 해결하는 것이 더 도움이 될 것 같습니다.. 또한 이메일 주소에서이 정보를 얻지 못할 확률은 콘텐츠에서 정보를 얻지 못할 확률보다 훨씬 높습니다. 특히 이메일 주소에 전체 이름 (이름과 성의 첫 글자, 예 : John [email protected])이 포함되지 않을 수있는 회사 이메일 주소의 경우이지만 작성자의 전체 이름 (최소한 이름) 끝에. 또한 많은 이메일 주소에 이름이나 성만 포함되거나 둘 다 포함되지 않지만 superboy122133@+++.com : D와 같은 대체 단어가 포함됩니다. 그러나 대부분의 이메일 앱에는 이름과 성을 포함하는 기본 기호가 있습니다. 또한이 두 기술을 결합 할 수 있습니다. 즉, 이메일 주소 데이터를 이메일 콘텐츠 데이터와 결합하여이들 중 하나에서 데이터를 얻는 것이 실행 불가능하거나 실행 불가능한 경우 다른 데이터를 사용할 수 있습니다.

그러나 이메일 주소로만해야한다고 가정 해 봅시다. 머신 러닝 기술을 사용하는 것은 문제를 과대 평가하거나 과대 평가할 것이라고 생각합니다. 또한 비 머신 러닝 기술을 사용한다고해서 솔루션이 단순화되는 것은 아니며 이러한 모든 기술이 올바른 컨텍스트에 적용될 때 최상의 결과를 제공합니다. 간단한 상황을 상상해 봅시다. [세금] = 0.2 * [급여] + 20 $를 알고 있거나 쉽게 추론 할 수 있다면 왜 기계 학습을 사용하여이 방정식을 찾거나 맞출까요?

| email address, fullname | 형식의 데이터가없는 한 머신 러닝을 사용하여 시작해서는 안됩니다. (옵션으로 | 이메일 주소, 전체 이름 | 데이터가있는 경우 모델을 학습하여 이메일 주소와 전체 이름 간의 일반적인 관계를 학습하므로 유사한 이메일 주소를 식별 할 수 있습니다).

그러나이 현재 상황에서 한 가지 접근 방식은 이메일 주소에서 가능한 모든 패턴을 찾는 것입니다. 어느 것이 될 수

  • 이름과 성의 첫 글자 jtravolta@+++.com
  • 이름, 특수 문자 및 성 john_travolta@+++.com
  • 이름 및 번호 john1954@+++.com
  • ...

그런 다음 식별 된 패턴을 사용하여 이메일 주소에서 추출 된 이러한 기능을 해싱 또는 문자열 거리 알고리즘을 사용하여 다른 이메일과 비교할 수 있습니다.

한 가지 대안은 사용 가능한 모든 이름 과 성의 해시 사전을 갖는 것입니다 . 그런 다음 이메일 주소에서 조각 (하위 문자열)을 잘라낸 다음 해시하여 주소에서 이름과 성을 찾을 수 있습니다 (물론 그 반대의 경우도 매우 비효율적입니다. ). 가장 유사한 속성을 가진 이메일 주소가 일치합니다.

또 다른 해결책은 위에서 언급 한 패턴을 사용하여 인위적인 이메일 주소를 생성 할 수 있다는 것입니다. 사람의 이름과 성, 그리고 하나 이상의 이메일 주소를 포함하는 데이터 세트가 없을 가능성이 매우 높다는 점을 고려할 때 데이터 증대는 비즈니스의 첫 번째 순서입니다. (데이터 증가 용어가이 상황에 맞는지 확실하지 않습니다. 그렇지 않은 경우 데이터 생성이라고합시다). 따라서 입력은 이름 성 (중간 이름, 숫자 등을 포함 할 수 있음)이되고 출력은 사전 정의 된 패턴에 따라 무작위로 생성 된 이메일 주소가됩니다. 단일 입력에 대해 생성되는 이메일 수도 무작위로 선택해야하지만 동일한 이메일 주소가 두 번 이상 생성 될 때주의해야합니다. 예 : 입력-> John Travolta-> 출력-> j_travolta12@+++.com,john.t.99@+++.com, john.travolta @ +++. com (이 예에서는 생성 할 이메일 3 개를 무작위로 선택한다고 가정 해 보겠습니다).

그런 다음 가능한 모든 (거의) 패턴을 가진 이메일 주소를 만든 후 기계 학습 기술의 도움을받을 수 있습니다. 따라서 모델은 관련 이름과 성을 가진 확률을 제공 할 수 있습니다. (또한 확률이 높은 상위 n 개의 이름과 성을 제공하도록 출력을 구성 할 수 있습니다.)

고려해야 할 또 다른 사항은 두 명의 다른 사람이 같은 이름과 성을 가질 가능성입니다. 마지막으로, 예를 들어 이메일 주소에서 문자 'j'가 John 또는 Jake를 나타내는 지 여부를 이해할 수 없기 때문에 솔루션이 완벽 할 수없는 접근 방식을 사용하는 것과는 독립적입니다. 따라서 이메일 콘텐츠를 솔루션에 통합 할 수 있다면 성능이 크게 향상됩니다.

확인 : 따라서 갱신 이 정확하게 문제를 대답하지 않고 대답을하지만, 상황은 동일합니다.