0

나는 재미와 이익 모두를 위해 camelcamelcamel.com과 다소 비슷한 전자 계산기 제품 가격 비교 도구 (파이썬에서)를 만들고 있습니다. 검색 용어를 사용하여 여러 웹 사이트에서 수집 한 목록과 동일한 항목을 일치 시키려면 어려움에 직면하고 있습니다. 코사인 유사도을 사용하고 Levenshtein 님의 제품 일치 알고리즘을 사용하여 다양한 항목의 제목을 서로 비교하여 동일한 항목을 찾습니다.제품 가격 비교 도구 : 동일한 항목을 일치시키기가 어려움

cosine(product_0 * product_1) = 0.973328526785 
cosine(product_0 * product_2) = 0.50251890763 
다음과 같이

예를 들어, I는 아이템의 다음 항목 및 그 가격 값

{ 
    product_0: { 
     title: "Apple MacBook Air MMGF2HN/A 13.3-inch Laptop (Core i5/8GB/128GB/Mac OS X/Integrated Graphics)", 
     price: "xxxx", 
    }, 
    product_1: { 
     title: "Apple MacBook Air MMGF2HN/A 13.3-inch Laptop (Core i5/8GB/128GB/Mac OS X/Integrated Graphics) cover", 
     price: "xyzy" 
    }, 
    product_2: { 
     title: "Apple Macbook Air MMGF2HNA Notebook (Intel Core i5- 8GB RAM- 128GB SSD- 33.78 cm(13.3)- OS X El Capitan) (Silver)" 
     price: "xxyy" 
    }, 
    product_3: { 
     title: "....", 
     price: "...." 
    }, 

    ... 

    product_99: { 
     // product title and price 
    } 

} 

I 위 목록 코사인 유사도를 사용

(데이터)이, 값은

그러나 실제로는 product_0product_1은 서로 다른 두 항목이지만 그 consine 유사도 값은 항목이 동일 함을 보여줍니다. product_0product_2은 같은 엔티티에 속하지만 코사인 값은 두 항목이 다른 것을 나타냅니다.

나는이 문제를 혼자서 해결하기 위해 애를 썼다. 나는 여기 stackoverflow에서 몇 가지 제안/조언을 구할 수 있다고 생각했다. 항목의 유사성을 맞추기 위해 코사인 유사성을 사용하여 올바른 방향으로 가고 있습니까? 그렇지 않다면 올바른 방향으로 나를 보내주십시오.

내 기본 아이디어는 동일한 항목, 즉 다양한 유사 제품 항목의 시맨틱 분석에 대한 가격 비교를하는 것입니다.

감사합니다.

답변

1

제품 제목에 word2vec을 훈련시킬 수 있습니다. 코드 발생으로 the Python word2vec wrapper를 사용할 때 약간 다르지만 비슷한는 Gensim's model.word2vec를 사용하는 경우 다음과 같이 보일 것입니다 :

indexes, metrics = model.cosine(normalized_phrase) 
model.generate_response(indexes, metrics) 

생성 된 응답은 코사인 유사성을 내림차순으로 정렬 제목 벡터 될 것입니다.

+0

그건 좋은 생각입니다. 아마도 코사인 유사성을 개별적으로 계산하는 대신 내 모델을 훈련해야합니다. 제안 해 주셔서 감사합니다. 제목에 설명을 추가 할 수도 있습니다. [doc2vec] (https://radimrehurek.com/gensim/models/doc2vec.html)을 봐야합니다. – Emacs