సన్నిహిత సరిపోలిక కోసం ఎంబెడ్డింగ్లను శోధించడం అంటే ఒకదానికొకటి దగ్గరగా ఉండే అర్థాన్ని కలిగి ఉన్న ఎంబెడ్డింగ్లను కనుగొనడం. ఎంబెడ్డింగ్లు అనేది నిర్దిష్ట పనుల కోసం ఇన్పుట్లుగా భాషా నమూనాలకు అందించబడే వాక్యం యొక్క వెక్టోరియల్ ప్రాతినిధ్యం. ఇలాంటి ఎంబెడ్డింగ్లను కనుగొనడానికి ఉపయోగించే పద్ధతి మరియు సాంకేతికతలను మేము ఇక్కడ చర్చిస్తాము.
వాక్యనిర్మాణం
సారూప్యత పరంగా వాటి వ్యత్యాసం ఆధారంగా ఎంబెడ్డింగ్ల మధ్య వ్యత్యాసాన్ని కనుగొనడానికి మనం ఉపయోగించగల అనేక సాంకేతికతలు మరియు సాధనాలు ఉన్నాయి. పొందుపరిచే సారూప్యతలను కనుగొనడానికి మేము ఉపయోగించే పద్ధతులు మరియు వాటి ప్రమేయం ఉన్న సింటాక్స్ క్రిందివి.
పేర్కొన్న పాయింట్ల నుండి, ఎంబెడ్డింగ్ల కోసం సారూప్యత సరిపోలికను కనుగొనడానికి మనం ఉపయోగించగల మోడల్లు మాకు తెలుసు. ఇప్పుడు, మేము ఈ మోడల్లలో ప్రతిదానిని ఉపయోగించడం మరియు ఈ ప్రతి మోడల్పై వ్యక్తిగత ఉదాహరణలను అమలు చేయడం నేర్చుకుంటాము.
ఉదాహరణ 1: వర్డ్ ఎంబెడ్డింగ్ల ద్వారా సన్నిహిత సరిపోలికను పొందుపరచడం
సారూప్యత మ్యాచ్ కోసం ఎంబెడ్డింగ్లు అనే పదాన్ని అమలు చేయడానికి ముందు, ఎంబెడ్డింగ్లు అనే పదం గురించి మనం తెలుసుకోవాలి. వర్డ్ ఎంబెడ్డింగ్ అనేది టెక్స్ట్ను వెక్టర్ (సంఖ్యా విలువలు) రూపంలోకి మార్చే ప్రక్రియ, ఎందుకంటే మా సిస్టమ్లు ఇన్పుట్ను సంఖ్యా అంకెల రూపంలో మాత్రమే అర్థం చేసుకుంటాయి.
వన్-హాట్ ఎన్కోడింగ్తో సహా ఈ పనిని చేయడానికి అనేక ఇతర మార్గాలు ఉన్నాయి, అయితే మేము ఎంబెడ్డింగ్ల అనే పదాన్ని ఉపయోగిస్తాము. ఈ విధంగా, టెక్స్ట్ల నుండి న్యూరల్ నెట్వర్క్ మోడల్స్ (ఉదా. word2vec లేదా గ్లోవ్) ద్వారా పొందుపరచడం నేర్చుకుంటారు. పదాలు హై-డైమెన్షనల్ వెక్టర్ స్పేస్కు మ్యాప్ చేయబడ్డాయి. సందర్భానుసారంగా ఉండే పదాలన్నీ దగ్గరి పాయింట్లకు మ్యాప్ చేయబడ్డాయి. ఈ విధంగా, ఎంబెడ్డింగ్లు టెక్స్ట్లోని విభిన్న పదాల మధ్య సంబంధాలు మరియు సారూప్యతలను సంగ్రహించగలవు.
ఒక వాక్యం కోసం ఒక పదాన్ని పొందుపరిచేలా సృష్టిద్దాం. ఎంబెడ్డింగ్ అనే పదాన్ని సృష్టించడానికి, పైథాన్ “జెన్సిమ్” ఫ్రేమ్వర్క్ను అందిస్తుంది. Gensim అనేది ఎంబెడ్డింగ్లను రూపొందించడంలో సహాయపడే “word2vec” మోడల్ను ఉపయోగించడాన్ని అనుమతించే లైబ్రరీ ప్యాకేజీ. పొందుపరచడాన్ని అమలు చేయడానికి, మేము మొదట మా పైథాన్ కంపైలర్లలో జెన్సిమ్ను ఇన్స్టాల్ చేయాలని నిర్ధారిస్తాము. అప్పుడు, జెన్సిమ్ నుండి, మేము 'word2vec' మోడల్ను దిగుమతి చేస్తాము.
“word2vec” మోడల్ అనేది రెండు ఇన్పుట్ ఆర్గ్యుమెంట్లను మాత్రమే ఉపయోగించే ఒక రకమైన అల్గారిథమ్, ఇక్కడ మొదటి ఆర్గ్యుమెంట్కు టెక్స్ట్ లేదా మనం ఎంబెడ్డింగ్ చేయాలనుకుంటున్న వాక్యం అవసరం, మరియు రెండవ ఆర్గ్యుమెంట్ కనీస గణనను నిర్దేశిస్తుంది, ఇది కనిష్ట సంఖ్యను నిర్దేశిస్తుంది. పదం కనిపించడం లేదా చూడడం అవసరం.
'word2vec' మోడల్ను దిగుమతి చేసిన తర్వాత, మేము 'టెక్స్ట్'ని నిర్దేశిస్తాము. మేము టెక్స్ట్ని పేర్కొన్న తర్వాత, మేము ఈ “word2vec” మోడల్ని టెక్స్ట్తో పాస్ చేయడం ద్వారా మరియు “1”కి సమానమైన కనీస గణనను సెట్ చేయడం ద్వారా శిక్షణ ఇస్తాము. ఇప్పుడు, మేము దీనిని శిక్షణ పొందిన “word2vec.wv.most_similar(‘consume’)” మోడల్ అని పిలుస్తాము మరియు ఈ ఉదాహరణలో “consume” అని మనం తనిఖీ చేయాలనుకుంటున్న పదానికి దగ్గరగా ఉన్న ఎంబెడ్డింగ్లను ఫీడ్ చేస్తాము. పొందుపరిచే ఫలితాలను తనిఖీ చేయడానికి, మేము మోడల్ నుండి అవుట్పుట్ను ప్రింట్ చేస్తాము:
నుండి ఒక దేశంగా నమూనాలు దిగుమతి Word2Vecవచనం = [ [ 'కుందేలు' , 'ఉంది' , 'పళ్ళు' ] ]
మోడల్ = Word2Vec ( వచనం , min_count = 1 )
ఇలాంటి_పొందుబాటు = మోడల్. wv . చాలా_ఇలాంటివి ( 'కుందేలు' )
ముద్రణ ( ఇలాంటి_పొందుబాటు )
ఈ ఉదాహరణలో, మేము సందర్భం పరంగా వాటి సారూప్యతను తనిఖీ చేయడానికి “word2vec” మోడల్ని ఉపయోగించి టెక్స్ట్ కోసం ఎంబెడ్డింగ్ అనే పదాన్ని సృష్టిస్తాము మరియు సారూప్య ఎంబెడ్డింగ్ల కోసం తనిఖీ చేసే కోడ్ అవుట్పుట్ అయిన గతంలో జోడించిన స్నిప్పెట్లో చూడవచ్చు. 'వినియోగించు' అనే పదం.
ఉదాహరణ 2: BERT మోడల్ ద్వారా సన్నిహిత శోధనను పొందుపరచడం
టెక్స్ట్ల మధ్య సారూప్యతను లెక్కించడానికి ముందుగా శిక్షణ పొందిన సహజ భాషా ప్రాసెసింగ్ నమూనాలు ఉన్నాయి, ఎందుకంటే అవి పదాల మధ్య సందర్భానుసార సంబంధాన్ని అర్థం చేసుకోగలవు మరియు నేర్చుకోగలవు. BERT అనేది “sentence_transformers” నుండి ముందుగా శిక్షణ పొందిన భాషా నమూనాలలో ఒకటి మరియు ఇది పాఠాల మధ్య సారూప్యతలను నేర్చుకోగలదు. టెక్స్ట్ల మధ్య సారూప్యతను కనుగొనడానికి, మేము మొదట ఈ మోడల్ను టెక్స్ట్ లేదా వాక్యాలకు చక్కగా ట్యూన్ చేయాలి.
ఇది పూర్తయిన తర్వాత, ఎంబెడ్డింగ్లను తెలుసుకోవడానికి మనం ఈ మోడల్ని ఉపయోగించవచ్చు. అప్పుడు, మేము 'కొసైన్ సారూప్యత' ఫంక్షన్ని ఉపయోగించి పాఠాల మధ్య సారూప్యతను లెక్కించవచ్చు. మేము ఈ ఉదాహరణను “గూగుల్ కోలాబ్” ఆన్లైన్ పైథాన్ ప్లాట్ఫారమ్లో అమలు చేస్తాము. మోడల్ను చక్కగా ట్యూన్ చేయడానికి, మేము (BERT) మోడల్ను లోడ్ చేస్తాము. ఆ ప్రయోజనం కోసం, మేము మొదట 'SentenceTransformers'ని ఇన్స్టాల్ చేసి దిగుమతి చేస్తాము. అప్పుడు, మేము SentenceTransformerని ఉపయోగించి దాని ప్రీ-ట్రైన్డ్ మోడల్ నుండి మోడల్ను లోడ్ చేస్తాము. మోడల్ను లోడ్ చేయడానికి, మేము SentenceTransformer మరియు BERT మోడల్ను మొత్తంగా “$SentenceTransformer('bert-base-nli-mean-tokens')” అని పిలుస్తాము, ఇక్కడ మేము BERT యొక్క ప్రీ-ట్రైన్డ్ మోడల్ పేరును ఇన్పుట్ పారామీటర్లో పేర్కొంటాము మరియు అప్పుడు మేము దీనిని “BERTmodel” వేరియబుల్లో సేవ్ చేస్తాము.
మేము ఈ మోడల్ను లోడ్ చేయడం పూర్తయిన తర్వాత, మేము ఇప్పుడు నాలుగు టెక్స్ట్లను పేర్కొంటాము, వాటి మధ్య సారూప్యతను తనిఖీ చేయడానికి ఒక్కొక్కటి ఒక్కో వాక్యాన్ని కలిగి ఉంటుంది. ఉదాహరణకు మేము టెక్స్ట్లను పేర్కొన్న తర్వాత, మేము ఇప్పుడు ఈ టెక్స్ట్ కోసం ఎంబెడ్డింగ్లను సృష్టిస్తాము. “ఎన్కోడ్” ఫంక్షన్ని ఉపయోగించడం ద్వారా మేము ఒక్కొక్క టెక్స్ట్కు ఎంబెడ్డింగ్లను వ్యక్తిగతంగా సృష్టిస్తాము.
మేము BERT మోడల్ యొక్క ఉపసర్గతో ఎన్కోడింగ్ ఫంక్షన్ను “BERTmodel.encoding ()” అని పిలుస్తాము. మేము ఈ ఫంక్షన్ యొక్క పారామితులకు '512'కి సమానంగా నిర్ణయించిన 'టెక్స్ట్' మరియు 'గరిష్ట పొడవు'ని పాస్ చేస్తాము. మేము ప్రతి టెక్స్ట్లో ఈ ఎన్కోడింగ్ ఫంక్షన్ని పిలుస్తాము మరియు ఇది టెక్స్ట్ను ఎంబెడ్డింగ్లుగా మారుస్తుంది.
ఇప్పుడు, ఈ ఎంబెడ్డింగ్ల మధ్య సారూప్యతను కనుగొనడానికి మేము ఈ ప్రతి ఎంబెడ్డింగ్లను ఉపయోగిస్తాము మరియు వాటిని కొసైన్ సారూప్యత ఫంక్షన్లో ప్రత్యామ్నాయం చేస్తాము. పాఠాలు/పత్రాల వర్గీకరణలు మరియు క్లస్టరింగ్ కోసం అన్ని సహజ భాషా ప్రాసెసింగ్ పనులలో కొసైన్ సారూప్యత ఫంక్షన్ విస్తృతంగా ఉపయోగించబడుతుంది.
ఈ ఎంబెడ్డింగ్ల మధ్య సారూప్యతను కనుగొనడానికి, మేము కొసైన్ సారూప్యత ఫంక్షన్ని ఉపయోగిస్తాము మరియు ఎంబెడెడ్ వాక్యం యొక్క విలువను ఇండెక్స్ “0”తో మరియు ఇతర ఎంబెడెడ్ వాక్యాన్ని “1 నుండి 3” ఇండెక్స్తో ప్రత్యామ్నాయం చేసి, వాక్యం 0 యొక్క సారూప్యతను ఇతర 3తో తనిఖీ చేస్తాము వాక్యాలు. కొసైన్ సారూప్యత ఫంక్షన్ అవుట్పుట్ విలువలు -1 నుండి 1 వరకు ఉంటాయి. ఇక్కడ, 1 రెండు ఎంబెడ్డింగ్లు ఒకేలా ఉన్నాయని మరియు -1 రెండు ఎంబెడ్డింగ్లు ఒకేలా లేవని చెబుతుంది. మేము ముందుగా శిక్షణ పొందిన BERT మోడల్ని ఉపయోగించి ఉదాహరణలలో సృష్టించిన నాలుగు వాక్యాల ఎంబెడ్డింగ్లను ఉపయోగించి కొసైన్ సారూప్యత ఫంక్షన్ను అమలు చేసే పద్ధతిని చూపే కోడ్ స్నిప్పెట్ను జోడించాము.
!పిప్ ఇన్స్టాల్ వాక్యం_ట్రాన్స్ఫార్మర్స్వాక్యాలు = [
'నాలుగు సంవత్సరాల క్రితం, బాటిల్ ఇంకా నిండి ఉంది మరియు .',
'కుక్క పంజరం నుండి తప్పించుకోవాలని కలలు కన్నది మరియు వీధిలో ఆమె తన స్నేహితురాలు వెళుతున్నట్లు చూసింది.',
'ఆ వ్యక్తి చాలా నెలలుగా జెల్లీ ఫిష్తో ఆడుకుంటున్నాడు.',
'అతను తన వార్డ్రోబ్లో నత్తను కనుగొన్నాడు.']
వాక్యం_ట్రాన్స్ఫార్మర్స్ నుండి సెంటెన్స్ ట్రాన్స్ఫార్మర్ని దిగుమతి చేయండి
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
వాక్యం_ఎంబెడ్డింగ్స్ = Bertmodel.encode(వాక్యాలు)
వాక్యం_ఎంబెడ్డింగ్స్.ఆకారం
sklearn.metrics నుండి. pairwise దిగుమతి cosine_similarity
వాక్యం 0 కోసం కొసైన్ సారూప్యతను # గణించండి:
కొసైన్_సిమిలారిటీ(
[వాక్యం_ఎంబెడ్డింగ్లు[0]],
వాక్యం_ఎంబెడ్డింగ్లు[1:])
అవుట్పుట్లోని శ్రేణి ఇతర మూడు వాక్యాలకు “వాక్యం 0” యొక్క సారూప్యత విలువను ప్రదర్శిస్తుంది, ఉదా. 1, 2 మరియు 3.
ముగింపు
ఎంబెడ్డింగ్ల మధ్య సారూప్యతను కనుగొనే పద్ధతులను మేము చర్చించాము. 'word2vec' జెన్సిమ్ మోడల్ మరియు ప్రీట్రైన్డ్ BERT మోడల్ని ఉపయోగించి పొందుపరిచే దగ్గరి సరిపోలిక కోసం శోధించడానికి మేము రెండు వేర్వేరు ఉదాహరణలను చూపించాము.