0

일부 전자 상거래 웹 사이트에서 데이터를 가져 오거나 크롤링하는 새 웹 사이트를 구축 중입니다.전자 상거래 웹 사이트에서 대량의 크롤링 된 항목을 통합하는 방법은 무엇입니까?

각 항목 그룹은 그룹화 된 모든 항목의 부모 이름을 가진 제품이라고합니다.

예 : iphone 6s plus 128iphone 7 32iphone 6siphone 7이지만 제품입니다.

내가 직면하고 문제는 그것을 참조 하나 개의 제품에서 기어 항목의 통일이다, 여기에 예입니다

Item 1: Fiat 128

Item 2: Iphone 6 128

모두 동일한 제품으로 인해 아래에 통합된다 두 텍스트 모두 하위 문자열로 "128"을 포함합니다.

내가 달성하고자하는 것은 Fiat 128과 동일한 그룹에 속하는 것이 아니라 자신의 그룹에 iphone 6 128이라는 항목을 포함시켜보다 정확하게 항목을 그룹화하는 것입니다.

참고 :은 둘 다 "128"하위 문자열을 포함하기 때문에 단지 관련이 있습니다.

어떤 도움 내가, 당신은 자신의 유형에 따라 항목을 클러스터하려는 귀하의 질문에서 이해하고 동일한 제품에 속하는 모든 항목을 그룹화해야합니까

+0

질문/문제가 명확하지 않습니다. 아마도 당신은 그것을 재현 할 수 있을까요? –

+0

@BrianPipa 몇 가지 설명으로 다시 설명했습니다. –

+0

아마도 달성하고자하는 바를 말할 수 있습니까? "통합 제품에 대한 정확한 결과"는 문제에 익숙하지 않은 사용자를 위해 무엇을하려하는지 완전히 설명하지 않습니다. Fiat 128과 Iphone 6 128은 어떻게 관련되어 있습니까? 128 개가 있기 때문에 왜 관련이 있습니까? –

답변

0

을 감상 할 수있다. 따라서 제품의 목록을 먼저 정의해야합니다. 제품 목록이 없으면 100 % 정확도로 그룹화하는 것이 어려울 수 있습니다.

당신이 생각할 수있는 한 가지는 - 이름을 기반으로하지만 텍스트 부분 만 고려하여 숫자 부분을 건너 뜁니다. 합리적인 클러스터링을 제공해야합니다.

너가 이것 저쪽에 가고 싶으면, 너는 NLP 기술을 고려할 수 있는다. 예를 들어, 모든 항목의 이름은 명사구이며, Collins Head Finder Rule (Stanford CoreNLP 사용)을 사용하여 머리 단어를 찾은 다음 항목을 비교할 수 있습니다.

private String getMentionHeadUsingCollinsRule(String phrase) { 
    String mentionHead = null; 
    Annotation annotation = pipeline.process(phrase); 
    for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
     Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
     ModCollinsHeadFinder headFinder = new ModCollinsHeadFinder(); 
     mentionHead = tree.headTerminal(headFinder, tree).toString(); 
    } 
    return mentionHead; 
} 

더 고급 : 당신은뿐만 아니라 명사구의 머리를 찾아 의존성 분석을 사용할 수 있지만 그 복잡한 것!