파이썬(python) 단어 매칭 작업 도와주세요

조회수 805회

우선 사람이름 매칭 작업이 필요합니다

예를 들어, 저는 A사이트에서 제공하는 외국인 이름과 키를 가져왔습니다. 그런데 B사이트에서 제공하는 그 사람들의 나이를 가져와서 기존에 있던 이름과 키에 나이 데이터를 더해야합니다. 문제는 A사이트와 B사이트에서 제공하는 이름이 조금씩 다르네요 이름 표기가 다른 경우의 수를 생각나는대로 말씀드릴게요

  1. 풀네임이 적혀있는 경우와 이름만 적혀 있는 경우 : Junior Moreno / Moreno
  2. 순수 영어로 적혀있을 때와 스페인어?등으로 표기 되어 있는 경우 : Júnior Moreno / Junior Moreno
  3. 줄임말로 표기 되어 있는 경우와 풀네임인 경우 : Jr. Moreno / Junior Moreno

떠오르는 게 이정도인데 크롤링 해야하는 사람의 수가 워낙 많아서 하나씩 다 수작업 매칭이 불가능한 상태입니다. 혹시 이럴 경우 어떤식으로 접근을 해야할까요?

  • 무슨 답변을 기대하는 질문인가요? 어차피 이름이 같은 경우는 많습니다. 이름으로 매칭하겠다는 것이 문제입니다. 이름은 중복될 수 있습니다. 꼭 이름으로 해야 된다면 Moreno 같이 성으로 찾고 1명인 경우만 선매칭하고 나머지 즉 2명 이상자는 수작업하는 것이 낫겠습니다. 정영훈 2019.7.8 16:07
  • 쉽지 않을 것 같은데요. 일단 넘버링해 주신 조건들에 2, 3번 같은 경우 어떤 정규화 함수를 만들어서, 정규화이름 컬럼을 만들 수 있을 거고, 정규화된 이름을 가지고 비교하는 식으로 가능하지 않을까 싶은데... nowp 2019.7.8 21:02

1 답변

  • 마침 제가 회사에서 하고 있는 짓거리 이네요. 사용자에게 최종 결과 승인을 받아야 합니다.

    1. 조악하게나마 퍼지 매칭을 합니다. "100% 일치", "성만 일치", "다음 5명 중 하나임" 하는 식으로 등급을 매겨 줍니다.
    2. 사용자는 1의 결과 중 100% 매칭이 안 된 것들만을 검토하고, 무엇을 무엇과 100% 매칭시킬 것인지 결정합니다. (그 결정에 도움이 될 정보가 있다면 표현해 줍니다.)
    3. 결정이 끝나면 그걸 최종 결과로서 저장 출력 반환하고 끝냅니다.

    댓글에서 다른 분들이 지적하셨듯이 애초에 안되는 짓거리를 억지로 하는 거라서.. 책임을 사용자에게 넘기셔야 합니다. 설마 "아 이거 파이썬 돌리면 다돼요" 하는 식으로 호언장담해 놓은 것은 아니기를 바랍니다.

    • 네 애초에 여기다 질문을 올리는게 제가 생각하기에 완벽히는 불가능할거라 다른 분들이 이 상황에서는 어떤 접근을 할 수 있을까 궁금해서 질문 올려봤습니다 단계별 매칭해서 최대한 거름망처럼 거르는게 최선인 거 같네요 감사합니다 김재민 2019.7.9 08:59
    • 그 조악한 퍼지매칭이 궁금하네요. nowp 2019.7.9 12:36
    • 그러게요.. 저도 그냥 적당히 표현 쓴거고 그걸 구체적으로 어떻게 해야되는가는 모르겠습니다. 정규표현식 잔뜩 만들어서 매칭해야겠죠...? 엽토군 2019.7.9 13:12
    • fuzzywuzzy 라는 라이브러리가 있네요. 문자열간 levenshtein distance 를 계산해 주는 라이브러리랍니다. 움라우트나 악상 차이 같은 것은 잘 잡아내겠습니다. nowp 2019.7.9 13:27
    • 감사합니다 실험해볼게요 ㅎㅎ 김재민 2019.7.10 09:35

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)