ఉత్పత్తి సరిపోలిక: డిస్కవరీ స్కోరింగ్తో సెమాంటిక్ సారూప్యత

ఈ వ్యాసం మేము సెమాంటిక్ సారూప్యతని ఉపయోగించి శోధన ప్రశ్న క్లస్టర్లను ఉత్పత్తులు, భాగాలు మరియు వ్యాసాలకు ఎలా సరిపోలుస్తామో వివరిస్తుంది, ఇది సంబంధితత్వం, ట్రాఫిక్ మరియు పేజీ ర్యాంక్ను సమతుల్యం చేసే ఐచ్ఛిక డిస్కవరీ స్కోరింగ్ మోడల్తో ఉంటుంది.

సమస్య: ఉత్తమ సరిపోలికను కనుగొనడం

వినియోగదారులు "మినీ పిసి" కోసం శోధించినప్పుడు, ఆ ప్రశ్నకు ఏ ఉత్పత్తి పేజీ ఉత్తమంగా ప్రాతినిధ్యం వహిస్తుందో నిర్ణయించాలి. మన వద్ద వేలాది ఉత్పత్తులు, భాగాలు మరియు వ్యాసాలు ఉన్నాయి - వాటిలో ఏది చూపించాలి?

సవాలు బహుళ అంశాలను సమతుల్యం చేయడం:

  • సెమాంటిక్ సంబంధితత్వం: పేజీ ప్రశ్న అర్థానికి ఎంత బాగా సరిపోతుంది?

  • ప్రశ్న ట్రాఫిక్: ఈ ప్రశ్నకు ఎంత శోధన ట్రాఫిక్ వస్తుంది?

  • పేజీ ప్రజాదరణ: పేజీకి ఇప్పటికే ఎంత ట్రాఫిక్ వస్తుంది?

ఒక సరళమైన విధానం (స్వచ్ఛమైన సెమాంటిక్ సారూప్యత) "మినీ పిసి"ని సంపూర్ణ సారూప్యత కలిగిన కానీ సున్నా ట్రాఫిక్ ఉన్న అప్రధాన ఉత్పత్తికి సరిపోల్చవచ్చు. ఒక మెరుగైన విధానం మూడు అంశాలను పరిగణనలోకి తీసుకుంటుంది.

రెండు సరిపోలిక రీతులు

మేము రెండు సరిపోలిక రీతులకు మద్దతు ఇస్తాము:

1. బల్క్ సరిపోలిక (అసలైనది)

ప్రతి క్లస్టర్ దాని ఉత్తమ సరిపోలికను స్వతంత్రంగా కనుగొంటుంది. బహుళ క్లస్టర్లు ఒకే పేజీకి సరిపోలవచ్చు:

  • క్లస్టర్ A: "మినీ పిసి" → ఉత్పత్తి X (సారూప్యత 0.95)

  • క్లస్టర్ B: "చిన్న కంప్యూటర్" → ఉత్పత్తి X (సారూప్యత 0.93)

  • క్లస్టర్ C: "కాంపాక్ట్ డెస్క్టాప్" → ఉత్పత్తి X (సారూప్యత 0.91)

ఇది పునరావృత్తిని సృష్టిస్తుంది కానీ ప్రతి క్లస్టర్కు దాని ఉత్తమ సరిపోలిక లభించేలా చూస్తుంది.

2. పునరావృత ప్రత్యేక రూటింగ్ (1:1 మ్యాపింగ్)

క్లస్టర్లు ట్రాఫిక్ స్కోర్ ద్వారా (అత్యధికం మొదట) ప్రాసెస్ చేయబడతాయి. ఒక పేజీ క్లెయిమ్ చేయబడిన తర్వాత, అది పూల్ నుండి తీసివేయబడుతుంది:

  • క్లస్టర్ A (10K ట్రాఫిక్): "మినీ పిసి" → ఉత్పత్తి X (క్లెయిమ్ చేయబడింది)

  • క్లస్టర్ B (5K ట్రాఫిక్): "చిన్న కంప్యూటర్" → ఉత్పత్తి Y (X అందుబాటులో లేదు)

  • క్లస్టర్ C (2K ట్రాఫిక్): "కాంపాక్ట్ డెస్క్టాప్" → ఉత్పత్తి Z (X, Y అందుబాటులో లేవు)

ఇది స్వయంచాలకంగా తదుపరి-ఉత్తమ సరిపోలికలకు ఫాల్బ్యాక్తో ప్రత్యేకమైన ప్రశ్న పేజీలను సృష్టిస్తుంది.

అల్గోరిథం: సెమాంటిక్ సారూప్యత

దశ 1: ఎంబెడింగ్లను లోడ్ చేయండి

మేము ముందుగా లెక్కించబడిన ఎంబెడింగ్లను లోడ్ చేస్తాము:

  1. ప్రశ్న క్లస్టర్లు: ప్రతి క్లస్టర్ నుండి కేంద్ర ప్రశ్న
  2. మూల పేజీలు: ఉత్పత్తులు, భాగాలు, వ్యాసాలు (దశ 0 నుండి)

రెండూ ఒకే all-mpnet-base-v2 మోడల్ను ఉపయోగిస్తాయి, సరిపోల్చదగిన ఎంబెడింగ్లను నిర్ధారిస్తాయి.

దశ 2: సారూప్యతను లెక్కించండి

ప్రతి క్లస్టర్ కోసం, మేము అన్ని మూల పేజీలకు కొసైన్ సారూప్యతని లెక్కిస్తాము:

similarities = util.cos_sim(cluster_embedding, source_embeddings)[0]

ఇది ప్రతి మూల పేజీకి సారూప్యత స్కోర్ను (0.0 నుండి 1.0) ఉత్పత్తి చేస్తుంది.

దశ 3: డిస్కవరీ స్కోరింగ్ను వర్తింపజేయండి (ఐచ్ఛికం)

డిస్కవరీ స్కోరింగ్ ప్రారంభించబడితే, మేము మూడు అంశాలను మిళితం చేస్తాము:

50:30:20 డిస్కవరీ స్కోరింగ్ మోడల్:

discovery_score = (similarity * 0.5) + (query_score * 0.3) + (page_rank * 0.2)

ఎక్కడ:

  • సారూప్యత (50%): సెమాంటిక్ సంబంధితత్వం (కొసైన్ సారూప్యత)

  • ప్రశ్న స్కోర్ (30%): సాధారణీకరించబడిన ప్రశ్న ట్రాఫిక్ (ఇంప్రెషన్లు + క్లిక్లు)

  • పేజీ ర్యాంక్ (20%): సాధారణీకరించబడిన పేజీ ట్రాఫిక్ (లాగరిథమిక్ స్కేల్)

ఇది సంబంధితత్వాన్ని ట్రాఫిక్ సంభావ్యతతో సమతుల్యం చేస్తుంది.

దశ 4: స్కోర్లను సాధారణీకరించండి

మిళితం చేయడానికి ముందు, మేము ప్రతి భాగాన్ని [0, 1]కి సాధారణీకరిస్తాము:

ప్రశ్న స్కోర్ సాధారణీకరణ:

max_query_score = max(cluster.total_score for cluster in clusters)
norm_query_score = query_score / max_query_score

పేజీ ర్యాంక్ సాధారణీకరణ (అధిక-ట్రాఫిక్ పేజీలు ఆధిపత్యం చెలాయించకుండా నిరోధించడానికి లాగరిథమిక్):

max_page_rank = max(traffic_index.values())
norm_page_rank = log1p(page_rank) / log1p(max_page_rank)

లాగరిథమిక్ స్కేలింగ్ హోమ్ పేజీ (అత్యధిక ట్రాఫిక్) అన్ని సరిపోలికలకు ఆధిపత్యం చెలాయించకుండా నిరోధిస్తుంది.

దశ 5: ఛాసిస్ బూస్ట్ను వర్తింపజేయండి (ఉత్పత్తులు మాత్రమే)

ఉత్పత్తి సరిపోలికల కోసం, మేము ఛాసిస్ రకం ఆధారంగా స్కోర్లను బూస్ట్ చేస్తాము:

  • ట్రియో ఛాసిస్: +10% (కొత్తది, అత్యంత ప్రజాదరణ)

  • ఎస్-ఛాసిస్: +5% (కాంపాక్ట్ ఫార్మ్ ఫ్యాక్టర్, మినీ పిసిలకు ప్రజాదరణ)

  • ఎచ్-ఛాసిస్: బూస్ట్ లేదు (పాతది, తక్కువ ప్రజాదరణ)

if matched_type == "product":
    sku = matched_key.replace("/p/", "")
    chassis_prefix = sku.split("-")[0]
    if chassis_prefix.startswith("Treo"):
        similarity *= 1.10
    elif chassis_prefix.startswith("S"):
        similarity *= 1.05

సారూప్యత దగ్గరగా ఉన్నప్పుడు కొత్త ఉత్పత్తులు ప్రాధాన్యత పొందేలా ఇది నిర్ధారిస్తుంది.

దశ 6: ఉత్తమ సరిపోలికను ఎంచుకోండి

బల్క్ సరిపోలిక:

best_idx = similarities.argmax()
if similarities[best_idx] >= threshold:
    matches.append(cluster → source_pages[best_idx])

ప్రత్యేక రూటింగ్:

# ట్రాఫిక్ ద్వారా క్లస్టర్లను క్రమబద్ధీకరించండి (అత్యధికం మొదట)
sorted_clusters = sorted(clusters, key=lambda c: c.total_score, reverse=True)

# ... (అమలు వివరాలు విస్మరించబడ్డాయి)

కాన్ఫిగర్ చేయదగిన థ్రెషోల్డ్

సరిపోలిక థ్రెషోల్డ్ సరిపోలిక ఎంత కఠినంగా ఉంటుందో నిర్ణయిస్తుంది:

  • 0.80 (డిఫాల్ట్): మితమైన కఠినత, చాలా క్లస్టర్లు సరిపోతాయి

  • 0.85: కఠినమైనది, తక్కువ కానీ అధిక-నాణ్యత సరిపోలికలు

  • 0.75: మరింత సౌకర్యవంతమైనది, ఎక్కువ క్లస్టర్లు సరిపోతాయి

థ్రెషోల్డ్ను కాన్ఫిగ్ ఫైల్ ద్వారా కోడ్ మార్పులు లేకుండా సర్దుబాటు చేయవచ్చు.

థ్రెషోల్డ్ విశ్లేషణ రీతి

పూర్తి పైప్లైన్ అమలు చేయడానికి ముందు, మేము థ్రెషోల్డ్ ప్రభావాన్ని విశ్లేషించవచ్చు:

python 6_match_source_data.py --analyze-threshold

ఇది సారూప్యత పరిధుల్లో నమూనాలను ఉత్పత్తి చేస్తుంది:

  • 0.90-1.00: సంపూర్ణ సరిపోలికలు

  • 0.80-0.90: బలమైన సరిపోలికలు

  • 0.70-0.80: మితమైన సరిపోలికలు

  • 0.60-0.70: బలహీనమైన సరిపోలికలు

  • 0.50-0.60: చాలా బలహీనమైన సరిపోలికలు

  • 0.40-0.50: పేలవమైన సరిపోలికలు

ఒక వెబ్ UI ఈ నమూనాలను మాన్యువల్ రివ్యూకు ప్రదర్శిస్తుంది. థ్రెషోల్డ్ను ఎంచుకున్న తర్వాత, పైప్లైన్ను తిరిగి ప్రారంభించండి:

python 6_match_source_data.py --resume-after-threshold

ఇది UI నిర్ణయం నుండి థ్రెషోల్డ్ను లోడ్ చేస్తుంది మరియు సరిపోలికను పూర్తి చేస్తుంది.

ఇంక్రిమెంటల్ ఎంబెడింగ్

మేము ప్రశ్నలు మరియు మూల పేజీల రెండింటిక