எங்கள் விரிவான வழிகாட்டியின் மூலம் இயற்கையான மொழி செயலாக்கத்தின் முக்கிய கருத்துகளை ஆராயுங்கள், N-கிராம் மொழி மாதிரிகளை முதலில் இருந்தே செயல்படுத்துதல். கோட்பாடு, குறியீடு மற்றும் நடைமுறை பயன்பாடுகளை அறிக.
NLP இன் அடித்தளத்தை உருவாக்குதல்: N-கிராம் மொழி மாதிரி செயலாக்கத்தின் ஆழமான டைவ்
செயற்கை நுண்ணறிவால் ஆதிக்கம் செலுத்தும் ஒரு சகாப்தத்தில், நம் கைகளில் உள்ள ஸ்மார்ட் உதவியாளர்களிடமிருந்து, தேடுபொறிகளுக்கு சக்தி அளிக்கும் அதிநவீன வழிமுறைகள் வரை, மொழி மாதிரிகள் இந்த கண்டுபிடிப்புகளில் பலவற்றை இயக்குகின்றன. உங்கள் தொலைபேசி நீங்கள் தட்டச்சு செய்ய விரும்பும் அடுத்த வார்த்தையை கணிக்கவும், மொழிபெயர்ப்பு சேவைகள் ஒரு மொழியை மற்றொரு மொழியாக சரளமாக மாற்றவும் இதுவே காரணம். ஆனால், இந்த மாதிரிகள் உண்மையில் எவ்வாறு செயல்படுகின்றன? GPT போன்ற சிக்கலான நரம்பியல் நெட்வொர்க்குகள் உருவாவதற்கு முன்பு, கணினி மொழியியலின் அடித்தளம் ஒரு அழகாக எளிமையான, ஆனால் சக்திவாய்ந்த புள்ளிவிவர அணுகுமுறையில் கட்டப்பட்டது: N-கிராம் மாதிரி.
இந்த விரிவான வழிகாட்டி, ஆர்வமுள்ள தரவு விஞ்ஞானிகள், மென்பொருள் பொறியியலாளர்கள் மற்றும் ஆர்வமுள்ள தொழில்நுட்ப ஆர்வலர்களுக்காக வடிவமைக்கப்பட்டுள்ளது. N-கிராம் மொழி மாதிரிகளின் பின்னால் உள்ள கோட்பாட்டை விளக்கி, அதை முதலில் உருவாக்குவது எப்படி என்பதற்கான நடைமுறை, படிப்படியான வழிகாட்டியை வழங்குவதன் மூலம், அடிப்படைகளுக்குச் சென்று, அவற்றை நாங்கள் தெளிவுபடுத்துவோம். N-கிராம்களைப் புரிந்துகொள்வது ஒரு வரலாற்றுப் பாடம் மட்டுமல்ல; இயற்கையான மொழி செயலாக்கத்தில் (NLP) ஒரு உறுதியான அடித்தளத்தை உருவாக்குவதில் இது ஒரு முக்கியமான படியாகும்.
ஒரு மொழி மாதிரி என்றால் என்ன?
அதன் மையத்தில், ஒரு மொழி மாதிரி (LM) என்பது வார்த்தைகளின் வரிசையில் நிகழ்தகவுப் பங்கீடாகும். எளிமையான சொற்களில் கூறினால், அதன் முதன்மை பணி ஒரு அடிப்படை கேள்விக்கு பதிலளிப்பதாகும்: வார்த்தைகளின் வரிசை கொடுக்கப்பட்டால், அடுத்த வார்த்தை எதுவாக இருக்க அதிக வாய்ப்பு உள்ளது?
இந்த வாக்கியத்தை கவனியுங்கள்: "மாணவர்கள் தங்கள் ___ திறந்தனர்."
ஒரு நன்கு பயிற்சி பெற்ற மொழி மாதிரி "புத்தகங்கள்", "மடிக்கணினிகள்", அல்லது "மனம்" போன்ற வார்த்தைகளுக்கு அதிக நிகழ்தகவையும், "ஒளிச்சேர்க்கை", "யானைகள்", அல்லது "நெடுஞ்சாலை" போன்ற வார்த்தைகளுக்கு மிகக் குறைந்த, கிட்டத்தட்ட பூஜ்ஜிய நிகழ்தகவையும் வழங்கும். வார்த்தை வரிசைகளின் நிகழ்தகவை அளவிடுவதன் மூலம், மொழி மாதிரிகள் இயந்திரங்கள் மனித மொழியை ஒருமித்த முறையில் புரிந்துகொள்ளவும், உருவாக்கவும், செயலாக்கவும் உதவுகின்றன.
அவற்றின் பயன்பாடுகள் பரந்து விரிந்துள்ளன மற்றும் நமது அன்றாட டிஜிட்டல் வாழ்க்கையில் ஒருங்கிணைக்கப்பட்டுள்ளன, அவற்றுள்:
- இயந்திர மொழிபெயர்ப்பு: இலக்கு மொழியில் வெளியீட்டு வாக்கியம் சரளமாகவும், இலக்கண ரீதியாகவும் சரியாக இருப்பதை உறுதி செய்தல்.
- பேச்சு அங்கீகாரம்: ஒலி ரீதியாக ஒத்த சொற்றொடர்களுக்கு இடையில் வேறுபடுத்துதல் (எ.கா., "பேச்சை அங்கீகரித்தல்" மற்றும் "ஒரு நல்ல கடற்கரையை அழித்தல்").
- முன்னறிவிப்பு உரை மற்றும் தானாக நிறைவு செய்தல்: நீங்கள் தட்டச்சு செய்யும் போது அடுத்த வார்த்தை அல்லது சொற்றொடரை பரிந்துரைக்கிறது.
- அடைமொழி மற்றும் இலக்கண திருத்தம்: புள்ளிவிவர ரீதியாக சாத்தியமில்லாத வார்த்தை வரிசைகளை அடையாளம் கண்டு கொடியிடுதல்.
N-கிராம்களை அறிமுகப்படுத்துதல்: முக்கிய கருத்து
ஒரு N-கிராம் என்பது உரை அல்லது பேச்சின் கொடுக்கப்பட்ட மாதிரி தொகுப்பிலிருந்து 'n' உருப்படிகளின் தொடர்ச்சியான வரிசையாகும். 'உருப்படிகள்' பொதுவாக வார்த்தைகளாகும், ஆனால் அவை எழுத்துக்கள், அசைகள் அல்லது ஒலியன்களாகவும் இருக்கலாம். N-கிராமில் உள்ள 'n' ஒரு எண்ணைக் குறிக்கிறது, இது குறிப்பிட்ட பெயர்களுக்கு வழிவகுக்கிறது:
- யூனிகிராம் (n=1): ஒரு வார்த்தை. (எ.கா., "தி", "விரைவான", "பழுப்பு", "நரி")
- பைகிராம் (n=2): இரண்டு வார்த்தைகளின் வரிசை. (எ.கா., "தி குயிக்", "குயிக் பிரவுன்", "பிரவுன் ஃபாக்ஸ்")
- ட்ரிகிராம் (n=3): மூன்று வார்த்தைகளின் வரிசை. (எ.கா., "தி குயிக் பிரவுன்", "குயிக் பிரவுன் ஃபாக்ஸ்")
N-கிராம் மொழி மாதிரியின் பின்னால் உள்ள அடிப்படை யோசனை என்னவென்றால், நாம் 'n-1' வார்த்தைகளைப் பார்த்து ஒரு வரிசையில் அடுத்த வார்த்தையை கணிக்க முடியும். ஒரு வாக்கியத்தின் முழு இலக்கண மற்றும் சொற்பொருள் சிக்கலைப் புரிந்து கொள்ள முயற்சிப்பதற்குப் பதிலாக, சிக்கலின் சிரமத்தை வியத்தகு முறையில் குறைக்கும் ஒரு எளிமையான அனுமானத்தை உருவாக்குகிறோம்.
N-கிராம்களின் பின்னால் உள்ள கணிதம்: நிகழ்தகவு மற்றும் எளிமைப்படுத்துதல்
ஒரு வாக்கியத்தின் நிகழ்தகவைக் கணக்கிட (வார்த்தைகளின் வரிசை W = w₁, w₂, ..., wₖ), நாம் நிகழ்தகவின் சங்கிலி விதியைப் பயன்படுத்தலாம்:
P(W) = P(w₁) * P(w₂|w₁) * P(w₃|w₁, w₂) * ... * P(wₖ|w₁, ..., wₖ₋₁)
இந்த சூத்திரம் முழு வரிசையின் நிகழ்தகவு, அதற்கு முன் வந்த அனைத்து வார்த்தைகளையும் கொடுத்தால், ஒவ்வொரு வார்த்தையின் நிபந்தனை நிகழ்தகவுகளின் பெருக்கமாகும் என்று கூறுகிறது. கணித ரீதியாக ஒலித்தாலும், இந்த அணுகுமுறை நடைமுறையில் சாத்தியமற்றது. நீண்ட வரலாற்றைக் கருத்தில் கொண்டு ஒரு வார்த்தையின் நிகழ்தகவைக் கணக்கிடுவது (எ.கா., P(word | "The quick brown fox jumps over the lazy dog and then...")) ஒரு நம்பகமான மதிப்பீட்டைச் செய்ய போதுமான எடுத்துக்காட்டுகளைக் கண்டறிய முடியாத அளவுக்கு பெரிய உரை தரவு தேவைப்படும்.
மார்கோவ் அனுமானம்: ஒரு நடைமுறை எளிமைப்படுத்தல்
N-கிராம் மாதிரிகள் அவற்றின் மிக முக்கியமான கருத்தை அறிமுகப்படுத்தும் இடம் இதுதான்: மார்கோவ் அனுமானம். இந்த அனுமானம் ஒரு வார்த்தையின் நிகழ்தகவானது முந்தைய வார்த்தைகளின் ஒரு நிலையான எண்ணிக்கையை மட்டுமே சார்ந்துள்ளது என்று கூறுகிறது. உடனடி சூழல் போதுமானது என்று நாங்கள் கருதுகிறோம், மேலும் தொலைதூர வரலாற்றை நாம் நிராகரிக்கலாம்.
- பைகிராம் மாதிரிக்கு (n=2), ஒரு வார்த்தையின் நிகழ்தகவு முந்தைய வார்த்தையை மட்டுமே சார்ந்துள்ளது என்று கருதுகிறோம்:
P(wᵢ | w₁, ..., wᵢ₋₁) ≈ P(wᵢ | wᵢ₋₁) - ட்ரிகிராம் மாதிரிக்கு (n=3), இது இரண்டு முந்தைய வார்த்தைகளைச் சார்ந்துள்ளது என்று கருதுகிறோம்:
P(wᵢ | w₁, ..., wᵢ₋₁) ≈ P(wᵢ | wᵢ₋₁, wᵢ₋₂)
இந்த அனுமானம் சிக்கலை கணக்கீட்டு ரீதியாக கையாளக்கூடியதாக ஆக்குகிறது. ஒரு வார்த்தையின் நிகழ்தகவைக் கணக்கிட, இனி அதன் சரியான முழு வரலாற்றைப் பார்க்க வேண்டியதில்லை, கடைசி n-1 வார்த்தைகள் போதும்.
N-கிராம் நிகழ்தகவுகளைக் கணக்கிடுதல்
மார்கோவ் அனுமானம் உள்ள நிலையில், இந்த எளிய நிகழ்தகவுகளை நாம் எவ்வாறு கணக்கிடுவது? அதிகபட்ச நிகழ்தகவு மதிப்பீடு (MLE) எனப்படும் ஒரு முறையைப் பயன்படுத்துகிறோம், அதாவது நம் பயிற்சி உரையிலிருந்து (உடல்) நேரடியாக நிகழ்தகவுகளைப் பெறுகிறோம்.
ஒரு பைகிராம் மாதிரிக்கு, ஒரு வார்த்தை wᵢ, ஒரு வார்த்தை wᵢ₋₁ஐப் பின்தொடர்வதற்கான நிகழ்தகவு இவ்வாறு கணக்கிடப்படுகிறது:
P(wᵢ | wᵢ₋₁) = Count(wᵢ₋₁, wᵢ) / Count(wᵢ₋₁)
வார்த்தைகளில்: வார்த்தை A க்குப் பிறகு வார்த்தை B ஐப் பார்ப்பதற்கான நிகழ்தகவு என்பது "A B" ஜோடியை நாம் பார்த்த நேரங்களின் எண்ணிக்கையை, மொத்தம் வார்த்தை "A" ஐ நாம் பார்த்த நேரங்களின் எண்ணிக்கையால் வகுக்கப்படுகிறது.
ஒரு சிறிய உதாரணத்தை உதாரணமாகப் பயன்படுத்துவோம்: "The cat sat. The dog sat."
- Count("The") = 2
- Count("cat") = 1
- Count("dog") = 1
- Count("sat") = 2
- Count("The cat") = 1
- Count("The dog") = 1
- Count("cat sat") = 1
- Count("dog sat") = 1
"The"க்குப் பிறகு "cat"க்கான நிகழ்தகவு என்ன?
P("cat" | "The") = Count("The cat") / Count("The") = 1 / 2 = 0.5
"cat"க்குப் பிறகு "sat"க்கான நிகழ்தகவு என்ன?
P("sat" | "cat") = Count("cat sat") / Count("cat") = 1 / 1 = 1.0
முதலில் இருந்து படிப்படியாக செயல்படுத்துதல்
இந்தக் கோட்பாட்டை ஒரு நடைமுறைச் செயலாக்கமாக மாற்றுவோம். பைத்தான் போன்ற மொழிகளுக்கு நேரடியாகப் பொருந்தும் தர்க்கத்தைக் கொண்ட, மொழி-அறியாத முறையில் படிகளை கோடிட்டுக் காட்டுவோம்.
படி 1: தரவு முன்செயல்முறை மற்றும் டோக்கனைசேஷன்
எதையும் எண்ணுவதற்கு முன், நமது உரை உடலைத் தயாரிக்க வேண்டும். இது நமது மாதிரியின் தரத்தை உருவாக்கும் ஒரு முக்கியமான படியாகும்.
- டோக்கனைசேஷன்: உரையின் ஒரு பகுதியை சிறிய அலகுகளாகப் பிரிக்கும் செயல்முறை, டோக்கன்கள் என்று அழைக்கப்படுகின்றன (எங்கள் விஷயத்தில், வார்த்தைகள்). உதாரணமாக, "The cat sat." என்பது ["The", "cat", "sat", "."] ஆக மாறும்.
- லோவர்கேசிங்: அனைத்து உரைகளையும் சிறிய எழுத்துக்களாக மாற்றுவது ஒரு நிலையான நடைமுறையாகும். இது "The" மற்றும் "the" ஆகியவற்றை இரண்டு வெவ்வேறு வார்த்தைகளாகக் கருதுவதைத் தடுக்கிறது, இது நமது எண்ணிக்கையை ஒருங்கிணைத்து, மாதிரியை இன்னும் வலுவாக உருவாக்க உதவுகிறது.
- தொடக்க மற்றும் நிறுத்த டோக்கன்களைச் சேர்ப்பது: இது ஒரு முக்கியமான நுட்பமாகும். நாம் சிறப்பு டோக்கன்களைச் சேர்க்கிறோம், <s> (தொடக்க) மற்றும் </s> (நிறுத்தம்) போன்றவை ஒவ்வொரு வாக்கியத்தின் தொடக்கத்திலும் முடிவிலும். ஏன்? இது ஒரு வாக்கியத்தின் ஆரம்பத்தில் ஒரு வார்த்தையின் நிகழ்தகவை (எ.கா., P("The" | <s>)) கணக்கிட மாதிரி அனுமதிக்கிறது மற்றும் முழு வாக்கியத்தின் நிகழ்தகவை வரையறுக்க உதவுகிறது. நமது எடுத்துக்காட்டு வாக்கியம் "the cat sat." என்பது ["<s>", "the", "cat", "sat", ".", "</s>"] ஆக மாறும்.
படி 2: N-கிராம்களை எண்ணுதல்
ஒவ்வொரு வாக்கியத்திற்கும் சுத்தமான டோக்கன்களின் பட்டியல் கிடைத்தவுடன், எண்ணிக்கையைப் பெற நமது உடலின் மூலம் மீண்டும் மீண்டும் செய்கிறோம். இதற்கு சிறந்த தரவு அமைப்பு ஒரு அகராதி அல்லது ஹாஷ் மேப் ஆகும், அங்கு விசைகள் N-கிராம்களாக (டூப்பிள்களாகப் பிரதிநிதித்துவப்படுத்தப்படுகின்றன) இருக்கும், மேலும் மதிப்புகள் அவற்றின் அதிர்வெண்களாக இருக்கும்.
ஒரு பைகிராம் மாதிரிக்கு, நமக்கு இரண்டு அகராதிகளை தேவைப்படும்:
unigram_counts: ஒவ்வொரு தனிப்பட்ட வார்த்தையின் அதிர்வெண்ணை சேமிக்கிறது.bigram_counts: ஒவ்வொரு இரண்டு-வார்த்தை வரிசையின் அதிர்வெண்ணையும் சேமிக்கிறது.
உங்கள் டோக்கனைஸ் செய்யப்பட்ட வாக்கியங்கள் மூலம் நீங்கள் சுழற்றுவீர்கள். ["<s>", "the", "cat", "sat", "</s>"] போன்ற ஒரு வாக்கியத்திற்கு, நீங்கள் செய்வீர்கள்:
- யூனிகிராம்களுக்கான எண்ணிக்கையை அதிகரி: "<s>", "the", "cat", "sat", "</s>".
- பைகிராம்களுக்கான எண்ணிக்கையை அதிகரி: ("<s>", "the"), ("the", "cat"), ("cat", "sat"), ("sat", "</s>").
படி 3: நிகழ்தகவுகளைக் கணக்கிடுதல்
எண்ணிக்கை அகராதிகளை நிரப்பிய பிறகு, நாம் இப்போது நிகழ்தகவு மாதிரியை உருவாக்கலாம். நாம் இந்த நிகழ்தகவுகளை மற்றொரு அகராதியில் சேமிக்கலாம் அல்லது பறக்கும்போது கணக்கிடலாம்.
P(word₂ | word₁) கணக்கிட, நீங்கள் bigram_counts[(word₁, word₂)] மற்றும் unigram_counts[word₁] ஐ மீட்டெடுத்து, பிரிவினை செய்வீர்கள். அனைத்து சாத்தியமான நிகழ்தகவுகளையும் முன்கூட்டியே கணக்கிட்டு, விரைவான தேடலுக்காக அவற்றைச் சேமிப்பது ஒரு நல்ல பயிற்சியாகும்.
படி 4: உரையை உருவாக்குதல் (ஒரு வேடிக்கையான பயன்பாடு)
உங்கள் மாதிரியை சோதிக்க ஒரு சிறந்த வழி, புதிய உரையை உருவாக்கச் சொல்வது. இந்த செயல்முறை பின்வருமாறு செயல்படுகிறது:
- ஒரு ஆரம்ப சூழலுடன் தொடங்கவும், எடுத்துக்காட்டாக, தொடக்க டோக்கன் <s>.
- <s> உடன் தொடங்கும் அனைத்து பைகிராம்களையும் அவற்றின் தொடர்புடைய நிகழ்தகவுகளையும் தேடுங்கள்.
- இந்த நிகழ்தகவுப் பகிர்வை அடிப்படையாகக் கொண்டு அடுத்த வார்த்தையை தோராயமாகத் தேர்ந்தெடுக்கவும் (அதிக நிகழ்தகவுகளைக் கொண்ட வார்த்தைகள் தேர்ந்தெடுக்கப்படுவதற்கான வாய்ப்புகள் அதிகம்).
- உங்கள் சூழலைப் புதுப்பிக்கவும். புதிதாகத் தேர்ந்தெடுக்கப்பட்ட வார்த்தை அடுத்த பைகிராமின் முதல் பகுதியாக மாறும்.
- நீங்கள் ஒரு நிறுத்த டோக்கன் </s> ஐ உருவாக்கும் வரை அல்லது விரும்பிய நீளத்தை அடையும் வரை இந்த செயல்முறையை மீண்டும் செய்யவும்.
ஒரு எளிய N-கிராம் மாதிரியால் உருவாக்கப்பட்ட உரை முழுமையாக ஒருங்கிணைந்ததாக இல்லாவிட்டாலும், அது பெரும்பாலும் இலக்கண ரீதியாக சாத்தியமான சிறிய வாக்கியங்களை உருவாக்கும், மேலும் அது அடிப்படை வார்த்தைக்கு வார்த்தை உறவுகளைக் கற்றுக்கொண்டதைக் காட்டுகிறது.
சிதறலின் சவால் மற்றும் தீர்வு: மென்மையாக்குதல்
நமது மாதிரி பயிற்சி செய்யும் போது பார்த்திராத ஒரு பைகிராம் சோதனையின் போது ஏற்பட்டால் என்ன நடக்கும்? உதாரணமாக, நமது பயிற்சி உடல் "the purple dog" என்ற சொற்றொடரை ஒருபோதும் கொண்டிருக்கவில்லை என்றால்:
Count("the", "purple") = 0
இதன் பொருள் P("purple" | "the") பூஜ்ஜியமாக இருக்கும். இந்த பைகிராம் நாம் மதிப்பிட முயற்சிக்கும் நீண்ட வாக்கியத்தின் ஒரு பகுதியாக இருந்தால், முழு வாக்கியத்தின் நிகழ்தகவும் பூஜ்ஜியமாக மாறும், ஏனெனில் நாம் அனைத்து நிகழ்தகவுகளையும் ஒன்றாகப் பெருக்குகிறோம். இது பூஜ்ஜிய-நிகழ்தகவுப் பிரச்சனை, தரவு சிதறலின் வெளிப்பாடு. நமது பயிற்சி உடல் சாத்தியமான ஒவ்வொரு செல்லுபடியாகும் வார்த்தை சேர்க்கையையும் கொண்டிருக்கும் என்று கருதுவது யதார்த்தமற்றது.
இதற்கான தீர்வு மென்மையாக்குதல் ஆகும். மென்மையாக்கலின் முக்கிய யோசனை என்னவென்றால், நாம் பார்த்த N-கிராம்களிலிருந்து சிறிய அளவிலான நிகழ்தகவு நிறை எடுத்து, நாம் ஒருபோதும் பார்க்காத N-கிராம்களுக்கு விநியோகிக்க வேண்டும். இது எந்த வார்த்தை வரிசையும் சரியாக பூஜ்ஜிய நிகழ்தகவைக் கொண்டிருக்கவில்லை என்பதை உறுதி செய்கிறது.
லாப்லாஸ் (ஒன்று-சேர்) மென்மையாக்கம்
மிக எளிய மென்மையாக்கல் நுட்பம் லாப்லாஸ் மென்மையாக்கல் ஆகும், இது ஒன்று-சேர் மென்மையாக்கல் என்றும் அழைக்கப்படுகிறது. இந்த யோசனை நம்பமுடியாத அளவிற்கு உள்ளுணர்வு: நாம் உண்மையில் செய்ததை விட ஒவ்வொரு சாத்தியமான N-கிராமையும் ஒரு முறை அதிகம் பார்த்தது போல் நடிக்கிறோம்.
நிகழ்தகவுக்கான சூத்திரம் சற்று மாறுகிறது. தொகுதி எண்ணின் எண்ணிக்கையில் 1 ஐச் சேர்க்கிறோம். நிகழ்தகவுகள் இன்னும் 1 க்குச் சேர்க்கப்படுவதை உறுதிப்படுத்த, முழு சொற்களஞ்சியத்தின் அளவை (V) வகுத்தலில் சேர்க்கிறோம்.
P_laplace(wᵢ | wᵢ₋₁) = (Count(wᵢ₋₁, wᵢ) + 1) / (Count(wᵢ₋₁) + V)
- நன்மைகள்: செயல்படுத்துவது மிகவும் எளிது மற்றும் பூஜ்ஜிய நிகழ்தகவு இல்லை என்பதற்கு உத்தரவாதம் அளிக்கிறது.
- பாதகங்கள்: காணப்படாத நிகழ்வுகளுக்கு இது பெரும்பாலும் அதிக நிகழ்தகவை அளிக்கிறது, குறிப்பாக பெரிய சொற்களஞ்சியங்களுடன். இந்த காரணத்திற்காக, இது பெரும்பாலும் மேம்பட்ட முறைகளை விட நடைமுறையில் மோசமாக செயல்படுகிறது.
Add-k மென்மையாக்கம்
சிறிதளவு மேம்பாடு என்பது ஆட்-கே மென்மையாக்கம், இங்கு 1 ஐச் சேர்ப்பதற்குப் பதிலாக, 'k' என்ற சிறிய பகுதியளவு மதிப்பைச் சேர்க்கிறோம் (எ.கா., 0.01). இது அதிக நிகழ்தகவு நிறையை மீண்டும் ஒதுக்குவதன் விளைவைக் கட்டுப்படுத்துகிறது.
P_add_k(wᵢ | wᵢ₋₁) = (Count(wᵢ₋₁, wᵢ) + k) / (Count(wᵢ₋₁) + k*V)
ஒன்று-சேர்ப்பதை விட சிறந்தது என்றாலும், உகந்த 'k' ஐக் கண்டுபிடிப்பது ஒரு சவாலாக இருக்கலாம். குட்-டூரிங் மென்மையாக்கம் மற்றும் கெனெசர்-நெய் மென்மையாக்கம் போன்ற மேம்பட்ட நுட்பங்கள் உள்ளன மற்றும் பல NLP கருவித்தொகுப்புகளில் நிலையானவை, காணப்படாத நிகழ்வுகளின் நிகழ்தகவைக் கணக்கிட மிகவும் அதிநவீன வழிகளை வழங்குகின்றன.
ஒரு மொழி மாதிரியை மதிப்பிடுதல்: குழப்பம்
நமது N-கிராம் மாதிரி ஏதேனும் நன்றாக இருக்கிறதா என்பது நமக்கு எப்படித் தெரியும்? அல்லது நமது குறிப்பிட்ட பணிக்கு ஒரு ட்ரிகிராம் மாதிரி ஒரு பைகிராம் மாதிரியை விட சிறந்ததா? மதிப்பீட்டிற்காக நமக்கு ஒரு அளவுரு அளவீடு தேவை. மொழி மாதிரிகளுக்கான மிகவும் பொதுவான அளவீடு குழப்பம் ஆகும்.
குழப்பம் என்பது ஒரு நிகழ்தகவு மாதிரி ஒரு மாதிரியை எவ்வளவு நன்றாகக் கணிக்கிறது என்பதற்கான ஒரு அளவீடு ஆகும். உள்ளுணர்வாக, இதை மாதிரியின் எடை சராசரி கிளை காரணி என்று கருதலாம். ஒரு மாதிரி 50 என்ற குழப்பத்தைக் கொண்டிருந்தால், ஒவ்வொரு வார்த்தையிலும், 50 வெவ்வேறு வார்த்தைகளிலிருந்து ஒரே மாதிரியாகவும், சுதந்திரமாகவும் தேர்வு செய்ய வேண்டும் என்றால், மாதிரி குழப்பமடைகிறது என்று பொருள்.
குறைவான குழப்ப மதிப்பெண் சிறந்தது, ஏனெனில் மாதிரி சோதனைத் தரவால் குறைவாக "ஆச்சரியப்படுவதை" இது குறிக்கிறது மற்றும் அது உண்மையில் பார்க்கும் வரிசைகளுக்கு அதிக நிகழ்தகவுகளை ஒதுக்குகிறது.
குழப்பம் என்பது சொற்களின் எண்ணிக்கையால் இயல்பாக்கப்பட்ட சோதனை தொகுப்பின் தலைகீழ் நிகழ்தகவாக கணக்கிடப்படுகிறது. எளிதாகக் கணக்கிட இது பெரும்பாலும் அதன் மடக்கை வடிவத்தில் குறிப்பிடப்படுகிறது. நல்ல கணிப்பு சக்தியைக் கொண்ட ஒரு மாதிரி, சோதனை வாக்கியங்களுக்கு அதிக நிகழ்தகவுகளை ஒதுக்கும், இதன் விளைவாக குறைந்த குழப்பம் ஏற்படும்.
N-கிராம் மாதிரிகளின் வரம்புகள்
அவற்றின் அடிப்படை முக்கியத்துவம் இருந்தபோதிலும், N-கிராம் மாதிரிகள் குறிப்பிடத்தக்க வரம்புகளைக் கொண்டுள்ளன, அவை NLP துறையை மிகவும் சிக்கலான கட்டமைப்புகளை நோக்கி நகர்த்தியுள்ளன:
- தரவு சிதறல்: மென்மையாக்குதலுடன் கூட, பெரிய N க்களுக்கு (ட்ரிகிராம்கள், 4-கிராம்கள் போன்றவை), சாத்தியமான வார்த்தை சேர்க்கைகளின் எண்ணிக்கை வெடிக்கும். அவற்றில் பெரும்பாலானவற்றிற்கு நிகழ்தகவுகளை நம்பத்தகுந்த முறையில் மதிப்பிடுவதற்கு போதுமான தரவைக் கொண்டிருப்பது சாத்தியமற்றதாகிவிடுகிறது.
- சேமிப்பு: மாதிரி அனைத்து N-கிராம் எண்ணிக்கைகளையும் கொண்டுள்ளது. சொற்களஞ்சியம் மற்றும் N வளரும்போது, இந்த எண்ணிக்கையை சேமிக்கத் தேவையான நினைவகம் மிகப்பெரியதாக மாறும்.
- நீண்ட தூர சார்புகளைப் பிடிக்க இயலாமை: இதுவே அவற்றின் மிக முக்கியமான குறைபாடு. ஒரு N-கிராம் மாதிரி மிகக் குறைந்த நினைவகத்தைக் கொண்டுள்ளது. ஒரு ட்ரிகிராம் மாதிரி, எடுத்துக்காட்டாக, ஒரு வார்த்தையை அதற்கு இரண்டு நிலைகளுக்கு மேல் தோன்றிய மற்றொரு வார்த்தையுடன் இணைக்க முடியாது. இந்த வாக்கியத்தைக் கவனியுங்கள்: "பல சிறந்த விற்பனையான நாவல்களை எழுதி, தொலைதூர நாட்டில் உள்ள ஒரு சிறிய நகரத்தில் பல தசாப்தங்களாக வாழ்ந்த ஆசிரியர், சரளமாகப் பேசுகிறார் ___." கடைசி வார்த்தையை கணிக்க முயற்சிக்கும் ஒரு ட்ரிகிராம் மாதிரி, "சரளமாகப் பேசுகிறார்" என்ற சூழலை மட்டுமே பார்க்கிறது. இது "ஆசிரியர்" என்ற வார்த்தை அல்லது இருப்பிடத்தைப் பற்றி எதுவும் அறியாது, இவை முக்கியமான தடயங்கள். தொலைதூர வார்த்தைகளுக்கு இடையிலான சொற்பொருள் தொடர்பைப் பிடிக்க முடியவில்லை.
N-கிராம்களுக்கு அப்பால்: நரம்பியல் மொழி மாதிரிகளின் விடியல்
இந்த வரம்புகள், குறிப்பாக நீண்ட தூர சார்புகளைக் கையாள முடியாதது, நரம்பியல் மொழி மாதிரிகளின் வளர்ச்சிக்கு வழி வகுத்தது. மீண்டும் நிகழும் நரம்பியல் நெட்வொர்க்குகள் (RNNகள்), லாங் ஷார்ட்-டெர்ம் நினைவக நெட்வொர்க்குகள் (LSTMs), மற்றும் குறிப்பாக இப்போது ஆதிக்கம் செலுத்தும் டிரான்ஸ்ஃபார்மர்கள் (BERT மற்றும் GPT போன்ற மாதிரிகளுக்கு சக்தி அளிக்கும்) ஆகியவை இந்த குறிப்பிட்ட பிரச்சனைகளைத் தீர்க்க வடிவமைக்கப்பட்டுள்ளன.
சிதறல் எண்ணிக்கையை நம்புவதற்குப் பதிலாக, நரம்பியல் மாதிரிகள் சொற்களின் அடர்த்தியான திசையன் பிரதிநிதித்துவங்களைக் (எம்பெடிங்குகள்) கற்றுக்கொள்கின்றன, அவை சொற்பொருள் உறவுகளைப் பிடிக்கின்றன. அவை நீண்ட வரிசைகளில் சூழலைக் கண்காணிக்க உள் நினைவக வழிமுறைகளைப் பயன்படுத்துகின்றன, இதன் மூலம் மனித மொழியில் உள்ள சிக்கலான மற்றும் நீண்ட தூர சார்புகளைப் புரிந்துகொள்ள அவர்களுக்கு உதவுகின்றன.
முடிவுரை: NLP இன் அடித்தள தூண்
நவீன NLP பெரிய அளவிலான நரம்பியல் நெட்வொர்க்குகளால் ஆதிக்கம் செலுத்தினாலும், N-கிராம் மாதிரி ஒரு தவிர்க்க முடியாத கல்வி கருவியாகவும், பல பணிகளுக்கு ஆச்சரியப்படும்படியாக பயனுள்ள அடிப்படை வடிவமாகவும் உள்ளது. இது மொழி மாதிரியின் முக்கிய சவாலுக்கு ஒரு தெளிவான, விளக்கக்கூடிய மற்றும் கணக்கீட்டு ரீதியாக திறமையான அறிமுகத்தை வழங்குகிறது: எதிர்காலத்தை கணிக்க கடந்த காலத்திலிருந்து புள்ளிவிவர முறைகளைப் பயன்படுத்துதல்.
முதலில் இருந்து ஒரு N-கிராம் மாதிரியை உருவாக்குவதன் மூலம், NLP இன் சூழலில் நிகழ்தகவு, தரவு சிதறல், மென்மையாக்கம் மற்றும் மதிப்பீடு ஆகியவற்றின் ஆழமான, முதல்-கொள்கைகளைப் பற்றிய புரிதலைப் பெறுவீர்கள். இந்த அறிவு வெறும் வரலாற்றுரீதியானது அல்ல; நவீன AI இன் உயர்ந்த வானளாவிய கட்டிடங்கள் கட்டப்பட்ட கருத்தியல் அடித்தளமாகும். எந்தவொரு மொழி மாதிரியையும் தேர்ச்சி பெற இது அவசியம் - எவ்வளவு சிக்கலானதாக இருந்தாலும், மொழியை நிகழ்தகவுகளின் வரிசையாகப் பற்றி சிந்திக்க இது கற்றுக்கொடுக்கிறது.