You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/ta/6-NLP/4-Hotel-Reviews-1/README.md

412 lines
70 KiB

# ஹோட்டல் மதிப்பாய்வுகளுடன் உணர்வுப்பூர்வமான பகுப்பாய்வு - தரவுகளை செயலாக்குதல்
இந்த பிரிவு முன் பாடங்களில் கற்றுக்கொண்ட நுட்பங்களைப் பயன்படுத்தி ஒரு பெரிய தரவுத்தொகுப்பின் ஆராய்ச்சி தரவு பகுப்பாய்வைச் செய்வீர்கள். பல்வேறு நெடுவரிசைகளின் பயன்பாட்டைப் புரிந்துகொண்ட பிறகு, நீங்கள் கற்றுக்கொள்ளப்போகும்போது:
- தேவையில்லாத நெடுவரிசைகளை எப்படி அகற்றுவது
- உள்ள நெடுவரிசைகளின் அடிப்படையில் சில புதிய தரவுகளை எப்படி கணக்கிடுவது
- இறுதிப் பயிற்சிக்கான பயன்படுத்துவதற்கான உருவாக்கப்பட்ட தரவுத்தொகுப்பை எப்படி சேமிப்பது
## [முன்பாடப் தேர்வு](https://ff-quizzes.netlify.app/en/ml/)
### அறிமுகம்
இதுவரை நீங்கள் கற்றுக்கொண்டிருக்கின்றீர்கள், உரை தரவு எண் தரவுகளுக்கு முற்றிலும் வேறுபடுகிறது. அது மனிதனால் எழுதப்பட்ட அல்லது பேசப்பட்டதாயிருந்தால், அதில் உள்ள மாதிரிகள், மீண்டும் தோன்றல்கள், உணர்வு மற்றும் பொருளைக் கண்டுபிடிக்க முடியும். இந்த பாடம் நிஜ தரவுத்தொகுப்பில் நிஜ சவாலைத் தாங்கி உங்களை கொண்டு செல்கிறது: **[ஐரோப்பாவில் 515 கே ஹோட்டல் மதிப்பாய்வுகள் தரவு](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe)** மற்றும் ஒரு [CC0: பொது துறை உரிமம்](https://creativecommons.org/publicdomain/zero/1.0/) கொண்டது. இது Booking.com இன் பொது மூலங்களிலிருந்து சேகரிக்கப்பட்டது. இந்த தரவுத்தொகுப்பின் உருவாக்குனர் ஜியாஷென் லியூ.
### தயார் செய்வது
உங்களுக்கு தேவையானவை:
* Python 3 பயன்படுத்தி .ipynb நோட்புக்-களை இயக்கும் திறன்
* pandas
* NLTK, [இதை நீங்கள் உள்ளூர் முறையில் நிறுவ வேண்டும்](https://www.nltk.org/install.html)
* இந்த தரவுத்தொகுப்பு Kaggle இல் கிடைக்கிறது [515K Hotel Reviews Data in Europe](https://www.kaggle.com/jiashenliu/515k-hotel-reviews-data-in-europe). இது சுமார் 230 MB அளவுக்கு உள்ளது. அதை இந்த NLP பாடங்களுக்கான ரூட் `/data` அடைவுக்கு பதிவிறக்கம் செய்யவும்.
## ஆராய்ச்சி தரவு பகுப்பாய்வு
இந்த சவால் நீங்கள் உணர்வுப்பூர்வமான பகுப்பாய்வைக் கொண்டு மற்றும் விருந்தினர் மதிப்பீடு மதிப்பெண்களைப் பயன்படுத்தி ஒரு ஹோட்டல் பரிந்துரை செயற்கை நுண்ணறிவு அமைப்பை உருவாக்குகிறீர்கள் என்று கருதுகிறது. நீங்கள் பயன்படுத்தவிருக்கும் தரவுத்தொகுப்பில் 6 நகரங்களில் உள்ள 1493 வெவ்வேறு ஹோட்டல்களின் மதிப்பாய்வுகள் உள்ளன.
பைதான், ஹோட்டல் மதிப்பாய்வுகளின் தரவுத்தொகுப்பு மற்றும் NLTK உணர்வு பகுப்பாய்வு மூலம் நீங்கள் கண்டுபிடிக்க முடியும்:
* மதிப்பாய்வுகளில் மிக அதிகம் பயன்படுத்தப்படும் வார்த்தைகள் மற்றும் சொற்றொடர்கள் என்ன?
* ஹோட்டலை விவரிக்கும் அதிகாரப்பூர்வ *டேக்கள்* மதிப்பாய்வு மதிப்பெண்களுடன் தொடர்புடையதா (உதா: ஒரு ஹோட்டலின் *இளம் குழந்தைகளுடன் குடும்பம்* என்ற மதிப்பாய்வுகள் *தனித்து பயணிப்பவர்* என்ற மதிப்பாய்வுகளுக்குக் காட்டிலும் அதிகமாக எதிர்மறையா? இது *தனிப்பட்ட பயணிகளுக்கு* மேலாண்மை சிறந்ததாக இருத்தலையே குறிக்கக்கூடும்?)
* NLTK உணர்வு மதிப்பெண்கள் ஹோட்டல் மதிப்பாய்வாளர் அளித்த எண் மதிப்பெண்களுடன் 'ஒரே கருத்தில் உள்ளன'வா?
#### தரவுத்தொகுப்பு
நீங்கள் பதிவிறக்கம் செய்து உள்ளூரில் சேமித்துள்ள தரவுத்தொகுப்பை ஆராய்வோம். ஒரு தொகுப்பியில், உதாரணமாக VS Code அல்லது Excelல் கோப்பைப் திறக்கவும்.
தரவுத்தொகுப்பில் தலைப்புகள் பின்வருமாறு உள்ளன:
*Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng*
இவை கீழ்வருமாறு பிரிக்கப்பட்டுள்ளன:
##### ஹோட்டல் நெடுவரிசைகள்
* `Hotel_Name`, `Hotel_Address`, `lat` (அட்சரேகை), `lng` (நீளிரேகை)
* *lat* மற்றும் *lng* ஐ பயன்படுத்தி பைதானில் ஹோட்டல் இருப்பிடங்களை வரைபடமாக உருவாக்கலாம் (எதிர்மறை மற்றும் நேர்மறை மதிப்பாய்வுகளுக்காக வண்ணமயமாக்கலாம்)
* Hotel_Address எங்களுக்கு தெளிவாக பயன்படுவதில்லை, அதனால் நாம் இதனை ஒரு நாட்டுக்காக மாற்றி எளிதான வரிசைப்படுத்தல் மற்றும் தேடலுக்கு மாற்றலாம்
**ஹோட்டல் மெட்டா-மதிப்பாய்வு நெடுவரிசைகள்**
* `Average_Score`
* தரவுத்தொகுப்பின் உருவாக்குனர் கூறியதில், இந்த நெடுவரிசை *கடந்த ஆண்டு புதிய கருத்தின் அடிப்படையில் கணக்கிடப்பட்ட ஹோட்டலின் சராசரி மதிப்பெண்* ஆகும். இது மதிப்பெண்களை கணக்கிடும் அசாதாரண வழி போல தெரிந்தாலும், தரவு எரி பெறப்பட்டதுக்காக இதனை தற்போது பெறப்பட்டதாக கருதலாம்.
✅ இந்த தரவுத்தொகுப்பில் உள்ள மற்ற நெடுவரிசைகளின் அடிப்படையில், சராசரி மதிப்பெண் கணக்கிட வேறொரு வழி உங்களுக்குத் தெரிகிறதா?
* `Total_Number_of_Reviews`
* இந்த ஹோட்டல் பெற்ற முழு மதிப்பாய்வுகளின் எண்ணிக்கை - இவை தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வுகளா என்பது தெளிவில்லை (சில குறியீடு எழுதாமல்)
* `Additional_Number_of_Scoring`
* இது ஒரு மதிப்பெண் அளிக்கப்பட்டது என்றாலும் மதிப்பாய்வாளர் நேர்மறை அல்லது எதிர்மறை மதிப்பாய்வை எழுதவில்லை என்ற பொருள்
**மதிப்பாய்வு நெடுவரிசைகள்**
- `Reviewer_Score`
- இது குறைந்தபட்சம் மற்றும் அதிகபட்சம் மதிப்புகள் 2.5 மற்றும் 10 இடையேயான மிக உயர பருமனுடன் ஒரு எண் மதிப்பு ஆகும்
- 2.5 என்பது மிகக் குறைந்த மதிப்பெண் என்பதை ஏன் என்று விளக்கப்படவில்லை
- `Negative_Review`
- மதிப்பாய்வாளர் எதுவும் எழுதவில்லை என்றால், இந்த நெடுவரிசையில் "**எந்த எதிர்மறையும் இல்லை**" என்று இருக்கும்
- கவனிக்கவும், மதிப்பாய்வாளர் நேர்மறை மதிப்பாய்வை எதிர்மறை மதிப்பாய்வு நெடுவரிசையில் எழுதக்கூடும் (உதா: "இந்த ஹோட்டலில் எதுவும் கெட்டதில்லை")
- `Review_Total_Negative_Word_Counts`
- அதிக எதிர்மறை வார்த்தை எண்ணிக்கை குறைந்த மதிப்பெண் என்பதை குறிக்கலாம் (உணர்வு சோதனை செய்யாமல்)
- `Positive_Review`
- மதிப்பாய்வாளர் எதுவும் எழுதவில்லை என்றால், இந்த நெடுவரிசையில் "**எந்த நேர்மறையும் இல்லை**" என்று இருக்கும்
- கவனிக்கவும், மதிப்பாய்வாளர் எதிர்மறை மதிப்பாய்வை நேர்மறை நெடுவரிசையில் எழுதக்கூடும் (உதா: "இந்த ஹோட்டலில் நல்லதெதுவும் இல்லை")
- `Review_Total_Positive_Word_Counts`
- அதிக நேர்மறை வார்த்தை எண்ணிக்கை அதிக மதிப்பெண் என்பதை குறிக்கலாம் (உணர்வு சோதனை செய்யாமல்)
- `Review_Date` மற்றும் `days_since_review`
- ஒரு புதியவை அல்லது பழையவை என்ற அளவுகோல் மதிப்பாய்வுக்கு பொருந்தக்கூடும் (பழைய மதிப்பாய்வுகள் இன்றையவை போல துல்லியமாக இருக்காது, காரணம் ஹோட்டல் மேலாண்மை மாறியிருப்பது, புதுப்பிப்புகள் நடந்திருப்பது, அல்லது ஒரு குளம் சேர்க்கப்பட்டதுபோன்றவை)
- `Tags`
- இவை சுருக்கமாக மதிப்பாய்வாளர் தங்களை விவரிக்க தேர்ந்தெடுக்கக்கூடிய குறிப்பு வார்த்தைகள் (உதா: தனித்து பயணி அல்லது குடும்பம்), அவர்கள் பெற்ற அறையின் வகை, தங்கிய கால அளவு மற்றும் மதிப்பாய்வு சமர்ப்பிக்கப்பட்ட சாதனம் போன்றவை
- வருத்தமாக, இந்த டேக்கள் பயன்படுத்துவதில் சிக்கல்கள் உள்ளன, கீழே உள்ள பகுதி இவற்றின் பயனுள்ள தன்மையை விவரிக்கிறது
**மதிப்பாய்வாளர் நெடுவரிசைகள்**
- `Total_Number_of_Reviews_Reviewer_Has_Given`
- பரிந்துரை மாதிரியில் இதுவும் முக்கியமான பங்கு வகிக்கலாம், உதாரணமாக, நூற்றுக்கணக்கான மதிப்பாய்வுகள் வழங்கும் மதிப்பாய்வாளர்கள் எதிர்மறை நம்பிக்கை அதிகம் இருக்கலாம். எனினும், எந்த மதிப்பாய்வாளர் என்பது தனித்துவ குறியீட்டால் அடையாளம் காணப்படாததால், மதிப்பாய்வுகளுடன் இணைக்க முடியாது. 100 அல்லது அதற்கு மேற்பட்ட மதிப்பாய்வுகள் வழங்கிய 30 மதிப்பாய்வாளர்கள் உள்ளனர், ஆனால் அது பரிந்துரை மாதிரிக்கு உதவுவது சிக்கலாகும்.
- `Reviewer_Nationality`
- சிலர் குறிப்பிட்ட தேசியத்துவம் கொண்டவர்கள் நேர்மறை அல்லது எதிர்மறை மதிப்பாய்வை அளிக்க வாய்ப்பு அதிகம் என நினைக்கலாம். இவ்விதமான சிந்தனைகளை உங்கள் மாதிரிகளில் நன்கு பரிசீலித்து உள்ளிடுங்கள். இவை தேசிய (சில சமயங்களில் இன) பொதுக்காணோன், ஒவ்வொரு மதிப்பாய்வாளரும் தங்களது அனுபவத்தின் அடிப்படையில் தனிப்பட்டவர். இது பல்வேறு பார்வைகளால் வடிகட்டி இருக்கும், மருந்து முன் தங்கிய ஹோட்டல், பயண தொலைவு மற்றும் அவர்களின் தனிப்பட்ட மனநிலை போன்றவை. அதன் தேசியத்துவம் மதிப்பெண் காரணமென்று நினைப்பது இங்கே நியாயப்படுத்துவது கடினம்.
##### எடுத்துக்காட்டு
| சராசரி மதிப்பெண் | மொத்த மதிப்பாய்வுகளின் எண்ணிக்கை | மதிப்பாய்வாளர் மதிப்பெண் | எதிர்மறை <br />மதிப்பாய்வு | நேர்மறை மதிப்பாய்வு | டேக்கள் |
| -------------- | ---------------------- | ---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------- |
| 7.8 | 1945 | 2.5 | இது அவருக்கு ஹோட்டல் இல்லை, ஆனால் கட்டுமான தளம் தான். காலை முதல் முழு நாள் ஒலி தொடர்பான அசுத்தத்தில் நான் துயரப்பட்டேன். மக்கள் அருகில் ஜாக்ஹாமர்கள் கொண்டு வேலை செய்தனர். அறையிலிருந்து மாற்றிக்கொள்ள கேட்டேன், அமைதியான அறை கிடைக்கவில்லை. மேலும் அதிக கட்டணம் வசூலிக்கப்பட்டது. சந்தியா புறப்பட்ட போது சரியான பில் கிடைத்தது. ஆனால் பிறகு ஹோட்டல் அனுமதி இல்லாமல் கூடுதல் கட்டணம் வசூலித்து கொண்டது. இது மோசமான இடம். இங்கே பதிவு செய்யும் முன் நினைக்கவும் | எதுவும் இல்லை மோசமான இடம் அருகே சென்று விடுங்கள் | வணிக பயணம் ஜோடி ஸ்டாண்டர்டு இரட்டையர் அறை 2 இரவுகள் தங்கினர் |
போலவே, இந்த விருந்தினர் ஹோட்டலில் சந்தோஷமாக தங்கவில்லை. ஹோட்டல் சராசரி மதிப்பெண் 7.8 மற்றும் 1945 மதிப்பாய்வுகள் இருந்தாலும், இந்த மதிப்பாய்வாளர் 2.5 மதிப்பெண் கொடுத்தார் மற்றும் 115 வார்த்தைகள் கொண்டு எதிர்மறை அனுபவத்தை விவரித்தார். அவர்கள் நேர்மறை மதிப்பாய்வு அளவுக் கல்லில் எதுவும் எழுதவில்லை என்றால், நேர்மறை இல்லை என்று எண்ணலாம். ஆனால் 7 வார்த்தைகளில் எச்சரிக்கை எழுதுவார். வார்த்தைகளின் பொருள் அல்லது உணர்வு பாராமல் எண்ணினால், மதிப்பாய்வாளரின் நோக்கத்தை தவறாக புரிந்துகொள்ளலாம். 2.5 என்பதெல்லாம் குழப்பமாக இருக்கிறது, ஏனெனில், இந்த ஹோட்டல் தங்கல் மிகவும் மோசமாக இருந்தால் ஏன் மதிப்பெண் கொடுத்தார்? தரவுத்தொகுப்பை ஆராயும் போது குறைந்தபட்ச மதிப்பெண் 2.5 என்றே இருக்கின்றது, 0 அல்ல. அதிகபட்ச மதிப்பெண் 10 ஆகும்.
##### டேக்கள்
மேல் கூறியதுபோல், முதலில் `Tags` பயன்படுத்தி தரவை வகைப்படுத்துவது நியாயமாக தெரிகிறதா. ஆனால் இவை ஒரே மாதிரியானவை அல்ல என்றும் அதனால் ஒரு ஹோட்டலில் *Single room*, *Twin room*, *Double room* என்ற டேக்கள் இருந்தாலும் அடுத்த ஹோட்டலில் அவை *Deluxe Single Room*, *Classic Queen Room*, *Executive King Room* என்று இருக்கும். இதனால பல விதமான வகைகள் கூடும்.
1. அனைத்து சொற்களையும் ஒரே நிலைக்கு மாற்ற முயற்சிப்பது, இது மிகவும் கடினம். ஏனெனில் ஒவ்வொரு வேறுபாடு பாதையும் தெளிவாக இல்லை (உதா: *Classic single room* என்பது *Single room* ஆகும், ஆனால் *Superior Queen Room with Courtyard Garden or City View* ஐ சரியாக மாற்றுவது கடினம்)
1. ஒரு NLP முறையைப் பயன்படுத்தி *Solo*, *Business Traveller*, அல்லது *Family with young kids* போன்ற சொற்களின் மீள்தொடர்ந்ததைக் கணக்கிட்டு ஒவ்வொரு ஹோட்டலுக்கு பொருந்தும் பின்பு பரிந்துரையில் பங்கு சேர்க்கலாம்
டேக்கள் பொதுவாக (ஆனால் எப்போதும் அல்ல) ஒரு 필்டில் இருந்து 5-6 comma பிரிக்கப்பட்ட மதிப்புகளாக இருக்கும்; இது *பயண வகை*, *விருந்தினர் வகை*, *அறை வகை*, *தங்கிய நாட்கள்* மற்றும் *மதிப்பாய்வு சமர்ப்பிக்கப்பட்ட சாதனம்* என்ற வரிசைப்படி இருக்கும். ஆனால் சில மதிப்பாய்வாளர்கள் ஒவ்வொரு நெடுவரிசையையும் நிரப்பவில்லை என்பதால் மதிப்புகள் இடையில் தவறுகள் இருப்பது சாதாரணம்.
எடுத்துக்காட்டாக, *Type of group* என்ற நெடுவரிசையில் 1025 தனித்துவமான விருப்பங்கள் உள்ளன, ஆனால் சில அவை குடும்பத்தை குறிக்காது; சில அறை வகையாகவும் இருக்கும். குடும்பத்தை குறிப்பிடும் வார்த்தைகளை மட்டும் பார்த்தால் *Family room* போன்ற பல மதிப்புகள் வரலாம். *with* சொற்களை மட்டும் எண்ணினால், 80,000 க்கும் மேற்பட்ட பதிவுகளில் "Family with young children" அல்லது "Family with older children" போன்ற வார்த்தைகள் இருப்பதை காணலாம்.
இதன் பொருள், டேக்கள் நெடுவரிசை முழுமையாக பயனற்றது அல்ல, ஆனால் இதைப் பயனுள்ளதாக மாற்ற சில பணிகள் செய்ய வேண்டியிருக்கும்.
##### சராசரி ஹோட்டல் மதிப்பெண்
இந்த தரவுத்தொகுப்பில் அசாதாரணங்கள் அல்லது முரண்பாடுகள் உள்ளன, எனது புரிதலைவிட அசுத்தமாகும், ஆனால் இது உங்களுக்கு அவற்றைப் பற்றி விழிப்புணர்வு தரும். இதுபற்றி நீங்கள் கண்டுபிடித்தால், தயவுசெய்து பேசும் பிரிவில் பகிரவும்!
சராசரி மதிப்பெண் மற்றும் மதிப்பாய்வுகளின் எண்ணிக்கையை குறிக்கும் நெடுவரிசைகள் இவையே:
1. Hotel_Name
2. Additional_Number_of_Scoring
3. Average_Score
4. Total_Number_of_Reviews
5. Reviewer_Score
இந்த தரவுத்தொகுப்பில் மிக அதிக மதிப்பாய்வுகளுடன் உள்ள ஹோட்டல் *Britannia International Hotel Canary Wharf* ஆகும், அதில் 4789 மதிப்பாய்வுகள் உள்ளன. ஆனால் இதன் `Total_Number_of_Reviews` மதிப்பு 9086 ஆகும். இது மதிப்பாய்வு இல்லா பல மதிப்பெண்கள் உள்ளன என்று குறிக்கலாம். கூடுதலாக, `Additional_Number_of_Scoring` மதிப்பு 2682 ஆகும். இதையும் சேர்த்தால் 4747+2682=7471 ஆகும், இது `Total_Number_of_Reviews` 9086 க்கு 1615 குறைவாகும்.
`Average_Score` நெடுவரிசையைப் பார்க்கும் போது, இது தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வுகளின் சராசரி என நினைக்கலாம், ஆனால் Kaggle சொல்கிறது "*கடந்த ஆண்டு புதிய கருத்தின் அடிப்படையில் கணக்கிடப்பட்ட ஹோட்டலின் சராசரி மதிப்பெண்*". இது பயனுள்ளதில்லை போல. நாங்கள் தரவுத்தொகுப்பில் உள்ள மதிப்பாய்வு மதிப்பெண்களின் சராசரி மதிப்பை கணக்கிடலாம். அதே ஹோட்டலை எடுத்துக்கொண்டால், சராசரி மதிப்பெண் 7.1 ஆக உள்ளது, ஆனால் எங்கள் கணக்கீடு (தரவுத்தொகுப்பை உள்ள Reviewer_Score சராசரி) 6.8 ஆகும். இது நெருக்கமாக இருந்தாலும், ஓர் வேறுபாடு உள்ளது. `Additional_Number_of_Scoring` மதிப்புகளில் உள்ள மதிப்பெண்கள் சராசரியை 7.1க்குச் சென்று மேம்படுத்தியதாக நினைக்கலாம். ஒரு சோதனைக்கோ அல்லது சான்று இல்லாததால், `Average_Score`, `Additional_Number_of_Scoring` மற்றும் `Total_Number_of_Reviews` ஆகியவற்றைப் பயன்படுத்துவது அல்லது நம்புவது கடினம், ஏனெனில் அவை எங்களிடம் இல்லாத தரவின் அடிப்படையிலேயே இருக்கலாம்.
மேலும் குழப்பமாக, இரண்டாம் அதிக மதிப்பாய்வுகளின் ஹோட்டல் கணக்கிடப்பட்ட சராசரி மதிப்பெண் 8.12 ஆகும், தரவுத்தொகுப்பு Average_Score 8.1 ஆகும். இது உண்மையான மதிப்பெண் எதிர்யோ அல்லது முதல் ஹோட்டல் முரண்பாடா?
இந்த ஹோட்டல் ஒரு வித்தியாசமானிருக்கக்கூடும் என்ற சாத்தியக்கூறில், மேலும் ஒருபகுதி மதிப்புகள் சரியாக பொருந்தக்கூடும் (ஆனால் ஏதோ காரணத்திற்காக சில பொருந்தாது) என, நம்முடைய தரவுத்தொகுப்பில் உள்ள மதிப்புகளை ஆராயவும் மதிப்புகளின் சரியான பயன்பாட்டை (அல்லது பயன்பாடு இல்லை) தீர்மானிக்கவும் ஒரு சின்ன திட்டம் எழுதப்போறோம்.
> 🚨 எச்சரிக்கை குறிப்பு
>
> இந்த தரவுத்தொகுப்புடன் வேலை செய்யும் போது, நீங்கள் உரையைக் கைக் கணக்கிடும் பொருளை கணக்கிடும் கோ드를 எழுதுவீர்கள், உரையை நீங்கள் நேரடியாக வாசிக்கவோ ஆய்வுசெய்யவோ வேண்டாம். இது NLPயின் சாராம்சம், மனிதர் செய்ய வேண்டாமலே அர்த்தம் அல்லது உணர்வை பகுப்பாய்வு செய்வது. இருப்பினும், சில நேரங்களில் நீங்கள் சில எதிர்மறை மதிப்புரைகளை வாசிக்க நேரலாம். வாசிக்க வேண்டாம் என்று நான் அறிவுறுத்துகிறேன், ஏனெனில் அவசியமில்லை. அதில் சில அவமானமடையக்கூடியவைகள், அல்லது தொடர்பில்லாத எதிர்மறை ஹோட்டல் மதிப்புரைகள், உதாரணமாக "வானிலை சிறந்ததல்ல" என்பதுபோன்றவை உள்ளன, ஹோட்டலின் கட்டுப்பாட்டுக்குபரி அப்போதுமில்லை. ஆனால் சில மதிப்புரைகளுக்கு ஒரு மோசமான பக்கம் உண்டு. சில நேரங்களில் எதிர்மறை மதிப்புரைகள் இனவெறிப்படையானவையா, பாலின மாதிரியானவையா அல்லது வயதுபெற்றவர்களுக்கானவை ஆவாக இருக்கக் கூடும். இது துரதிர்ஷ்டமானது, ஆனால் பொதுவான இணையதளத்தில் இருந்து சேகரிக்கப்பட்ட தரவுகளுக்கு இது எதிர்பார்க்கத்தக்கது. சில மதிப்புரையாளர்கள் அவமானமளிக்கக்கூடிய, அசௌகரியமான அல்லது மனநிறைக்கும் மதிப்புரைகளை விடுகின்றனர். அவைகளை நீங்கள் நேரடியாக வாசித்து மனம் காய்ச்சிக்கொள்ளாமல், அந்த உணர்வை அளவிடவும் கோடிங் செய்வதும் சிறந்தது. அதாவது, அப்படி எழுதுவோர் ஒரு சிறிய மரபில் மட்டுமே உள்ளனர், ஆனால் இருந்தே இருக்கின்றனர்.
## பயிற்சி - தரவு ஆராய்ச்சி
### தரவை ஏற்றுகொள்
தரவை கண்விடிப்பில் பார்த்துவிட்டு போதுமானது, இப்போது நீங்கள் சில கோடுகளை எழுதிவிட்டு பதில்களைக் கண்டறியப் போகிறீர்கள்! இந்தப் பகுதி pandas நூலகத்தை பயன்படுத்துகிறது. உங்கள் முதல் பணியாக CSV தரவை ஏற்றிக்கொள்ளுதல் மற்றும் வாசிப்பதை உறுதி செய்ய வேண்டும். pandas நூலகம் விரைவாக CSVஐ ஏற்றுகிறது, முடிவை ஒரு dataframe இல் வைக்கிறது, முந்தைய பாடங்களுபோல். நம்மால் ஏற்றுக்கொண்ட CSV வாழ்க்கையில் அரை மில்லியன் கட்டங்கள் (rows) மற்றும் 17 த полкоர்கள் (columns) இருக்கின்றன. pandas தான் data frame ஐ திறம்பட செயலாற்ற பல வழிகளை தருகிறது, அதில் ஒவ்வொரு வரியிலும் விதிகள் செய்யும் திறன் உண்டு.
இப்பாடத்தில் இதற்கு பிறகு சில குறியீட்டு துணுக்குகள், சிலவுரைகள் மற்றும் முடிவுகளின் விளக்கங்கள் இருக்கும். உங்கள் குறியீட்டிற்கு இணைக்கப்பட்ட _notebook.ipynb_ஐ பயன்படுத்தவும்.
நீங்கள் பயன்படுத்தப்போகும் தரவு கோப்பை ஏற்றுவதை ஆரம்பிப்போம்:
```python
# CSV இலிருந்து ஹோட்டல் விமர்சனங்களை ஏற்றவும்
import pandas as pd
import time
# கோப்பு ஏற்றும் நேரத்தை கணக்கிட தொடக்க மற்றும் முடிவு நேரத்தை பயன்படுத்துவதற்காக நேரத்தை இறக்குமதி செய்தல்
print("Loading data file now, this could take a while depending on file size")
start = time.time()
# df என்பது 'DataFrame' - கோப்பை டேட்டா கோப்புறையில் நீங்கள் பதிவிறக்கம் செய்திருக்கிறீர்கள் என்பதை உறுதிப்படுத்துக
df = pd.read_csv('../../data/Hotel_Reviews.csv')
end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")
```
இப்போது தரவு ஏற்றிக் கொண்டுவிட்டதால், அதில் சில செயல்பாடுகளை செய்யலாம். அடுத்த பகுதியின் உள்ளீட்டின் மேல் இந்தக் கோடுகளை வைக்கவும்.
## தரவை ஆராய்க
இந்நிலையில், தரவு ஏற்கனவே *தூய்மையாக* உள்ளது, அதாவது அதுடன் வேலை செய்ய தயாராக உள்ளது, மற்றும் ஏற்றுத்திறன் கொண்ட ஆல்கொரித்முகள் எதிர்பார்க்கும் ஆங்கில எழுத்துகளுக்கு மட்டுமே உள்ள தொந்தர்களைக் கொண்டிருக்கவில்லை.
✅ சில நேரங்களில் நீங்கள் NLP நுட்பங்களைப் பயன்படுத்துவதற்கு முன் தரவை வடிவமைக்க முன் சுழற்று வேலை செய்ய வேண்டி வாய்ப்பு இருக்கலாம், ஆனால் இப்போதும் இல்லை. நீங்கள் செய்ய வேண்டுமானால், ஆங்கிலங்களால் அல்லாத எழுத்துக்களை எப்படி கையாள்வீர்கள்?
ஒரு நிமிடம் எடுத்து, தரவை ஏற்றிவிட்டு நாம் அந்த தரவை குறியீடு மூலம் ஆராய முடியும் என்று உறுதி செய்யுங்கள். நீங்கள் அசல் கவனம் செலுத்தி ஆளுடைய நிலை அமைதியற்று `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளில் இருப்பதைக் கவனிக்கலாம். அவை உங்கள் NLP ஆல்கொரிதங்களுக்குப் இயற்கை உரைகளை கொண்டுள்ளன. ஆனால் காத்திருங்கள்! NLP மற்றும் உணர்வு பொருள்மொழியில் இறங்குவதற்கு முன்பு, கீழுள்ளக் கோடுகளை பின்பற்று, தரவுத்தொகுப்பில் உள்ள மதிப்புகள் pandas மூலம் நீங்கள் கணக்கிடும் மதிப்புகளுடன் பொருந்துகிறதா என்று உறுதி செய்யுங்கள்.
## Dataframe செயல்பாடுகள்
இப்பாடத்தின் முதல் பணி தேதி அட்டவணையை மாற்றாமல் பார்ப்பதற்கான கோடுகளை எழுதுவதன் மூலம் கீழ்க்காணும் உறுதிப்படுத்தல்கள் சரியானதா என்பதை பரிசோதிப்பது ஆகும்.
> பல நிரல் பணிகளிற்கு போல், இதற்கு பல வழிகள் உள்ளன, ஆனால் நல்ல ஆலோசனை எளிய மற்றும் புரிந்து கொள்ள எளிதான முறையை எடுத்துக் கொள்வதாகும், குறிப்பாக நீங்கள் எதிர்காலத்தில் இந்தக் குறியீட்டை மீண்டும் பார்க்கும்போது. Dataframe க்கான நிறைய விரிவான APIகள் உள்ளன, அவை உங்கள் தேவைக்கு திறம்பட செயல்படும் வழியை தரும்.
கீழ்க்காணும் கேள்விகளை குறியீட்டு பணிகளாக கருதி, தீர்வை பாராமல் சமாதானம் செய்வதற்கு முயற்சி செய்யுங்கள்.
1. நீங்கள் இப்போது ஏற்றிய data frame இன் *shape*ஐ (வரிசைகளும் பாதிகளும்) அச்சிடுக.
2. மதிப்புரையாளர்களின் தேசியத்தன்மைகளுக்கான அடிக்கடி எண்ணிக்கையை கணக்கிடுக:
1. `Reviewer_Nationality` நெடுவரியில் எந்தெந்த தனித்துவமான மதிப்புகள் இருக்கின்றன மற்றும் அவை எத்தனை?
2. தரவுத்தொகுப்பில் அதிகபட்சமாக இருக்கும் மதிப்புரையாளர் தேசியத்தன்மை எது (நாட்டு பெயர் மற்றும் மதிப்புரை எண்ணிக்கையை அச்சிடுக)?
3. அடுத்த 10 அதிக அங்கீகாரம் பெறும் தேசியங்கள் மற்றும் அவற்றின் எண்ணிக்கை என்ன?
3. மேலே கூறிய முன் 10 அதிக மதிப்புரையாளர்கள் நாடுகளுக்கான அதிக மதிப்புரைகள் பெற்ற ஹோட்டல்கள் எவை?
4. ஹோட்டல் வெவ்வேறு மதிப்புரைகளுக்கு எத்தனை மதிப்புரை இருக்கின்றன (ஹோட்டல் அடிப்படையில் எண்ணிக்கை)?
5. `Average_Score` என்ற ஒவ்வொரு ஹோட்டலுக்கும் ஒரு நெடுவரிசை இருந்தாலும், நீங்கள் ஒவ்வொரு ஹோட்டலுக்கும் அனைத்து மதிப்புரையாளர்களிடமிருந்து கிடைக்கும் சராசரி மதிப்பை கண்டறியலாம். உங்கள் dataframe இல் `Calc_Average_Score` என்ற புதிய நெடுவரிசையைக் கூட்டி அதில் கணக்கிடப்பட்ட சராசரியை நிரப்பவும்.
6. எந்த ஹோட்டல்களுக்காவது (1 தசம இடம் வரை சுற்றிய முடிவில்) `Average_Score` மற்றும் `Calc_Average_Score` மதிப்புகள் ஒரே மாதிரி உள்ளனவா?
1. ஒரு பைத்தான் செயல்பாட்டை எழுத முயற்சி செய்யுங்கள், அது ஒரு Series (வரிசை) ஆவணமாக எடுத்துக்கொண்டு மதிப்புகளை ஒப்பிட்டு, மதிப்புகள் இணைவதில்லையான போது ஒரு செய்தியை அச்சிடும். பின்னர் `.apply()` முறையை பயன்படுத்தி எல்லா வரிகளையும் செயலாக்கவும்.
7. `Negative_Review` நெடுவரிசையின் மதிப்புகள் "No Negative" என்ற உள்ளவற்றின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக
8. `Positive_Review` நெடுவரிசையின் மதிப்புகள் "No Positive" என்ற உள்ளவற்றின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக
9. `Positive_Review` நெடுவரியில் "No Positive" மற்றும் `Negative_Review` நெடுவரியில் "No Negative" ஆகிய இரண்டையும் கொண்டுள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக
### கோட் பதில்கள்
1. நீங்கள் எடுத்து ஏற்றிய data frame இன் *shape*ஐ அச்சிடுக (வரிசைகள் மற்றும் காலமுறைகள் எத்தனை)
```python
print("The shape of the data (rows, cols) is " + str(df.shape))
> The shape of the data (rows, cols) is (515738, 17)
```
2. மதிப்புரையாளர்களின் தேசியத்தன்மைகளுக்கான அடிக்கடி எண்ணிக்கையை கணக்கிடுக:
1. `Reviewer_Nationality` நெடுவரியில் எந்தெந்த தனித்துவமான மதிப்புகள் உள்ளன, அவை எத்தனை?
2. தரவுத்தொகுப்பில் அதிகபட்சமாக இருக்கும் மதிப்புரையாளர்கள் தேசியத்தன்மை எது (நாடு மற்றும் மதிப்புரைகள் எண்ணிக்கை அச்சிடுக)?
```python
# value_counts() ஒரு கோட் பொருள் உருவாக்குகிறது, இதில் இந்தக் கோயில் index மற்றும் மதிப்புகள் உள்ளன, நாட்டும் அவர்கள் விமர்சகர் தேசியத்திலுள்ள நிகழ்ச்சி எண் ஆகும்
nationality_freq = df["Reviewer_Nationality"].value_counts()
print("There are " + str(nationality_freq.size) + " different nationalities")
# Series இன் முதல் மற்றும் கடைசி வரிகளை அச்சிடுங்கள். அனைத்து தரவையும் அச்சிட nationality_freq.to_string() என மாற்றவும்
print(nationality_freq)
There are 227 different nationalities
United Kingdom 245246
United States of America 35437
Australia 21686
Ireland 14827
United Arab Emirates 10235
...
Comoros 1
Palau 1
Northern Mariana Islands 1
Cape Verde 1
Guinea 1
Name: Reviewer_Nationality, Length: 227, dtype: int64
```
3. அடுத்த 10 அதிகமாக கண்ட NATIONALITIES மற்றும் அவற்றின் அடிக்கடி எண்ணிக்கை எவை?
```python
print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
# மதிப்புகளில் முன்னிலையில் ஒரு இடைவெளி உள்ளது, அதை அச்சிட strip() அகற்றுகிறது
# மிக பொதுவான 10 தேசியங்களை மற்றும் அவற்றின் நிகழ்ச்சிகளை என்ன?
print("The next 10 highest frequency reviewer nationalities are:")
print(nationality_freq[1:11].to_string())
The highest frequency reviewer nationality is United Kingdom with 245246 reviews.
The next 10 highest frequency reviewer nationalities are:
United States of America 35437
Australia 21686
Ireland 14827
United Arab Emirates 10235
Saudi Arabia 8951
Netherlands 8772
Switzerland 8678
Germany 7941
Canada 7894
France 7296
```
3. மேலே கூறப்பட்ட 10 அதிக மதிப்புரையாளர்கள் நாட்டுக்களுக்கு அதிக மதிப்புரைகள் பெற்ற ஹோட்டல்கள் எவை?
```python
# மேல்நாட்டு 10 முக்கிய மனையியல் கொண்ட மக்கள் மிகவும் அடிக்கடி மதிப்பாய்வு செய்திருந்த ஹோட்டல் எது
# சாதாரணமாக pandas உடன் நீங்கள் ஒரு நேரடி மடக்கு தவிர்ப்பீர்கள், ஆனால் நகலெடுக்க ஒரு புதிய டேட்டாபிரேமை உருவாக்கி காண்பிக்க விரும்பினேன் (பெரிய அளவிலான தரவுகளுடன் இதைப் பயன்படுத்த வேண்டாம், ஏனெனில் இது மிகவும் மெதுவாக இருக்கலாம்)
for nat in nationality_freq[:10].index:
# முதலில், விதிப்பா்றலுடன் பொருந்தும் அனைத்து வரிகளையும் புதிய டேட்டாபிரேமில் எடுக்கவும்
nat_df = df[df["Reviewer_Nationality"] == nat]
# இப்போது ஹோட்டல் பயன்முறை எண்ணிக்கை பெறுக
freq = nat_df["Hotel_Name"].value_counts()
print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.")
The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews.
The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews.
The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews.
The most reviewed hotel for Ireland was Copthorne Tara Hotel London Kensington with 239 reviews.
The most reviewed hotel for United Arab Emirates was Millennium Hotel London Knightsbridge with 129 reviews.
The most reviewed hotel for Saudi Arabia was The Cumberland A Guoman Hotel with 142 reviews.
The most reviewed hotel for Netherlands was Jaz Amsterdam with 97 reviews.
The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews.
The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews.
The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
```
4. தரவுத்தொகுப்பில் ஹோட்டல்கள் வெவ்வேறு மதிப்புரைகளுக்குத் தோன்றும் எண்ணிக்கை எவ்வளவு?
```python
# பழையதின் அடிப்படையில் புதிய டேட்டாபிரேம் ஒன்றை முதலில் உருவாக்கி, தேவையற்ற காலங்களை அகற்றவும்
hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1)
# வரிசைகளை Hotel_Name மூலம் குழுவாக்கி, அவற்றை எண்ணி, முடிவை புதிய காலமான Total_Reviews_Found இல் வைக்கவும்
hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
# அனைத்து நகலான வரிசைகளையும் நீக்கவும்
hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"])
display(hotel_freq_df)
```
| Hotel_Name | Total_Number_of_Reviews | Total_Reviews_Found |
| :----------------------------------------: | :---------------------: | :-----------------: |
| Britannia International Hotel Canary Wharf | 9086 | 4789 |
| Park Plaza Westminster Bridge London | 12158 | 4169 |
| Copthorne Tara Hotel London Kensington | 7105 | 3578 |
| ... | ... | ... |
| Mercure Paris Porte d Orleans | 110 | 10 |
| Hotel Wagner | 135 | 10 |
| Hotel Gallitzinberg | 173 | 8 |
நீங்கள் கவனிப்பீர்கள், தரவுத்தொகுப்பில் எண்ணப்பட்ட முடிவுகள் `Total_Number_of_Reviews` மதிப்பிற்கு பொருந்தவில்லை. இந்த தரவுத்தொகுப்பில் அந்த மதிப்பு ஹோட்டலுக்கு கிடைத்த மதிப்புரைகளின் மொத்த எண் அல்லது சில கூடுதல் கணக்கின் காரணமாக இருக்கலாம். இந்த `Total_Number_of_Reviews` நம்முடைய மாதிரியில் பயன்படுத்தப்படவில்லை.
5. ஒவ்வொரு ஹோட்டலுக்கும் `Average_Score` எனும் நெடுவரிசைத் தரவுத்தொகுப்பில் இருந்தாலும், நீங்கள் ஹோட்டலுக்கு வரும் அனைத்து மதிப்புரையாளர்களின் மதிப்பைப் கொண்டு சராசரி மதிப்பைத் தொகுக்கலாம். உங்கள் dataframe இல் `Calc_Average_Score` எனும் புதிய நெடுவரிசையைச் சேர்க்கவும், அதில் கணக்கிடப்பட்ட சராசரி மதிப்பு இருக்கும். `Hotel_Name`, `Average_Score`, மற்றும் `Calc_Average_Score` என்று உள்ள நெடுவரிசைகளைப் பிரிண்ட் செய்யுங்கள்.
```python
# ஒரு வரியை எடுத்துக் கொண்டு அதனுடன் சில கணக்கீடுகளை செய்யும் ஒரு செயல்பாட்டை வரையறு
def get_difference_review_avg(row):
return row["Average_Score"] - row["Calc_Average_Score"]
# 'mean' என்பது 'சராசரி' என்பதற்கான கணித சொல்
df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)
# இரண்டு சராசரி மதிப்பெண்களுக்கிடையேயான வித்தியாசத்துடன் புதிய நெடுவரிசையைச் சேர்க்கவும்
df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1)
# Hotel_Name-ன் அனைத்து நகல் வரிசைகளும் இல்லாமல் ஒரு df உருவாக்கவும் (அதாவது ஒரு ஹோட்டலுக்கு ஒரு வரியாக)
review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
# குறைந்த மற்றும் அதிக சராசரி மதிப்பெண் வித்தியாசத்தை கண்டறிய dataframe-ஐ வரிசைப்படுத்தவும்
review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"])
display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
```
நீங்கள் கூடவே சந்தேகம் கொள்ளலாம், ஏன் `Average_Score` கோவைக்கு கணக்கிடப்பட்ட சராசரி மதிப்புடன் நேர்கொண்ட வேறுபாடுகள் இருப்பது என்று. சில மதிப்புகள் ஒத்துள்ளது, சில வேறுபாடு உள்ளது என்பதற்கு காரணம் தெரியாது, எனவே இந்த நிலைமையில் நம்மால் கொண்டுள்ள மதிப்புரைகளை வைத்து சராசரி மதிப்பைத் துணை கணக்கிடுவது சிறந்தது. பொதுவாக வேறுபாடுகள் மிகச் சின்னவையாக இருப்பதால், இங்கே தரவுத்தொகுப்பின் சராசரி மற்றும் கணக்கிடப்பட்ட சராசரிக்கு மிக உயர்ந்த வேறுபாடு உள்ள ஹோட்டல்கள்:
| Average_Score_Difference | Average_Score | Calc_Average_Score | Hotel_Name |
| :----------------------: | :-----------: | :----------------: | ------------------------------------------: |
| -0.8 | 7.7 | 8.5 | Best Western Hotel Astoria |
| -0.7 | 8.8 | 9.5 | Hotel Stendhal Place Vend me Paris MGallery |
| -0.7 | 7.5 | 8.2 | Mercure Paris Porte d Orleans |
| -0.7 | 7.9 | 8.6 | Renaissance Paris Vendome Hotel |
| -0.5 | 7.0 | 7.5 | Hotel Royal Elys es |
| ... | ... | ... | ... |
| 0.7 | 7.5 | 6.8 | Mercure Paris Op ra Faubourg Montmartre |
| 0.8 | 7.1 | 6.3 | Holiday Inn Paris Montparnasse Pasteur |
| 0.9 | 6.8 | 5.9 | Villa Eugenie |
| 0.9 | 8.6 | 7.7 | MARQUIS Faubourg St Honor Relais Ch teaux |
| 1.3 | 7.2 | 5.9 | Kube Hotel Ice Bar |
1 ஐ விட அதிக வேறுபாடு கொண்ட ஹோட்டல் ஒன்று மட்டுமே இருப்பதால், வேறுபாடுகளை புறக்கணித்து கணக்கிடப்பட்ட சராசரி மதிப்பைப் பயன்படுத்தலாம் என்று அர்த்தம்.
6. `Negative_Review` நெடுவரியின் மதிப்புகள் "No Negative" என உள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக
7. `Positive_Review` நெடுவரியின் மதிப்புகள் "No Positive" என உள்ள வரிசைகளின் எண்ணிக்கையை கணக்கிட்டு அச்சிடுக
8. `Positive_Review` மதிப்பீடு "No Positive" மற்றும் `Negative_Review` மதிப்பீடு "No Negative" குறிக்கும் வரிசைகள் எத்தனை என்பதையும் கணக்கிட்டு அச்சிடுக
```python
# லம்ப்டாக்களுடன்:
start = time.time()
no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1)
print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index)))
no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1)
print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index)))
both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1)
print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index)))
end = time.time()
print("Lambdas took " + str(round(end - start, 2)) + " seconds")
Number of No Negative reviews: 127890
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Lambdas took 9.64 seconds
```
## வேறொரு வழி
Lambdaகள் இல்லாமல் பொருட்களை எண்ணும் வேறொரு வழியும், வரிசைகளை எண்ண sum பயன்படுத்தவும்:
```python
# லாம்ப்டாக்கள் இல்லாமல் (இரண்டையும் பயன்படுத்த கூடுமென்பதை காண்பிக்க குறியீட்டுகளின் கலவை)
start = time.time()
no_negative_reviews = sum(df.Negative_Review == "No Negative")
print("Number of No Negative reviews: " + str(no_negative_reviews))
no_positive_reviews = sum(df["Positive_Review"] == "No Positive")
print("Number of No Positive reviews: " + str(no_positive_reviews))
both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive"))
print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews))
end = time.time()
print("Sum took " + str(round(end - start, 2)) + " seconds")
Number of No Negative reviews: 127890
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Sum took 0.19 seconds
```
நீங்கள் கவனித்திருப்பீர்கள், `Negative_Review` மற்றும் `Positive_Review` நெடுவரிசைகளில் "No Negative" மற்றும் "No Positive" என்ற இரண்டு மதிப்புக்களையும் கொண்ட 127 வரிசைகள் உள்ளன. இதன் அர்த்தம், மதிப்புரையாளர் ஹோட்டலுக்கு எண்ணிக்கை மதிப்பெண்ணை அளித்திருந்தாலும், நல்லது அல்லது கெட்டது என்று மதிப்புரை வழங்க மறுத்துள்ளார். அதிர்ஷ்டவசமாக, இது மிகவும் குறைந்த வரிசைகள் மட்டுமே (இது 515738 இல் 127, அல்லது 0.02%), எனவே இது நமது மாதிரியை பக்குவமாக மாற்றாது, ஆனால் மதிப்புரைகளுக்கு மதிப்புரைகள் இல்லாத வரிசைகள் இருக்கலாம் என்று அறிந்து கொள்ள அது ஆராய்ந்தது நல்லது.
இப்போது நீங்கள் தரவுத்தொகுப்பை ஆராய்ந்துவிட்டீர்கள், அடுத்த பாடத்தில் தரவை வடிகட்டி, சில உணர்வு பகுப்பாய்வைச் சேர்க்கப்போறோம்.
---
## 🚀 சவால்
இந்தப் பாடம் முந்தைய பாடங்களில் பார்த்தபடி, தரவு மற்றும் அதன் தனித்தன்மைகளை செயல்படுத்துவதற்கு முன் புரிந்து கொள்வது எவ்வளவு முக்கியம் என்பதை வெளிப்படுத்துகிறது. உரைப் பெற்ற தரவுகளாக இருக்கும்போது சிறப்பாக கவனமாக அவற்றை ஆராயவும். மாறுபாடுகள் அல்லது வலுவான உணர்வுகளை மாதிரியில் கொண்டு வரக்கூடிய பகுதிகளை கண்டுபிடிக்க தகவல்களைத் தேடிக்கொள்ளுங்கள்.
## [பாடம் முடிவுக்குப் பின்னர் வினாக்கள்](https://ff-quizzes.netlify.app/en/ml/)
## மதிப்பாய்வு மற்றும் சுயபயிற்சி
உரை மற்றும் சொற்காட்சிகளுடனான மாதிரிகள் உருவாக்கும்போது முயற்சிக்க தேவையான கருவிகளை இந்த [NLP வெற்றியடையும் பாதையை](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc_id=academic-77952-leestott)ப் பயன்படுத்தி கண்டறியவும்.
## பணிகள்
[NLTK](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**மறுப்பு**:
இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->