|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "6f4ba69d77f16c4a5110623a96a215c3",
|
|
|
"translation_date": "2025-08-27T00:03:49+00:00",
|
|
|
"source_file": "6-consumer/lessons/2-language-understanding/README.md",
|
|
|
"language_code": "ur"
|
|
|
}
|
|
|
-->
|
|
|
# زبان کو سمجھنا
|
|
|
|
|
|

|
|
|
|
|
|
> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
|
|
|
|
|
|
## لیکچر سے پہلے کا کوئز
|
|
|
|
|
|
[لیکچر سے پہلے کا کوئز](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/43)
|
|
|
|
|
|
## تعارف
|
|
|
|
|
|
پچھلے سبق میں آپ نے تقریر کو متن میں تبدیل کیا تھا۔ اگر آپ اس کو ایک سمارٹ ٹائمر پروگرام کرنے کے لیے استعمال کرنا چاہتے ہیں، تو آپ کے کوڈ کو یہ سمجھنا ہوگا کہ کیا کہا گیا ہے۔ آپ فرض کر سکتے ہیں کہ صارف ایک مقررہ جملہ بولے گا، جیسے "3 منٹ کا ٹائمر سیٹ کریں"، اور اس جملے کو تجزیہ کرکے معلوم کریں گے کہ ٹائمر کتنی دیر کے لیے ہونا چاہیے۔ لیکن یہ طریقہ صارف کے لیے زیادہ آسان نہیں ہے۔ اگر کوئی صارف کہے "3 منٹ کے لیے ٹائمر سیٹ کریں"، تو آپ یا میں سمجھ جائیں گے کہ اس کا مطلب کیا ہے، لیکن آپ کا کوڈ نہیں سمجھے گا کیونکہ وہ ایک مقررہ جملے کی توقع کر رہا ہوگا۔
|
|
|
|
|
|
یہاں زبان کو سمجھنے کی ضرورت پیش آتی ہے، جہاں AI ماڈلز متن کو سمجھ کر مطلوبہ تفصیلات فراہم کرتے ہیں۔ مثال کے طور پر، "3 منٹ کا ٹائمر سیٹ کریں" اور "3 منٹ کے لیے ٹائمر سیٹ کریں" دونوں کو سمجھنا کہ 3 منٹ کا ٹائمر درکار ہے۔
|
|
|
|
|
|
اس سبق میں آپ زبان کو سمجھنے والے ماڈلز کے بارے میں سیکھیں گے، انہیں کیسے بنانا، تربیت دینا، اور اپنے کوڈ میں استعمال کرنا۔
|
|
|
|
|
|
اس سبق میں ہم درج ذیل موضوعات کا احاطہ کریں گے:
|
|
|
|
|
|
* [زبان کو سمجھنا](../../../../../6-consumer/lessons/2-language-understanding)
|
|
|
* [زبان کو سمجھنے والا ماڈل بنائیں](../../../../../6-consumer/lessons/2-language-understanding)
|
|
|
* [ارادے اور ادارے](../../../../../6-consumer/lessons/2-language-understanding)
|
|
|
* [زبان کو سمجھنے والے ماڈل کا استعمال کریں](../../../../../6-consumer/lessons/2-language-understanding)
|
|
|
|
|
|
## زبان کو سمجھنا
|
|
|
|
|
|
انسان ہزاروں سالوں سے زبان کے ذریعے بات چیت کر رہے ہیں۔ ہم الفاظ، آوازوں، یا حرکات کے ذریعے بات چیت کرتے ہیں اور نہ صرف ان کے معنی بلکہ ان کے سیاق و سباق کو بھی سمجھتے ہیں۔ ہم خلوص اور طنز کو سمجھتے ہیں، جس سے ایک ہی الفاظ مختلف معنی دے سکتے ہیں، ہماری آواز کے لہجے پر منحصر۔
|
|
|
|
|
|
✅ حالیہ گفتگو کے بارے میں سوچیں جو آپ نے کی ہیں۔ ان میں سے کتنی گفتگو کمپیوٹر کے لیے سمجھنا مشکل ہوگی کیونکہ انہیں سیاق و سباق کی ضرورت ہے؟
|
|
|
|
|
|
زبان کو سمجھنا، جسے قدرتی زبان کو سمجھنا بھی کہا جاتا ہے، مصنوعی ذہانت کے ایک شعبے کا حصہ ہے جسے قدرتی زبان کی پروسیسنگ (NLP) کہا جاتا ہے۔ یہ پڑھنے کی سمجھ بوجھ سے متعلق ہے، یعنی الفاظ یا جملوں کی تفصیلات کو سمجھنا۔ اگر آپ نے Alexa یا Siri جیسے وائس اسسٹنٹ کا استعمال کیا ہے، تو آپ نے زبان کو سمجھنے والی خدمات استعمال کی ہیں۔ یہ وہ AI خدمات ہیں جو "Alexa، Taylor Swift کا تازہ ترین البم چلائیں" کو میری بیٹی کے پسندیدہ گانوں پر ناچنے میں تبدیل کرتی ہیں۔
|
|
|
|
|
|
> 💁 کمپیوٹر، اپنی تمام ترقی کے باوجود، متن کو واقعی سمجھنے میں ابھی بہت پیچھے ہیں۔ جب ہم کمپیوٹر کے ساتھ زبان کو سمجھنے کی بات کرتے ہیں، تو ہمارا مطلب انسانی بات چیت جیسا کچھ بھی نہیں ہوتا، بلکہ صرف کچھ الفاظ لے کر کلیدی تفصیلات نکالنا ہوتا ہے۔
|
|
|
|
|
|
انسان کے طور پر، ہم زبان کو بغیر سوچے سمجھے سمجھتے ہیں۔ اگر میں کسی دوسرے انسان سے کہوں "Taylor Swift کا تازہ ترین البم چلائیں"، تو وہ فوراً سمجھ جائے گا کہ میرا مطلب کیا ہے۔ کمپیوٹر کے لیے یہ مشکل ہے۔ اسے الفاظ کو، تقریر سے متن میں تبدیل کرکے، درج ذیل معلومات نکالنی ہوں گی:
|
|
|
|
|
|
* موسیقی چلانی ہے
|
|
|
* موسیقی Taylor Swift کی ہے
|
|
|
* مخصوص موسیقی ایک پورا البم ہے جس میں کئی ٹریک ہیں
|
|
|
* Taylor Swift کے کئی البم ہیں، لہذا انہیں ترتیب دینا ہوگا اور سب سے حالیہ شائع شدہ البم درکار ہے
|
|
|
|
|
|
✅ ان جملوں کے بارے میں سوچیں جو آپ نے درخواست کرتے وقت بولے ہیں، جیسے کافی کا آرڈر دینا یا کسی خاندان کے فرد سے کچھ پاس کرنے کو کہنا۔ ان جملوں کو ان معلومات میں تقسیم کرنے کی کوشش کریں جو کمپیوٹر کو جملہ سمجھنے کے لیے نکالنی ہوں گی۔
|
|
|
|
|
|
زبان کو سمجھنے والے ماڈلز AI ماڈلز ہیں جو زبان سے مخصوص تفصیلات نکالنے کے لیے تربیت یافتہ ہوتے ہیں، اور پھر مخصوص کاموں کے لیے تربیت دیے جاتے ہیں، جیسے آپ نے Custom Vision ماڈل کو تصاویر کے ایک چھوٹے سیٹ کے ساتھ تربیت دی تھی۔ آپ ایک ماڈل لے سکتے ہیں، پھر اسے اس متن کے ساتھ تربیت دے سکتے ہیں جسے آپ سمجھنا چاہتے ہیں۔
|
|
|
|
|
|
## زبان کو سمجھنے والا ماڈل بنائیں
|
|
|
|
|
|

|
|
|
|
|
|
آپ LUIS کا استعمال کرتے ہوئے زبان کو سمجھنے والے ماڈلز بنا سکتے ہیں، جو Microsoft کی Cognitive Services کا حصہ ہے۔
|
|
|
|
|
|
### کام - ایک مصنف کا وسیلہ بنائیں
|
|
|
|
|
|
LUIS استعمال کرنے کے لیے، آپ کو ایک مصنف کا وسیلہ بنانا ہوگا۔
|
|
|
|
|
|
1. اپنے `smart-timer` ریسورس گروپ میں مصنف کا وسیلہ بنانے کے لیے درج ذیل کمانڈ استعمال کریں:
|
|
|
|
|
|
```python
|
|
|
az cognitiveservices account create --name smart-timer-luis-authoring \
|
|
|
--resource-group smart-timer \
|
|
|
--kind LUIS.Authoring \
|
|
|
--sku F0 \
|
|
|
--yes \
|
|
|
--location <location>
|
|
|
```
|
|
|
|
|
|
`<location>` کو اس مقام سے تبدیل کریں جو آپ نے ریسورس گروپ بناتے وقت استعمال کیا تھا۔
|
|
|
|
|
|
> ⚠️ LUIS تمام علاقوں میں دستیاب نہیں ہے، لہذا اگر آپ کو درج ذیل خرابی ملے:
|
|
|
>
|
|
|
> ```output
|
|
|
> InvalidApiSetId: The account type 'LUIS.Authoring' is either invalid or unavailable in given region.
|
|
|
> ```
|
|
|
>
|
|
|
> تو ایک مختلف علاقہ منتخب کریں۔
|
|
|
|
|
|
یہ ایک مفت درجے کا LUIS مصنف کا وسیلہ بنائے گا۔
|
|
|
|
|
|
### کام - ایک زبان کو سمجھنے والی ایپ بنائیں
|
|
|
|
|
|
1. اپنے براؤزر میں [luis.ai](https://luis.ai?WT.mc_id=academic-17441-jabenn) پورٹل کھولیں، اور اسی اکاؤنٹ سے سائن ان کریں جو آپ Azure کے لیے استعمال کر رہے ہیں۔
|
|
|
|
|
|
1. ڈائیلاگ پر دی گئی ہدایات پر عمل کریں تاکہ اپنی Azure سبسکرپشن منتخب کریں، پھر وہ `smart-timer-luis-authoring` وسیلہ منتخب کریں جو آپ نے ابھی بنایا ہے۔
|
|
|
|
|
|
1. *Conversation apps* کی فہرست سے، **New app** بٹن منتخب کریں تاکہ ایک نئی ایپلیکیشن بنائی جا سکے۔ نئی ایپ کا نام `smart-timer` رکھیں، اور *Culture* کو اپنی زبان پر سیٹ کریں۔
|
|
|
|
|
|
> 💁 پیش گوئی کے وسیلے کے لیے ایک فیلڈ ہے۔ آپ پیش گوئی کے لیے ایک الگ وسیلہ بنا سکتے ہیں، لیکن مفت مصنف کا وسیلہ ایک مہینے میں 1,000 پیش گوئیاں فراہم کرتا ہے جو ترقی کے لیے کافی ہونی چاہیے، لہذا آپ اسے خالی چھوڑ سکتے ہیں۔
|
|
|
|
|
|
1. ایپ بنانے کے بعد ظاہر ہونے والے گائیڈ کو پڑھیں تاکہ زبان کو سمجھنے والے ماڈل کو تربیت دینے کے مراحل کو سمجھ سکیں۔ جب آپ گائیڈ پڑھ لیں تو اسے بند کر دیں۔
|
|
|
|
|
|
## ارادے اور ادارے
|
|
|
|
|
|
زبان کو سمجھنا *ارادوں* اور *اداروں* کے گرد گھومتا ہے۔ ارادے الفاظ کے مقصد کو ظاہر کرتے ہیں، جیسے موسیقی چلانا، ٹائمر سیٹ کرنا، یا کھانے کا آرڈر دینا۔ ادارے وہ چیزیں ہیں جن کا ارادہ حوالہ دیتا ہے، جیسے البم، ٹائمر کی مدت، یا کھانے کی قسم۔ ماڈل کے ذریعے تشریح کیے گئے ہر جملے میں کم از کم ایک ارادہ اور اختیاری طور پر ایک یا زیادہ ادارے ہونے چاہئیں۔
|
|
|
|
|
|
کچھ مثالیں:
|
|
|
|
|
|
| جملہ | ارادہ | ادارے |
|
|
|
| --------------------------------------------------- | ---------------- | ------------------------------------------ |
|
|
|
| "Taylor Swift کا تازہ ترین البم چلائیں" | *موسیقی چلائیں* | *Taylor Swift کا تازہ ترین البم* |
|
|
|
| "3 منٹ کا ٹائمر سیٹ کریں" | *ٹائمر سیٹ کریں* | *3 منٹ* |
|
|
|
| "میرا ٹائمر منسوخ کریں" | *ٹائمر منسوخ کریں* | کوئی نہیں |
|
|
|
| "3 بڑے انناس کے پیزا اور ایک سیزر سلاد آرڈر کریں" | *کھانے کا آرڈر دیں* | *3 بڑے انناس کے پیزا*, *سیزر سلاد* |
|
|
|
|
|
|
✅ ان جملوں کے بارے میں سوچیں جو آپ نے پہلے سوچے تھے۔ ان جملوں میں ارادہ اور ادارے کیا ہوں گے؟
|
|
|
|
|
|
LUIS کو تربیت دینے کے لیے، پہلے آپ ادارے سیٹ کرتے ہیں۔ یہ مقررہ اصطلاحات کی فہرست ہو سکتی ہیں، یا متن سے سیکھے جا سکتے ہیں۔ مثال کے طور پر، آپ اپنے مینو سے دستیاب کھانے کی ایک مقررہ فہرست فراہم کر سکتے ہیں، ہر لفظ کے مختلف ورژن (یا مترادفات) کے ساتھ، جیسے *egg plant* اور *aubergine* کو *aubergine* کے مترادفات کے طور پر۔
|
|
|
|
|
|
ٹائمر سیٹ کرنے کے لیے، آپ کے پاس وقت کے لیے ایک ادارہ ہو سکتا ہے جو پہلے سے موجود نمبر ادارے استعمال کرتا ہے، اور دوسرا یونٹس کے لیے، جیسے منٹ اور سیکنڈ۔ ہر یونٹ کے لیے متعدد ورژن ہوں گے تاکہ واحد اور جمع شکلوں کا احاطہ کیا جا سکے - جیسے منٹ اور منٹس۔
|
|
|
|
|
|
جب ادارے کی وضاحت ہو جائے، تو آپ ارادے بناتے ہیں۔ یہ ماڈل کے ذریعے فراہم کردہ مثال جملوں (جنہیں *utterances* کہا جاتا ہے) کی بنیاد پر سیکھے جاتے ہیں۔ مثال کے طور پر، *ٹائمر سیٹ کریں* ارادے کے لیے، آپ درج ذیل جملے فراہم کر سکتے ہیں:
|
|
|
|
|
|
* `1 سیکنڈ کا ٹائمر سیٹ کریں`
|
|
|
* `1 منٹ اور 12 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `3 منٹ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `9 منٹ 30 سیکنڈ کا ٹائمر سیٹ کریں`
|
|
|
|
|
|
پھر آپ LUIS کو بتاتے ہیں کہ ان جملوں کے کون سے حصے اداروں سے متعلق ہیں:
|
|
|
|
|
|

|
|
|
|
|
|
جملہ `1 منٹ اور 12 سیکنڈ کے لیے ٹائمر سیٹ کریں` کا ارادہ `ٹائمر سیٹ کریں` ہے۔ اس میں 2 ادارے ہیں جن کے 2 اقدار ہیں:
|
|
|
|
|
|
| | وقت | یونٹ |
|
|
|
| ---------- | ---: | ------ |
|
|
|
| 1 منٹ | 1 | منٹ |
|
|
|
| 12 سیکنڈ | 12 | سیکنڈ |
|
|
|
|
|
|
ایک اچھا ماڈل تربیت دینے کے لیے، آپ کو مختلف مثال جملوں کی ضرورت ہوتی ہے تاکہ کسی چیز کے لیے مختلف طریقوں سے درخواست کرنے کے تمام ممکنہ طریقے شامل ہوں۔
|
|
|
|
|
|
> 💁 کسی بھی AI ماڈل کی طرح، جتنا زیادہ اور جتنا درست ڈیٹا آپ تربیت کے لیے استعمال کریں گے، ماڈل اتنا ہی بہتر ہوگا۔
|
|
|
|
|
|
✅ ان مختلف طریقوں کے بارے میں سوچیں جن سے آپ ایک ہی چیز کی درخواست کر سکتے ہیں اور توقع کریں گے کہ انسان اسے سمجھ لے۔
|
|
|
|
|
|
### کام - زبان کو سمجھنے والے ماڈلز میں ادارے شامل کریں
|
|
|
|
|
|
ٹائمر کے لیے، آپ کو 2 ادارے شامل کرنے کی ضرورت ہے - ایک وقت کی اکائی (منٹ یا سیکنڈ) کے لیے، اور دوسرا منٹ یا سیکنڈ کی تعداد کے لیے۔
|
|
|
|
|
|
LUIS پورٹل استعمال کرنے کے لیے ہدایات Microsoft Docs پر [Quickstart: Build your app in LUIS portal documentation](https://docs.microsoft.com/azure/cognitive-services/luis/luis-get-started-create-app?WT.mc_id=academic-17441-jabenn) میں مل سکتی ہیں۔
|
|
|
|
|
|
1. LUIS پورٹل سے، *Entities* ٹیب منتخب کریں اور **Add prebuilt entity** بٹن منتخب کرکے *number* پہلے سے موجود ادارہ شامل کریں۔
|
|
|
|
|
|
1. وقت کی اکائی کے لیے ایک نیا ادارہ **Create** بٹن کے ذریعے بنائیں۔ ادارے کا نام `time unit` رکھیں اور قسم کو *List* پر سیٹ کریں۔ *Normalized values* فہرست میں `minute` اور `second` کے لیے اقدار شامل کریں، اور *synonyms* فہرست میں واحد اور جمع شکلیں شامل کریں۔ ہر مترادف شامل کرنے کے بعد `return` دبائیں تاکہ اسے فہرست میں شامل کیا جا سکے۔
|
|
|
|
|
|
| معمول کی قدر | مترادفات |
|
|
|
| ------------ | --------------- |
|
|
|
| منٹ | منٹ، منٹس |
|
|
|
| سیکنڈ | سیکنڈ، سیکنڈز |
|
|
|
|
|
|
### کام - زبان کو سمجھنے والے ماڈلز میں ارادے شامل کریں
|
|
|
|
|
|
1. *Intents* ٹیب سے، **Create** بٹن منتخب کریں تاکہ ایک نیا ارادہ بنایا جا سکے۔ اس ارادے کا نام `set timer` رکھیں۔
|
|
|
|
|
|
1. مثالوں میں، مختلف طریقوں سے ٹائمر سیٹ کرنے کے جملے درج کریں، جن میں منٹ، سیکنڈ، اور منٹ اور سیکنڈ دونوں شامل ہوں۔ مثالیں ہو سکتی ہیں:
|
|
|
|
|
|
* `1 سیکنڈ کا ٹائمر سیٹ کریں`
|
|
|
* `4 منٹ کا ٹائمر سیٹ کریں`
|
|
|
* `چار منٹ چھ سیکنڈ کا ٹائمر سیٹ کریں`
|
|
|
* `9 منٹ 30 سیکنڈ کا ٹائمر سیٹ کریں`
|
|
|
* `1 منٹ اور 12 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `3 منٹ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `3 منٹ اور 1 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `تین منٹ اور ایک سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `1 منٹ اور 1 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `30 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
* `1 سیکنڈ کے لیے ٹائمر سیٹ کریں`
|
|
|
|
|
|
الفاظ اور عددی شکلوں کو مکس کریں تاکہ ماڈل دونوں کو سنبھالنا سیکھے۔
|
|
|
|
|
|
1. جب آپ ہر مثال درج کریں، تو LUIS اداروں کا پتہ لگانا شروع کرے گا، اور کسی بھی ادارے کو انڈر لائن اور لیبل کرے گا۔
|
|
|
|
|
|

|
|
|
|
|
|
### کام - ماڈل کو تربیت دیں اور جانچ کریں
|
|
|
|
|
|
1. جب ادارے اور ارادے ترتیب دیے جائیں، تو **Train** بٹن منتخب کرکے ماڈل کو تربیت دیں۔ یہ بٹن چند سیکنڈ میں ماڈل کو تربیت دے گا۔ تربیت کے دوران بٹن غیر فعال ہوگا، اور تربیت مکمل ہونے کے بعد دوبارہ فعال ہو جائے گا۔
|
|
|
|
|
|
1. **Test** بٹن منتخب کریں تاکہ زبان کو سمجھنے والے ماڈل کی جانچ کی جا سکے۔ متن درج کریں جیسے `5 منٹ اور 4 سیکنڈ کے لیے ٹائمر سیٹ کریں` اور `return` دبائیں۔ جملہ اس ٹیکسٹ باکس کے نیچے ظاہر ہوگا جس میں آپ نے متن درج کیا تھا، اور اس کے نیچے *top intent* ہوگا، یا وہ ارادہ جو سب سے زیادہ امکان کے ساتھ پہچانا گیا۔ یہ `set timer` ہونا چاہیے۔ ارادے کے نام کے ساتھ اس کے درست ہونے کے امکان کی فیصد ہوگی۔
|
|
|
|
|
|
1. **Inspect** آپشن منتخب کریں تاکہ نتائج کا تجزیہ کیا جا سکے۔ آپ کو سب سے زیادہ اسکور کرنے والے ارادے کے ساتھ اس کی فیصد امکان، اور پہچانے گئے اداروں کی فہرستیں نظر آئیں گی۔
|
|
|
|
|
|
1. *Test* پین بند کریں جب آپ جانچ مکمل کر لیں۔
|
|
|
|
|
|
### کام - ماڈل کو شائع کریں
|
|
|
|
|
|
اس ماڈل کو کوڈ سے استعمال کرنے کے لیے، آپ کو اسے شائع کرنا ہوگا۔ LUIS سے شائع کرتے وقت، آپ اسے یا تو جانچ کے لیے ایک اسٹیجنگ ماحول میں شائع کر سکتے ہیں، یا مکمل ریلیز کے لیے ایک پروڈکٹ ماحول میں۔ اس سبق میں، اسٹیجنگ ماحول کافی ہے۔
|
|
|
|
|
|
1. LUIS پورٹل سے، **Publish** بٹن منتخب کریں۔
|
|
|
|
|
|
1. یقینی بنائیں کہ *Staging slot* منتخب ہے، پھر **Done** منتخب کریں۔ آپ کو ایک اطلاع نظر آئے گی جب ایپ شائع ہو جائے۔
|
|
|
|
|
|
1. آپ اسے curl کے ذریعے جانچ سکتے ہیں۔ curl کمانڈ بنانے کے لیے، آپ کو تین اقدار کی ضرورت ہوگی - endpoint، application ID (App ID) اور API key۔ یہ **MANAGE** ٹیب سے حاصل کیے جا سکتے ہیں جو اوپر کے مینو سے منتخب کیا جا سکتا ہے۔
|
|
|
|
|
|
1. *Settings* سیکشن سے App ID کاپی کریں
|
|
|
1. *Azure Resources* کے سیکشن سے *Authoring Resource* منتخب کریں، اور *Primary Key* اور *Endpoint URL* کو کاپی کریں۔
|
|
|
|
|
|
1. اپنے کمانڈ پرامپٹ یا ٹرمینل میں درج ذیل curl کمانڈ چلائیں:
|
|
|
|
|
|
```sh
|
|
|
curl "<endpoint url>/luis/prediction/v3.0/apps/<app id>/slots/staging/predict" \
|
|
|
--request GET \
|
|
|
--get \
|
|
|
--data "subscription-key=<primary key>" \
|
|
|
--data "verbose=false" \
|
|
|
--data "show-all-intents=true" \
|
|
|
--data-urlencode "query=<sentence>"
|
|
|
```
|
|
|
|
|
|
`<endpoint url>` کو *Azure Resources* سیکشن سے حاصل کردہ Endpoint URL سے تبدیل کریں۔
|
|
|
|
|
|
`<app id>` کو *Settings* سیکشن سے حاصل کردہ App ID سے تبدیل کریں۔
|
|
|
|
|
|
`<primary key>` کو *Azure Resources* سیکشن سے حاصل کردہ Primary Key سے تبدیل کریں۔
|
|
|
|
|
|
`<sentence>` کو اس جملے سے تبدیل کریں جسے آپ ٹیسٹ کرنا چاہتے ہیں۔
|
|
|
|
|
|
1. اس کال کا نتیجہ ایک JSON دستاویز ہوگا جو کوئری، سب سے اوپر کی نیت، اور مختلف اقسام کے لحاظ سے تقسیم شدہ entities کی فہرست کو تفصیل سے بیان کرے گا۔
|
|
|
|
|
|
```JSON
|
|
|
{
|
|
|
"query": "set a timer for 45 minutes and 12 seconds",
|
|
|
"prediction": {
|
|
|
"topIntent": "set timer",
|
|
|
"intents": {
|
|
|
"set timer": {
|
|
|
"score": 0.97031575
|
|
|
},
|
|
|
"None": {
|
|
|
"score": 0.02205793
|
|
|
}
|
|
|
},
|
|
|
"entities": {
|
|
|
"number": [
|
|
|
45,
|
|
|
12
|
|
|
],
|
|
|
"time-unit": [
|
|
|
[
|
|
|
"minute"
|
|
|
],
|
|
|
[
|
|
|
"second"
|
|
|
]
|
|
|
]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
اوپر دیا گیا JSON `set a timer for 45 minutes and 12 seconds` کے ساتھ کوئری کرنے سے آیا ہے:
|
|
|
|
|
|
* `set timer` سب سے اوپر کی نیت تھی جس کی امکانیت 97% تھی۔
|
|
|
* دو *number* entities کا پتہ چلا، `45` اور `12`۔
|
|
|
* دو *time-unit* entities کا پتہ چلا، `minute` اور `second`۔
|
|
|
|
|
|
## زبان کو سمجھنے والے ماڈل کا استعمال کریں
|
|
|
|
|
|
جب LUIS ماڈل شائع ہو جائے، تو اسے کوڈ سے کال کیا جا سکتا ہے۔ پچھلے اسباق میں، آپ نے IoT Hub استعمال کیا تھا تاکہ کلاؤڈ سروسز کے ساتھ مواصلات کو سنبھالا جا سکے، ٹیلیمیٹری بھیجنے اور کمانڈز سننے کے لیے۔ یہ بہت غیر متزامن ہے - ایک بار ٹیلیمیٹری بھیجنے کے بعد آپ کا کوڈ جواب کا انتظار نہیں کرتا، اور اگر کلاؤڈ سروس بند ہو جائے، تو آپ کو معلوم نہیں ہوگا۔
|
|
|
|
|
|
ایک سمارٹ ٹائمر کے لیے، ہم فوری جواب چاہتے ہیں تاکہ ہم صارف کو بتا سکیں کہ ٹائمر سیٹ ہو گیا ہے، یا انہیں خبردار کر سکیں کہ کلاؤڈ سروسز دستیاب نہیں ہیں۔ ایسا کرنے کے لیے، ہمارا IoT ڈیوائس براہ راست ویب endpoint کو کال کرے گا، IoT Hub پر انحصار کرنے کے بجائے۔
|
|
|
|
|
|
LUIS کو IoT ڈیوائس سے کال کرنے کے بجائے، آپ سرور لیس کوڈ استعمال کر سکتے ہیں جس میں ایک مختلف قسم کا trigger ہو - ایک HTTP trigger۔ یہ آپ کی function app کو REST درخواستوں کے لیے سننے اور ان کا جواب دینے کی اجازت دیتا ہے۔ یہ فنکشن ایک REST endpoint ہوگا جسے آپ کا ڈیوائس کال کر سکتا ہے۔
|
|
|
|
|
|
> 💁 اگرچہ آپ LUIS کو براہ راست اپنے IoT ڈیوائس سے کال کر سکتے ہیں، لیکن سرور لیس کوڈ جیسا کچھ استعمال کرنا بہتر ہے۔ اس طرح جب آپ اس LUIS ایپ کو تبدیل کرنا چاہیں جسے آپ کال کر رہے ہیں، مثال کے طور پر جب آپ ایک بہتر ماڈل ٹرین کریں یا کسی مختلف زبان میں ماڈل ٹرین کریں، تو آپ کو صرف اپنے کلاؤڈ کوڈ کو اپ ڈیٹ کرنا ہوگا، نہ کہ ہزاروں یا لاکھوں IoT ڈیوائسز پر کوڈ کو دوبارہ تعینات کرنا۔
|
|
|
|
|
|
### کام - ایک سرور لیس فنکشنز ایپ بنائیں
|
|
|
|
|
|
1. ایک Azure Functions ایپ بنائیں جس کا نام `smart-timer-trigger` ہو، اور اسے VS Code میں کھولیں۔
|
|
|
|
|
|
1. اس ایپ میں ایک HTTP trigger شامل کریں جس کا نام `speech-trigger` ہو، درج ذیل کمانڈ کو VS Code ٹرمینل کے اندر سے چلائیں:
|
|
|
|
|
|
```sh
|
|
|
func new --name text-to-timer --template "HTTP trigger"
|
|
|
```
|
|
|
|
|
|
یہ ایک HTTP trigger بنائے گا جس کا نام `text-to-timer` ہوگا۔
|
|
|
|
|
|
1. HTTP trigger کو فنکشنز ایپ چلا کر ٹیسٹ کریں۔ جب یہ چلے گا تو آپ کو آؤٹ پٹ میں endpoint نظر آئے گا:
|
|
|
|
|
|
```output
|
|
|
Functions:
|
|
|
|
|
|
text-to-timer: [GET,POST] http://localhost:7071/api/text-to-timer
|
|
|
```
|
|
|
|
|
|
اسے اپنے براؤزر میں [http://localhost:7071/api/text-to-timer](http://localhost:7071/api/text-to-timer) URL لوڈ کر کے ٹیسٹ کریں۔
|
|
|
|
|
|
```output
|
|
|
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
|
|
|
```
|
|
|
|
|
|
### کام - زبان کو سمجھنے والے ماڈل کا استعمال کریں
|
|
|
|
|
|
1. LUIS کے لیے SDK ایک Pip پیکج کے ذریعے دستیاب ہے۔ `requirements.txt` فائل میں درج ذیل لائن شامل کریں تاکہ اس پیکج پر انحصار شامل کیا جا سکے:
|
|
|
|
|
|
```sh
|
|
|
azure-cognitiveservices-language-luis
|
|
|
```
|
|
|
|
|
|
1. یقینی بنائیں کہ VS Code ٹرمینل میں ورچوئل ماحول فعال ہے، اور درج ذیل کمانڈ چلائیں تاکہ Pip پیکجز انسٹال کیے جا سکیں:
|
|
|
|
|
|
```sh
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
> 💁 اگر آپ کو غلطیاں ملیں، تو آپ کو درج ذیل کمانڈ کے ذریعے pip کو اپ گریڈ کرنے کی ضرورت ہو سکتی ہے:
|
|
|
>
|
|
|
> ```sh
|
|
|
> pip install --upgrade pip
|
|
|
> ```
|
|
|
|
|
|
1. `local.settings.json` فائل میں اپنے LUIS API Key، Endpoint URL، اور App ID کے لیے نئے اندراجات شامل کریں جو LUIS پورٹل کے **MANAGE** ٹیب سے حاصل کیے گئے ہیں:
|
|
|
|
|
|
```JSON
|
|
|
"LUIS_KEY": "<primary key>",
|
|
|
"LUIS_ENDPOINT_URL": "<endpoint url>",
|
|
|
"LUIS_APP_ID": "<app id>"
|
|
|
```
|
|
|
|
|
|
`<endpoint url>` کو **MANAGE** ٹیب کے *Azure Resources* سیکشن سے حاصل کردہ Endpoint URL سے تبدیل کریں۔ یہ `https://<location>.api.cognitive.microsoft.com/` ہوگا۔
|
|
|
|
|
|
`<app id>` کو **MANAGE** ٹیب کے *Settings* سیکشن سے حاصل کردہ App ID سے تبدیل کریں۔
|
|
|
|
|
|
`<primary key>` کو **MANAGE** ٹیب کے *Azure Resources* سیکشن سے حاصل کردہ Primary Key سے تبدیل کریں۔
|
|
|
|
|
|
1. `__init__.py` فائل میں درج ذیل درآمدات شامل کریں:
|
|
|
|
|
|
```python
|
|
|
import json
|
|
|
import os
|
|
|
from azure.cognitiveservices.language.luis.runtime import LUISRuntimeClient
|
|
|
from msrest.authentication import CognitiveServicesCredentials
|
|
|
```
|
|
|
|
|
|
یہ کچھ سسٹم لائبریریوں کے ساتھ ساتھ LUIS کے ساتھ تعامل کرنے کے لیے لائبریریوں کو درآمد کرتا ہے۔
|
|
|
|
|
|
1. `main` میتھڈ کے مواد کو حذف کریں، اور درج ذیل کوڈ شامل کریں:
|
|
|
|
|
|
```python
|
|
|
luis_key = os.environ['LUIS_KEY']
|
|
|
endpoint_url = os.environ['LUIS_ENDPOINT_URL']
|
|
|
app_id = os.environ['LUIS_APP_ID']
|
|
|
|
|
|
credentials = CognitiveServicesCredentials(luis_key)
|
|
|
client = LUISRuntimeClient(endpoint=endpoint_url, credentials=credentials)
|
|
|
```
|
|
|
|
|
|
یہ آپ کے LUIS ایپ کے لیے `local.settings.json` فائل میں شامل کردہ اقدار کو لوڈ کرتا ہے، آپ کے API key کے ساتھ ایک credentials object بناتا ہے، پھر آپ کے LUIS ایپ کے ساتھ تعامل کرنے کے لیے ایک LUIS client object بناتا ہے۔
|
|
|
|
|
|
1. یہ HTTP trigger JSON کے طور پر سمجھنے کے لیے متن پاس کرتے ہوئے کال کیا جائے گا، جس میں متن `text` پراپرٹی میں ہوگا۔ درج ذیل کوڈ HTTP درخواست کے باڈی سے قدر نکالتا ہے، اور اسے کنسول میں لاگ کرتا ہے۔ یہ کوڈ `main` فنکشن میں شامل کریں:
|
|
|
|
|
|
```python
|
|
|
req_body = req.get_json()
|
|
|
text = req_body['text']
|
|
|
logging.info(f'Request - {text}')
|
|
|
```
|
|
|
|
|
|
1. LUIS سے پیش گوئی کی درخواستیں بھیج کر پیش گوئی کی جاتی ہیں - ایک JSON دستاویز جس میں پیش گوئی کرنے کے لیے متن شامل ہوتا ہے۔ درج ذیل کوڈ کے ساتھ یہ بنائیں:
|
|
|
|
|
|
```python
|
|
|
prediction_request = { 'query' : text }
|
|
|
```
|
|
|
|
|
|
1. یہ درخواست LUIS کو بھیجی جا سکتی ہے، اس staging slot کا استعمال کرتے ہوئے جس پر آپ کی ایپ شائع ہوئی تھی:
|
|
|
|
|
|
```python
|
|
|
prediction_response = client.prediction.get_slot_prediction(app_id, 'Staging', prediction_request)
|
|
|
```
|
|
|
|
|
|
1. پیش گوئی کے جواب میں سب سے اوپر کی نیت شامل ہوتی ہے - سب سے زیادہ پیش گوئی سکور کے ساتھ نیت، اور entities۔ اگر سب سے اوپر کی نیت `set timer` ہے، تو entities کو پڑھا جا سکتا ہے تاکہ ٹائمر کے لیے مطلوبہ وقت حاصل کیا جا سکے:
|
|
|
|
|
|
```python
|
|
|
if prediction_response.prediction.top_intent == 'set timer':
|
|
|
numbers = prediction_response.prediction.entities['number']
|
|
|
time_units = prediction_response.prediction.entities['time unit']
|
|
|
total_seconds = 0
|
|
|
```
|
|
|
|
|
|
`number` entities ایک نمبروں کی array ہوگی۔ مثال کے طور پر، اگر آپ نے کہا *"Set a four minute 17 second timer."*، تو `number` array میں 2 integers ہوں گے - 4 اور 17۔
|
|
|
|
|
|
`time unit` entities arrays کی arrays ہوں گی جن میں ہر وقت کی اکائی ایک array کے اندر ہوگی۔ مثال کے طور پر، اگر آپ نے کہا *"Set a four minute 17 second timer."*، تو `time unit` array میں 2 arrays ہوں گے جن میں ہر ایک میں ایک قدر ہوگی - `['minute']` اور `['second']`۔
|
|
|
|
|
|
*"Set a four minute 17 second timer."* کے لیے ان entities کا JSON ورژن:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"number": [4, 17],
|
|
|
"time unit": [
|
|
|
["minute"],
|
|
|
["second"]
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ٹائمر کے لیے کل وقت سیکنڈز میں شمار کرنے کے لیے ایک count بھی بیان کرتا ہے۔ یہ entities کی اقدار سے بھرا جائے گا۔
|
|
|
|
|
|
1. entities آپس میں جڑے ہوئے نہیں ہیں، لیکن ہم ان کے بارے میں کچھ مفروضے بنا سکتے ہیں۔ یہ بولے گئے ترتیب میں ہوں گے، لہذا array میں پوزیشن کا استعمال کیا جا سکتا ہے تاکہ یہ معلوم کیا جا سکے کہ کون سا نمبر کس وقت کی اکائی سے میل کھاتا ہے۔ مثال کے طور پر:
|
|
|
|
|
|
* *"Set a 30 second timer"* - اس میں ایک نمبر ہوگا، `30`, اور ایک وقت کی اکائی، `second`، لہذا واحد نمبر واحد وقت کی اکائی سے میل کھائے گا۔
|
|
|
* *"Set a 2 minute and 30 second timer"* - اس میں دو نمبر ہوں گے، `2` اور `30`, اور دو وقت کی اکائیاں، `minute` اور `second`, لہذا پہلا نمبر پہلی وقت کی اکائی کے لیے ہوگا (2 منٹ)، اور دوسرا نمبر دوسری وقت کی اکائی کے لیے ہوگا (30 سیکنڈ)۔
|
|
|
|
|
|
درج ذیل کوڈ number entities میں اشیاء کی تعداد حاصل کرتا ہے، اور اس کا استعمال کرتے ہوئے ہر array سے پہلے آئٹم کو نکالتا ہے، پھر دوسرا اور اسی طرح۔ اسے `if` بلاک کے اندر شامل کریں۔
|
|
|
|
|
|
```python
|
|
|
for i in range(0, len(numbers)):
|
|
|
number = numbers[i]
|
|
|
time_unit = time_units[i][0]
|
|
|
```
|
|
|
|
|
|
*"Set a four minute 17 second timer."* کے لیے، یہ دو بار loop کرے گا، درج ذیل اقدار دے گا:
|
|
|
|
|
|
| loop count | `number` | `time_unit` |
|
|
|
| ---------: | -------: | ----------- |
|
|
|
| 0 | 4 | minute |
|
|
|
| 1 | 17 | second |
|
|
|
|
|
|
1. اس loop کے اندر، نمبر اور وقت کی اکائی کا استعمال کرتے ہوئے ٹائمر کے لیے کل وقت کا حساب لگائیں، ہر منٹ کے لیے 60 سیکنڈز شامل کریں، اور کسی بھی سیکنڈز کے لیے نمبر شامل کریں۔
|
|
|
|
|
|
```python
|
|
|
if time_unit == 'minute':
|
|
|
total_seconds += number * 60
|
|
|
else:
|
|
|
total_seconds += number
|
|
|
```
|
|
|
|
|
|
1. entities کے ذریعے loop کے باہر، ٹائمر کے لیے کل وقت کو لاگ کریں:
|
|
|
|
|
|
```python
|
|
|
logging.info(f'Timer required for {total_seconds} seconds')
|
|
|
```
|
|
|
|
|
|
1. سیکنڈز کی تعداد کو HTTP جواب کے طور پر فنکشن سے واپس کرنے کی ضرورت ہے۔ `if` بلاک کے آخر میں درج ذیل شامل کریں:
|
|
|
|
|
|
```python
|
|
|
payload = {
|
|
|
'seconds': total_seconds
|
|
|
}
|
|
|
return func.HttpResponse(json.dumps(payload), status_code=200)
|
|
|
```
|
|
|
|
|
|
یہ کوڈ ایک payload بناتا ہے جس میں ٹائمر کے لیے کل سیکنڈز کی تعداد شامل ہوتی ہے، اسے JSON string میں تبدیل کرتا ہے اور اسے HTTP نتیجے کے طور پر واپس کرتا ہے جس کا status code 200 ہوتا ہے، جو کامیاب کال کو ظاہر کرتا ہے۔
|
|
|
|
|
|
1. آخر میں، `if` بلاک کے باہر، اگر نیت کو پہچانا نہ گیا ہو تو ایک error code واپس کریں:
|
|
|
|
|
|
```python
|
|
|
return func.HttpResponse(status_code=404)
|
|
|
```
|
|
|
|
|
|
404 *not found* کے لیے status code ہے۔
|
|
|
|
|
|
1. فنکشن ایپ چلائیں اور اسے curl کے ذریعے ٹیسٹ کریں۔
|
|
|
|
|
|
```sh
|
|
|
curl --request POST 'http://localhost:7071/api/text-to-timer' \
|
|
|
--header 'Content-Type: application/json' \
|
|
|
--include \
|
|
|
--data '{"text":"<text>"}'
|
|
|
```
|
|
|
|
|
|
`<text>` کو اپنی درخواست کے متن سے تبدیل کریں، مثال کے طور پر `set a 2 minutes 27 second timer`۔
|
|
|
|
|
|
آپ فنکشنز ایپ سے درج ذیل آؤٹ پٹ دیکھیں گے:
|
|
|
|
|
|
```output
|
|
|
Functions:
|
|
|
|
|
|
text-to-timer: [GET,POST] http://localhost:7071/api/text-to-timer
|
|
|
|
|
|
For detailed output, run func with --verbose flag.
|
|
|
[2021-06-26T19:45:14.502Z] Worker process started and initialized.
|
|
|
[2021-06-26T19:45:19.338Z] Host lock lease acquired by instance ID '000000000000000000000000951CAE4E'.
|
|
|
[2021-06-26T19:45:52.059Z] Executing 'Functions.text-to-timer' (Reason='This function was programmatically called via the host APIs.', Id=f68bfb90-30e4-47a5-99da-126b66218e81)
|
|
|
[2021-06-26T19:45:53.577Z] Timer required for 147 seconds
|
|
|
[2021-06-26T19:45:53.746Z] Executed 'Functions.text-to-timer' (Succeeded, Id=f68bfb90-30e4-47a5-99da-126b66218e81, Duration=1750ms)
|
|
|
```
|
|
|
|
|
|
curl کی کال درج ذیل واپس کرے گی:
|
|
|
|
|
|
```output
|
|
|
HTTP/1.1 200 OK
|
|
|
Date: Tue, 29 Jun 2021 01:14:11 GMT
|
|
|
Content-Type: text/plain; charset=utf-8
|
|
|
Server: Kestrel
|
|
|
Transfer-Encoding: chunked
|
|
|
|
|
|
{"seconds": 147}
|
|
|
```
|
|
|
|
|
|
ٹائمر کے لیے سیکنڈز کی تعداد `"seconds"` قدر میں ہوگی۔
|
|
|
|
|
|
> 💁 آپ اس کوڈ کو [code/functions](../../../../../6-consumer/lessons/2-language-understanding/code/functions) فولڈر میں تلاش کر سکتے ہیں۔
|
|
|
|
|
|
### کام - اپنے فنکشن کو اپنے IoT ڈیوائس کے لیے دستیاب بنائیں
|
|
|
|
|
|
1. آپ کے IoT ڈیوائس کو آپ کے REST endpoint کو کال کرنے کے لیے URL جاننے کی ضرورت ہوگی۔ جب آپ نے اسے پہلے رسائی حاصل کی، تو آپ نے `localhost` استعمال کیا، جو آپ کے مقامی کمپیوٹر پر REST endpoints تک رسائی حاصل کرنے کے لیے ایک شارٹ کٹ ہے۔ اپنے IoT ڈیوائس کو رسائی حاصل کرنے کی اجازت دینے کے لیے، آپ کو یا تو کلاؤڈ پر شائع کرنا ہوگا، یا اپنے IP ایڈریس کو مقامی طور پر رسائی حاصل کرنے کے لیے حاصل کرنا ہوگا۔
|
|
|
|
|
|
> ⚠️ اگر آپ Wio Terminal استعمال کر رہے ہیں، تو فنکشن ایپ کو مقامی طور پر چلانا آسان ہے، کیونکہ لائبریریوں پر انحصار ہوگا جو آپ کو فنکشن ایپ کو اسی طرح تعینات کرنے کی اجازت نہیں دے گا جیسا کہ آپ نے پہلے کیا تھا۔ فنکشن ایپ کو مقامی طور پر چلائیں اور اپنے کمپیوٹر کے IP ایڈریس کے ذریعے رسائی حاصل کریں۔ اگر آپ کلاؤڈ پر تعینات کرنا چاہتے ہیں، تو بعد کے سبق میں اس کے طریقے کے بارے میں معلومات فراہم کی جائیں گی۔
|
|
|
|
|
|
* فنکشنز ایپ شائع کریں - اپنی فنکشنز ایپ کو کلاؤڈ پر شائع کرنے کے لیے پہلے کے اسباق میں دی گئی ہدایات پر عمل کریں۔ ایک بار شائع ہونے کے بعد، URL `https://<APP_NAME>.azurewebsites.net/api/text-to-timer` ہوگا، جہاں `<APP_NAME>` آپ کی فنکشنز ایپ کا نام ہوگا۔ یقینی بنائیں کہ اپنی مقامی ترتیبات بھی شائع کریں۔
|
|
|
|
|
|
HTTP triggers کے ساتھ کام کرتے وقت، وہ ڈیفالٹ طور پر ایک فنکشن ایپ key کے ساتھ محفوظ ہوتے ہیں۔ اس key کو حاصل کرنے کے لیے درج ذیل کمانڈ چلائیں:
|
|
|
|
|
|
```sh
|
|
|
az functionapp keys list --resource-group smart-timer \
|
|
|
--name <APP_NAME>
|
|
|
```
|
|
|
|
|
|
`functionKeys` سیکشن سے `default` اندراج کی قدر کو کاپی کریں۔
|
|
|
|
|
|
```output
|
|
|
{
|
|
|
"functionKeys": {
|
|
|
"default": "sQO1LQaeK9N1qYD6SXeb/TctCmwQEkToLJU6Dw8TthNeUH8VA45hlA=="
|
|
|
},
|
|
|
"masterKey": "RSKOAIlyvvQEQt9dfpabJT018scaLpQu9p1poHIMCxx5LYrIQZyQ/g==",
|
|
|
"systemKeys": {}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
اس key کو URL میں query parameter کے طور پر شامل کرنے کی ضرورت ہوگی، لہذا حتمی URL `https://<APP_NAME>.azurewebsites.net/api/text-to-timer?code=<FUNCTION_KEY>` ہوگا، جہاں `<APP_NAME>` آپ کی فنکشنز ایپ کا نام ہوگا، اور `<FUNCTION_KEY>` آپ کا ڈیفالٹ فنکشن key ہوگا۔
|
|
|
|
|
|
> 💁 آپ HTTP trigger کی authorization کی قسم کو `authlevel` سیٹنگ کے ذریعے `function.json` فائل میں تبدیل کر سکتے ہیں۔ آپ اس کے بارے میں مزید پڑھ سکتے ہیں [Azure Functions HTTP trigger documentation on Microsoft docs](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?WT.mc_id=academic-17441-jabenn&tabs=python#configuration) کے configuration سیکشن میں۔
|
|
|
|
|
|
* فنکشنز ایپ کو مقامی طور پر چلائیں، اور IP ایڈریس کا استعمال کرتے ہوئے رسائی حاصل کریں - آپ اپنے کمپیوٹر کے IP ایڈریس کو اپنے مقامی نیٹ ورک پر حاصل کر سکتے ہیں، اور اس کا استعمال کرتے ہوئے URL بنا سکتے ہیں۔
|
|
|
|
|
|
اپنا IP ایڈریس تلاش کریں:
|
|
|
|
|
|
* Windows 10 پر، [find your IP address guide](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn) پر عمل کریں۔
|
|
|
* macOS پر، [how to find you IP address on a Mac guide](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac) پر عمل کریں۔
|
|
|
* linux پر، [how to find your IP address in Linux guide](https://opensource.com/article/18/5/how-find-ip-address-linux) کے سیکشن پر عمل کریں۔
|
|
|
|
|
|
ایک بار جب آپ کے پاس آپ کا IP ایڈریس ہو، تو آپ فنکشن کو `http://` کے ذریعے رسائی حاصل کر سکیں گے۔
|
|
|
<آئی_پی_ایڈریس>
|
|
|
:7071/api/text-to-timer`, جہاں `<IP_ADDRESS>` آپ کا IP ایڈریس ہوگا، مثال کے طور پر `http://192.168.1.10:7071/api/text-to-timer`.
|
|
|
|
|
|
> 💁 یاد رکھیں کہ یہ پورٹ 7071 استعمال کرتا ہے، لہذا IP ایڈریس کے بعد آپ کو `:7071` شامل کرنا ہوگا۔
|
|
|
|
|
|
> 💁 یہ صرف اس وقت کام کرے گا جب آپ کا IoT ڈیوائس آپ کے کمپیوٹر کے ساتھ ایک ہی نیٹ ورک پر ہو۔
|
|
|
|
|
|
1. curl استعمال کرتے ہوئے endpoint کو ٹیسٹ کریں۔
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🚀 چیلنج
|
|
|
|
|
|
ایک ہی چیز کی درخواست کرنے کے کئی طریقے ہیں، جیسے کہ ٹائمر سیٹ کرنا۔ مختلف طریقوں کے بارے میں سوچیں اور انہیں اپنے LUIS ایپ میں مثالوں کے طور پر استعمال کریں۔ ان کو ٹیسٹ کریں تاکہ یہ دیکھ سکیں کہ آپ کا ماڈل مختلف طریقوں سے ٹائمر کی درخواست کو کس حد تک سمجھ سکتا ہے۔
|
|
|
|
|
|
## لیکچر کے بعد کا کوئز
|
|
|
|
|
|
[لیکچر کے بعد کا کوئز](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/44)
|
|
|
|
|
|
## جائزہ اور خود مطالعہ
|
|
|
|
|
|
* LUIS اور اس کی صلاحیتوں کے بارے میں مزید پڑھیں [Microsoft docs پر Language Understanding (LUIS) documentation صفحہ](https://docs.microsoft.com/azure/cognitive-services/luis/?WT.mc_id=academic-17441-jabenn)
|
|
|
* زبان کی سمجھ کے بارے میں مزید پڑھیں [Wikipedia پر natural-language understanding صفحہ](https://wikipedia.org/wiki/Natural-language_understanding)
|
|
|
* HTTP triggers کے بارے میں مزید پڑھیں [Microsoft docs پر Azure Functions HTTP trigger documentation صفحہ](https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook-trigger?WT.mc_id=academic-17441-jabenn&tabs=python)
|
|
|
|
|
|
## اسائنمنٹ
|
|
|
|
|
|
[ٹائمر منسوخ کریں](assignment.md)
|
|
|
|
|
|
---
|
|
|
|
|
|
**ڈسکلیمر**:
|
|
|
یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔ |