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/te/6-NLP/2-Tasks/README.md

221 lines
25 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# సాధారణ సహజ భాషా ప్రాసెసింగ్ పనులు మరియు సాంకేతికతలు
అధిక భాగం *సహజ భాషా ప్రాసెసింగ్* పనుల కోసం, ప్రాసెస్ చేయవలసిన టెక్స్ట్‌ను విభజించి, పరిశీలించి, ఫలితాలను నియమాలు మరియు డేటా సెట్‌లతో నిల్వ చేయాలి లేదా క్రాస్ రిఫరెన్స్ చేయాలి. ఈ పనులు, ప్రోగ్రామర్‌కు టెక్స్ట్‌లోని పదాలు మరియు పదబంధాల యొక్క _అర్థ_ లేదా _ఉద్దేశ్య_ లేదా కేవలం _సాద్రత_ ను పొందడానికి సహాయపడతాయి.
## [పూర్వ-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
టెక్స్ట్ ప్రాసెసింగ్‌లో ఉపయోగించే సాధారణ సాంకేతికతలను తెలుసుకుందాం. మెషీన్ లెర్నింగ్‌తో కలిపితే, ఈ సాంకేతికతలు పెద్ద మొత్తంలో టెక్స్ట్‌ను సమర్థవంతంగా విశ్లేషించడంలో సహాయపడతాయి. అయితే, ఈ పనులకు ML వర్తింపజేయకముందు, NLP నిపుణుడు ఎదుర్కొనే సమస్యలను అర్థం చేసుకుందాం.
## NLPకి సాధారణమైన పనులు
మీరు పని చేస్తున్న టెక్స్ట్‌ను విశ్లేషించడానికి వివిధ మార్గాలు ఉన్నాయి. మీరు చేయగల పనులు ఉన్నాయి, మరియు ఈ పనుల ద్వారా మీరు టెక్స్ట్‌ను అర్థం చేసుకుని నిర్ణయాలు తీసుకోవచ్చు. మీరు సాధారణంగా ఈ పనులను ఒక క్రమంలో నిర్వహిస్తారు.
### టోకనైజేషన్
బహుశా చాలా NLP అల్గోరిథమ్స్ మొదట చేయవలసిన పని టెక్స్ట్‌ను టోకెన్స్ లేదా పదాలుగా విభజించడం. ఇది సులభంగా అనిపించినప్పటికీ, విరామ చిహ్నాలు మరియు వివిధ భాషల పదాలు, వాక్య విభజనలను పరిగణలోకి తీసుకోవడం కష్టంగా ఉంటుంది. మీరు విభజనలను నిర్ణయించడానికి వివిధ పద్ధతులు ఉపయోగించవలసి ఉంటుంది.
![tokenization](../../../../translated_images/te/tokenization.1641a160c66cd2d9.webp)
> **Pride and Prejudice** నుండి ఒక వాక్యాన్ని టోకనైజ్ చేయడం. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా
### ఎంబెడ్డింగ్స్
[పద ఎంబెడ్డింగ్స్](https://wikipedia.org/wiki/Word_embedding) అనేవి మీ టెక్స్ట్ డేటాను సంఖ్యలుగా మార్చే ఒక విధానం. ఎంబెడ్డింగ్స్ అలా చేయబడతాయి, అర్థం సమానమైన లేదా కలిసి ఉపయోగించే పదాలు సమీపంగా క్లస్టర్ అవుతాయి.
![word embeddings](../../../../translated_images/te/embedding.2cf8953c4b3101d1.webp)
> "నేను మీ నర్వ్స్‌కు అత్యంత గౌరవం కలిగి ఉన్నాను, అవి నా పాత స్నేహితులు." - **Pride and Prejudice** లో ఒక వాక్యానికి పద ఎంబెడ్డింగ్స్. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా
✅ పద ఎంబెడ్డింగ్స్‌తో ప్రయోగించడానికి [ఈ ఆసక్తికరమైన టూల్](https://projector.tensorflow.org/) ను ప్రయత్నించండి. ఒక పదాన్ని క్లిక్ చేస్తే సమానమైన పదాల క్లస్టర్లు చూపబడతాయి: 'toy' క్లస్టర్‌లో 'disney', 'lego', 'playstation', మరియు 'console' ఉన్నాయి.
### పార్సింగ్ & పార్ట్-ఆఫ్-స్పీచ్ ట్యాగింగ్
ప్రతి టోకనైజ్ చేసిన పదాన్ని భాగంగా ట్యాగ్ చేయవచ్చు - నామవాచకం, క్రియ, లేదా విశేషణం. వాక్యం `the quick red fox jumped over the lazy brown dog` లో fox = నామవాచకం, jumped = క్రియ అని POS ట్యాగ్ చేయవచ్చు.
![parsing](../../../../translated_images/te/parse.d0c5bbe1106eae8f.webp)
> **Pride and Prejudice** నుండి ఒక వాక్యాన్ని పార్స్ చేయడం. ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా
పార్సింగ్ అనేది వాక్యంలో ఏ పదాలు పరస్పరం సంబంధం ఉన్నాయో గుర్తించడం - ఉదాహరణకు `the quick red fox jumped` అనేది ఒక విశేషణ-నామవాచకం-క్రియ క్రమం, ఇది `lazy brown dog` క్రమం నుండి వేరుగా ఉంటుంది.
### పదాలు మరియు పదబంధాల సాంద్రతలు
పెద్ద టెక్స్ట్‌ను విశ్లేషించేటప్పుడు ఉపయోగకరమైన ప్రక్రియ ప్రతి పదం లేదా ఆసక్తి ఉన్న పదబంధం మరియు అవి ఎంతసార్లు కనిపిస్తాయో ఒక నిఘంటువు తయారు చేయడం. వాక్యం `the quick red fox jumped over the lazy brown dog` లో the పదానికి సాంద్రత 2.
పదాల సాంద్రతను లెక్కించే ఉదాహరణ టెక్స్ట్ చూద్దాం. రుడ్యార్డ్ కిప్లింగ్ కవిత "The Winners" లో ఈ కవితా శ్లోకం ఉంది:
```output
What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
```
పదబంధాల సాంద్రతలు అవసరమైతే కేస్ ఇన్సెన్సిటివ్ లేదా కేస్ సెన్సిటివ్ కావచ్చు, ఉదాహరణకు `a friend` కు సాంద్రత 2, `the` కు 6, మరియు `travels` కు 2.
### ఎన్-గ్రామ్స్
ఒక టెక్స్ట్‌ను ఒక నిర్దిష్ట పొడవు కలిగిన పదాల క్రమాలుగా విభజించవచ్చు, ఒక పదం (యూనిగ్రామ్), రెండు పదాలు (బిగ్రామ్), మూడు పదాలు (ట్రైగ్రామ్) లేదా ఏ సంఖ్యలో పదాలు (ఎన్-గ్రామ్స్).
ఉదాహరణకు `the quick red fox jumped over the lazy brown dog` ను ఎన్-గ్రామ్ స్కోర్ 2తో విభజిస్తే ఈ క్రింది ఎన్-గ్రామ్స్ వస్తాయి:
1. the quick
2. quick red
3. red fox
4. fox jumped
5. jumped over
6. over the
7. the lazy
8. lazy brown
9. brown dog
ఇది వాక్యం మీద స్లైడింగ్ బాక్స్ లాగా ఊహించవచ్చు. ఇక్కడ 3 పదాల ఎన్-గ్రామ్స్ కోసం, ప్రతి వాక్యంలో ఎన్-గ్రామ్ బోల్డ్‌లో ఉంది:
1. <u>**the quick red**</u> fox jumped over the lazy brown dog
2. the **<u>quick red fox</u>** jumped over the lazy brown dog
3. the quick **<u>red fox jumped</u>** over the lazy brown dog
4. the quick red **<u>fox jumped over</u>** the lazy brown dog
5. the quick red fox **<u>jumped over the</u>** lazy brown dog
6. the quick red fox jumped **<u>over the lazy</u>** brown dog
7. the quick red fox jumped over <u>**the lazy brown**</u> dog
8. the quick red fox jumped over the **<u>lazy brown dog</u>**
![n-grams sliding window](../../../../6-NLP/2-Tasks/images/n-grams.gif)
> ఎన్-గ్రామ్ విలువ 3: ఇన్ఫోగ్రాఫిక్ [Jen Looper](https://twitter.com/jenlooper) ద్వారా
### నామవాచక పదబంధం తీసివేత
చాలా వాక్యాలలో, ఒక నామవాచకం ఉంటుంది, అది వాక్యపు విషయం లేదా కర్మ. ఆంగ్లంలో, అది తరచుగా 'a' లేదా 'an' లేదా 'the' ముందు ఉండటం ద్వారా గుర్తించవచ్చు. వాక్య అర్థం అర్థం చేసుకోవడానికి 'నామవాచక పదబంధం తీసివేత' ఒక సాధారణ NLP పని.
✅ "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." వాక్యంలో నామవాచక పదబంధాలను గుర్తించగలరా?
వాక్యం `the quick red fox jumped over the lazy brown dog` లో 2 నామవాచక పదబంధాలు ఉన్నాయి: **quick red fox** మరియు **lazy brown dog**.
### భావ విశ్లేషణ
ఒక వాక్యం లేదా టెక్స్ట్ భావానికి విశ్లేషించవచ్చు, అది ఎంత *ధనాత్మక* లేదా *నెగటివ్* అనేది. భావం *పోలారిటీ* మరియు *వస్తునిష్ఠత/వ్యక్తిగతత* లో కొలవబడుతుంది. పోలారిటీ -1.0 నుండి 1.0 వరకు (నెగటివ్ నుండి పాజిటివ్) మరియు 0.0 నుండి 1.0 వరకు (అత్యంత వస్తునిష్ఠ నుండి అత్యంత వ్యక్తిగత) కొలవబడుతుంది.
✅ తర్వాత మీరు మెషీన్ లెర్నింగ్ ఉపయోగించి భావాన్ని నిర్ణయించే వివిధ మార్గాలు నేర్చుకుంటారు, కానీ ఒక మార్గం అంటే మానవ నిపుణుడు పాజిటివ్ లేదా నెగటివ్‌గా వర్గీకరించిన పదాలు మరియు పదబంధాల జాబితాను కలిగి ఉండటం మరియు ఆ మోడల్‌ను టెక్స్ట్‌పై వర్తింపజేసి పోలారిటీ స్కోర్ లెక్కించడం. కొన్ని సందర్భాల్లో ఇది ఎలా పనిచేస్తుందో, మరికొన్ని సందర్భాల్లో తక్కువగా ఎలా పనిచేస్తుందో మీరు చూడగలరా?
### రూపాంతరం
రూపాంతరం ద్వారా మీరు ఒక పదాన్ని singular లేదా plural రూపంలో పొందవచ్చు.
### లెమటైజేషన్
*లెమ్మా* అనేది పదాల సమూహానికి మూలం లేదా ప్రధాన పదం, ఉదాహరణకు *flew*, *flies*, *flying* కు క్రియ *fly* అనే లెమ్మా ఉంటుంది.
NLP పరిశోధకులకు ఉపయోగకరమైన డేటాబేస్‌లు కూడా ఉన్నాయి, ముఖ్యంగా:
### WordNet
[WordNet](https://wordnet.princeton.edu/) అనేది పదాలు, సమానార్థకాలు, విరుద్ధార్థకాలు మరియు అనేక ఇతర వివరాల డేటాబేస్, అనేక భాషలలో ప్రతి పదానికి. ఇది అనువాదాలు, స్పెల్ చెకర్లు లేదా ఏ రకమైన భాషా సాధనాలు తయారు చేయడంలో చాలా ఉపయోగకరం.
## NLP లైబ్రరీలు
సంతోషకరం, మీరు ఈ సాంకేతికతలన్నింటినీ స్వయంగా నిర్మించాల్సిన అవసరం లేదు, ఎందుకంటే సహజ భాషా ప్రాసెసింగ్ లేదా మెషీన్ లెర్నింగ్‌లో ప్రత్యేకత లేని డెవలపర్లకు చాలా సులభంగా ఉండే అద్భుతమైన Python లైబ్రరీలు అందుబాటులో ఉన్నాయి. తదుపరి పాఠాలలో వీటి మరిన్ని ఉదాహరణలు ఉంటాయి, కానీ ఇక్కడ మీరు తదుపరి పనికి సహాయపడే కొన్ని ఉపయోగకరమైన ఉదాహరణలను నేర్చుకుంటారు.
### వ్యాయామం - `TextBlob` లైబ్రరీ ఉపయోగించడం
ఈ రకమైన పనులను ఎదుర్కొనేందుకు సహాయపడే APIలు కలిగిన TextBlob అనే లైబ్రరీని ఉపయోగిద్దాం. TextBlob "పెద్ద [NLTK](https://nltk.org) మరియు [pattern](https://github.com/clips/pattern) పై ఆధారపడి, రెండింటితో బాగా పనిచేస్తుంది." దీని APIలో చాలా ML కూడా ఉంది.
> గమనిక: TextBlob కోసం ఒక ఉపయోగకరమైన [క్విక్ స్టార్ట్](https://textblob.readthedocs.io/en/dev/quickstart.html#quickstart) గైడ్ ఉంది, ఇది అనుభవజ్ఞులైన Python డెవలపర్లకు సిఫార్సు చేయబడింది
*నామవాచక పదబంధాలను* గుర్తించేటప్పుడు, TextBlob అనేక ఎక్స్‌ట్రాక్టర్ల ఎంపికలను అందిస్తుంది.
1. `ConllExtractor` ను పరిశీలించండి.
```python
from textblob import TextBlob
from textblob.np_extractors import ConllExtractor
# దిగుమతి చేసుకుని తర్వాత ఉపయోగించడానికి Conll ఎక్స్‌ట్రాక్టర్ సృష్టించండి
extractor = ConllExtractor()
# తర్వాత మీరు నామవాచక పదబంధ ఎక్స్‌ట్రాక్టర్ అవసరం ఉన్నప్పుడు:
user_input = input("> ")
user_input_blob = TextBlob(user_input, np_extractor=extractor) # డిఫాల్ట్ కాని ఎక్స్‌ట్రాక్టర్ పేర్కొనబడింది అని గమనించండి
np = user_input_blob.noun_phrases
```
> ఇక్కడ ఏమి జరుగుతోంది? [ConllExtractor](https://textblob.readthedocs.io/en/dev/api_reference.html?highlight=Conll#textblob.en.np_extractors.ConllExtractor) అనేది "ConLL-2000 శిక్షణ కార్పస్‌తో శిక్షణ పొందిన చంక్ పార్సింగ్ ఉపయోగించే నామవాచక పదబంధ ఎక్స్‌ట్రాక్టర్." ConLL-2000 అనేది 2000లో జరిగిన సహజ భాషా లెర్నింగ్ పై సదస్సు. ప్రతి సంవత్సరం ఈ సదస్సు ఒక క్లిష్టమైన NLP సమస్యను పరిష్కరించడానికి వర్క్‌షాప్ నిర్వహించేది, 2000లో అది నామ చంకింగ్. వాల్ స్ట్రీట్ జర్నల్‌పై శిక్షణ పొందిన మోడల్, "సెక్షన్లు 15-18 శిక్షణ డేటాగా (211727 టోకెన్స్) మరియు సెక్షన్ 20 పరీక్ష డేటాగా (47377 టోకెన్స్)" ఉపయోగించబడింది. మీరు ఉపయోగించిన విధానాలను [ఇక్కడ](https://www.clips.uantwerpen.be/conll2000/chunking/) మరియు ఫలితాలను [ఇక్కడ](https://ifarm.nl/erikt/research/np-chunking.html) చూడవచ్చు.
### సవాలు - NLPతో మీ బాట్‌ను మెరుగుపరచడం
మునుపటి పాఠంలో మీరు చాలా సులభమైన Q&A బాట్‌ను నిర్మించారు. ఇప్పుడు, మీరు మీ ఇన్‌పుట్‌ను భావ విశ్లేషణ కోసం విశ్లేషించి, భావానికి సరిపోయే ప్రతిస్పందనను ముద్రించి, మరింత అనుకూలంగా మారుస్తారు. మీరు `noun_phrase` ను గుర్తించి దాని గురించి మరిన్ని ఇన్‌పుట్ అడగాలి.
మంచి సంభాషణ బాట్‌ను నిర్మించే మీ దశలు:
1. బాట్‌తో ఎలా సంభాషించాలో వినియోగదారుని సూచనలు ముద్రించండి
2. లూప్ ప్రారంభించండి
1. వినియోగదారుని ఇన్‌పుట్ స్వీకరించండి
2. వినియోగదారు ఎగ్జిట్ అడిగితే, ఎగ్జిట్ అవ్వండి
3. వినియోగదారుని ఇన్‌పుట్‌ను ప్రాసెస్ చేసి సరైన భావ ప్రతిస్పందన నిర్ణయించండి
4. భావంలో noun phrase గుర్తించబడితే, దాన్ని బహువచనంలో మార్చి ఆ విషయం గురించి మరిన్ని ఇన్‌పుట్ అడగండి
5. ప్రతిస్పందన ముద్రించండి
3. దశ 2కి తిరిగి లూప్ చేయండి
TextBlob ఉపయోగించి భావాన్ని నిర్ణయించే కోడ్ స్నిపెట్ ఇక్కడ ఉంది. నాలుగు *గ్రేడియెంట్లు* మాత్రమే ఉన్నాయి (మీకు కావాలంటే మరిన్ని ఉండవచ్చు):
```python
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
```
మీకు మార్గదర్శకంగా కొన్ని నమూనా అవుట్పుట్ ఇక్కడ ఉన్నాయి (వినియోగదారుని ఇన్‌పుట్ > తో ప్రారంభమయ్యే లైన్లలో ఉంది):
```output
Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!
```
ఈ పనికి ఒక సాధ్యమైన పరిష్కారం [ఇక్కడ](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/2-Tasks/solution/bot.py) ఉంది
✅ జ్ఞాన పరీక్ష
1. అనుకూలమైన ప్రతిస్పందనలు బాట్ నిజంగా అర్థం చేసుకున్నట్లు ఎవరికైనా 'మోసం' చేయగలవా?
2. నామవాచక పదబంధం గుర్తించడం బాట్‌ను మరింత 'నమ్మదగినది' గా చేస్తుందా?
3. వాక్యం నుండి 'నామవాచక పదబంధం' తీసివేత చేయడం ఎందుకు ఉపయోగకరం?
---
మునుపటి జ్ఞాన పరీక్షలో బాట్‌ను అమలు చేసి మిత్రుడిపై పరీక్షించండి. అది వారిని మోసం చేయగలదా? మీరు మీ బాట్‌ను మరింత 'నమ్మదగినది' గా మార్చగలరా?
## 🚀సవాలు
మునుపటి జ్ఞాన పరీక్షలోని ఒక పనిని తీసుకుని దాన్ని అమలు చేయండి. బాట్‌ను మిత్రుడిపై పరీక్షించండి. అది వారిని మోసం చేయగలదా? మీరు మీ బాట్‌ను మరింత 'నమ్మదగినది' గా మార్చగలరా?
## [పోస్ట్-లెక్చర్ క్విజ్](https://ff-quizzes.netlify.app/en/ml/)
## సమీక్ష & స్వీయ అధ్యయనం
తదుపరి కొన్ని పాఠాలలో మీరు భావ విశ్లేషణ గురించి మరింత నేర్చుకుంటారు. ఈ ఆసక్తికర సాంకేతికతను [KDNuggets](https://www.kdnuggets.com/tag/nlp) వంటి వ్యాసాలలో పరిశోధించండి
## అసైన్‌మెంట్
[బాట్‌ను మాట్లాడించండి](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**అస్పష్టత**:
ఈ పత్రాన్ని AI అనువాద సేవ [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నించినప్పటికీ, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా తప్పిదాలు ఉండవచ్చు. మూల పత్రం దాని స్వదేశీ భాషలో అధికారిక మూలంగా పరిగణించాలి. ముఖ్యమైన సమాచారానికి, ప్రొఫెషనల్ మానవ అనువాదం సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో ఏర్పడిన ఏవైనా అపార్థాలు లేదా తప్పుదారితీసే అర్థాలు కోసం మేము బాధ్యత వహించము.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->