477 lines
25 KiB
Plaintext
477 lines
25 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"source": [
|
|
"# ஒரு விலங்கு நிபுணர் அமைப்பை செயல்படுத்துதல்\n",
|
|
"\n",
|
|
"[AI for Beginners Curriculum](http://github.com/microsoft/ai-for-beginners) இல் இருந்து ஒரு உதாரணம்.\n",
|
|
"\n",
|
|
"இந்த எடுத்துப்பாட்டில், சில உடல் பண்புகளை அடிப்படையாகக் கொண்டு ஒரு விலங்கை தீர்மானிக்க ஒரு எளிய அறிவு அடிப்படையிலான அமைப்பை செயல்படுத்துவோம். இந்த அமைப்பை பின்வரும் AND-OR மரமாக பிரதிபலிக்கலாம் (இது முழுமையான மரத்தின் ஒரு பகுதி, நாங்கள் எளிதில் சில கூடுதல் விதிகளையும் சேர்க்கலாம்):\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## நமதுயான நிபுணத்துவ அமைப்புகளுக்கான ஷெல் பின்வாங்கி தீர்வுடன்\n",
|
|
"\n",
|
|
"உற்பத்தி விதிகளின் அடிப்படையில் அறிவு பிரதிநிதித்துவத்திற்கு எளிய மொழியை வரையறுக்க முயலலாம். விதிகளை வரையறுக்க பைத்தான் வகுப்புகளை முக்கிய வார்த்தைகளாக பயன்படுத்துவோம். மூன்று வகையான வகுப்புகள் இருக்கின்றன:\n",
|
|
"* `Ask` என்பது பயனரிடம் கேட்க வேண்டிய கேள்வியை பிரதிநிதித்துவம் செய்யும். இது சாத்தியமான பதில்களின் தொகுப்பை கொண்டுள்ளது.\n",
|
|
"* `If` என்பது ஒரு விதியை பிரதிநிதித்துவம் செய்யும், மற்றும் அது விதியின் உள்ளடக்கத்தை சேமிப்பதற்கான சொல்லியல் சர்க்கரை மாதிரி உள்ளது\n",
|
|
"* `AND`/`OR` என்பது மரத்தின் AND/OR கிளைகளைக் குறிப்பிடும் வகுப்புகள். அவை உள்ளடக்க வாயிலான கணக்குகளை மட்டும் சேமிக்கின்றன. குறியுறுப்பை எளிமையாக்க, எல்லா செயல்பாடும் பெற்றோர் வகுப்பு `Content`-ல் வரையறுக்கப்பட்டுள்ளது\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Ask():\n",
|
|
" def __init__(self,choices=['y','n']):\n",
|
|
" self.choices = choices\n",
|
|
" def ask(self):\n",
|
|
" if max([len(x) for x in self.choices])>1:\n",
|
|
" for i,x in enumerate(self.choices):\n",
|
|
" print(\"{0}. {1}\".format(i,x),flush=True)\n",
|
|
" x = int(input())\n",
|
|
" return self.choices[x]\n",
|
|
" else:\n",
|
|
" print(\"/\".join(self.choices),flush=True)\n",
|
|
" return input()\n",
|
|
"\n",
|
|
"class Content():\n",
|
|
" def __init__(self,x):\n",
|
|
" self.x=x\n",
|
|
" \n",
|
|
"class If(Content):\n",
|
|
" pass\n",
|
|
"\n",
|
|
"class AND(Content):\n",
|
|
" pass\n",
|
|
"\n",
|
|
"class OR(Content):\n",
|
|
" pass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"எமது கணினி அமைப்பில், செயல்பாட்டுக் கால நினைவகம் **அறிவியல் தரவுகளின்** பட்டியலை **பண்பு-மதிப்புப் பொருப்புகளாக** கொண்டிருக்கும். அறிவுத்தளம் ஒரே பெரிய அகராதியாக வரையறுக்கப்படலாம், அது செயல்களை (செயற்பாட்டுக் கால நினைவகத்தில் சேர்க்கப்படவேண்டிய புதிய அறிவியல் தரவுகள்) AND-OR வெளிப்பாடுகளாக வெளிப்படுத்தப்பட்ட நிபந்தனைகளுடன் இணைக்கிறது. மேலும், சில அறிவியல் தரவுகளை `Ask` செய்யலாம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"rules = {\n",
|
|
" 'default': Ask(['y','n']),\n",
|
|
" 'color' : Ask(['red-brown','black and white','other']),\n",
|
|
" 'pattern' : Ask(['dark stripes','dark spots']),\n",
|
|
" 'mammal': If(OR(['hair','gives milk'])),\n",
|
|
" 'carnivor': If(OR([AND(['sharp teeth','claws','forward-looking eyes']),'eats meat'])),\n",
|
|
" 'ungulate': If(['mammal',OR(['has hooves','chews cud'])]),\n",
|
|
" 'bird': If(OR(['feathers',AND(['flies','lies eggs'])])),\n",
|
|
" 'animal:monkey' : If(['mammal','carnivor','color:red-brown','pattern:dark spots']),\n",
|
|
" 'animal:tiger' : If(['mammal','carnivor','color:red-brown','pattern:dark stripes']),\n",
|
|
" 'animal:giraffe' : If(['ungulate','long neck','long legs','pattern:dark spots']),\n",
|
|
" 'animal:zebra' : If(['ungulate','pattern:dark stripes']),\n",
|
|
" 'animal:ostrich' : If(['bird','long nech','color:black and white','cannot fly']),\n",
|
|
" 'animal:pinguin' : If(['bird','swims','color:black and white','cannot fly']),\n",
|
|
" 'animal:albatross' : If(['bird','flies well'])\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"பின்னோக்கிய ஊகத்தை செய்ய, நாம் `Knowledgebase` வகுப்பை வரையறுப்போம். இது கொண்டிருக்க இருக்கும்:\n",
|
|
"* பணியாற்றும் `memory` - பண்புகளை மதிப்புகளுக்கு மையப்படுத்தும் அகராதி\n",
|
|
"* அறிவுத்தளம் `rules` முன்பு வரையறுக்கப்பட்ட வடிவத்தில்\n",
|
|
"\n",
|
|
"இரு முக்கிய முறைமைகள்:\n",
|
|
"* `get` பண்பின் மதிப்பை பெற, தேவையானபட்சத்தில் ஊகத்தைச் செய்கிறது. உதாரணமாக, `get('color')` ஒரு வண்ண வகை மதிப்பை பெறும் (தேவையானால் கேட்கும், மற்றும் பின்னர் பணியாற்றும் நினைவகத்தில் மதிப்பை சேமிக்கும்). நாம் `get('color:blue')` என்றால், அது வண்ணத்திற்காக கேட்கும், பின்னர் வண்ணத்தின் அடிப்படையில் `y`/`n` மதிப்பை தரும்.\n",
|
|
"* `eval` உண்மையான ஊகத்தை செய்கிறது, அதாவது AND/OR மரத்தை கடந்துமுழுக்குகிறது, துணை-நோக்குகளை மதிப்பாய்வு செய்கிறது, மற்றும் மேலும்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class KnowledgeBase():\n",
|
|
" def __init__(self,rules):\n",
|
|
" self.rules = rules\n",
|
|
" self.memory = {}\n",
|
|
" \n",
|
|
" def get(self,name):\n",
|
|
" if ':' in name:\n",
|
|
" k,v = name.split(':')\n",
|
|
" vv = self.get(k)\n",
|
|
" return 'y' if v==vv else 'n'\n",
|
|
" if name in self.memory.keys():\n",
|
|
" return self.memory[name]\n",
|
|
" for fld in self.rules.keys():\n",
|
|
" if fld==name or fld.startswith(name+\":\"):\n",
|
|
" # print(\" + proving {}\".format(fld))\n",
|
|
" value = 'y' if fld==name else fld.split(':')[1]\n",
|
|
" res = self.eval(self.rules[fld],field=name)\n",
|
|
" if res!='y' and res!='n' and value=='y':\n",
|
|
" self.memory[name] = res\n",
|
|
" return res\n",
|
|
" if res=='y':\n",
|
|
" self.memory[name] = value\n",
|
|
" return value\n",
|
|
" # field is not found, using default\n",
|
|
" res = self.eval(self.rules['default'],field=name)\n",
|
|
" self.memory[name]=res\n",
|
|
" return res\n",
|
|
" \n",
|
|
" def eval(self,expr,field=None):\n",
|
|
" # print(\" + eval {}\".format(expr))\n",
|
|
" if isinstance(expr,Ask):\n",
|
|
" print(field)\n",
|
|
" return expr.ask()\n",
|
|
" elif isinstance(expr,If):\n",
|
|
" return self.eval(expr.x)\n",
|
|
" elif isinstance(expr,AND) or isinstance(expr,list):\n",
|
|
" expr = expr.x if isinstance(expr,AND) else expr\n",
|
|
" for x in expr:\n",
|
|
" if self.eval(x)=='n':\n",
|
|
" return 'n'\n",
|
|
" return 'y'\n",
|
|
" elif isinstance(expr,OR):\n",
|
|
" for x in expr.x:\n",
|
|
" if self.eval(x)=='y':\n",
|
|
" return 'y'\n",
|
|
" return 'n'\n",
|
|
" elif isinstance(expr,str):\n",
|
|
" return self.get(expr)\n",
|
|
" else:\n",
|
|
" print(\"Unknown expr: {}\".format(expr))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"இப்போது நம் விலங்கு அறிவுக் கூறுகளை வரையறுக்கலாம் மற்றும் ஆலோசனையை முன்னெடுக்கலாம். இந்த அழைப்பு உங்களுக்குப் பின்வரும் கேள்விகளை கேட்கும் என்பதை கவனியுங்கள். நீங்கள் ஆம்-இல்லை கேள்விகளுக்கு `y`/`n` என்று எழுதுவதால் பதிலளிக்கலாம், அல்லது பல தேர்வுகள் உள்ள கேள்விகளுக்கு எண் (0..N) குறிப்பிடுவதால் பதில் அளிக்கலாம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"hair\n",
|
|
"y/n\n",
|
|
"sharp teeth\n",
|
|
"y/n\n",
|
|
"claws\n",
|
|
"y/n\n",
|
|
"forward-looking eyes\n",
|
|
"y/n\n",
|
|
"color\n",
|
|
"0. red-brown\n",
|
|
"1. black and white\n",
|
|
"2. other\n",
|
|
"has hooves\n",
|
|
"y/n\n",
|
|
"long neck\n",
|
|
"y/n\n",
|
|
"long legs\n",
|
|
"y/n\n",
|
|
"pattern\n",
|
|
"0. dark stripes\n",
|
|
"1. dark spots\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'giraffe'"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"kb = KnowledgeBase(rules)\n",
|
|
"kb.get('animal')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## முன்னோக்கி நுண்ணறிவுக்கு Experta பயன்பாடு\n",
|
|
"\n",
|
|
"அடுத்த உதாரணத்தில், அறிவு பிரதிநிதித்துவத்திற்கு பயன்படுத்தப்படும் புத்தகங்களிலொன்றான [Experta](https://github.com/nilp0inter/experta) யை பயின்று முன் நோக்கி நுண்ணறிவை செயல்படுத்த முயற்சிப்போம். **Experta** என்பது Python இல் முன் நோக்கி நுண்ணறிவு அமைப்புகளை உருவாக்குவதற்கான ஒரு நூலகமாகும், இது பாரம்பரிய பழைய அமைப்பான [CLIPS](http://www.clipsrules.net/index.html) போன்றதாக வடிவமைக்கப்பட்டுள்ளது.\n",
|
|
"\n",
|
|
"நாம் நேரடியாக முன் தொடர் செயல்முறையையும் செயல்படுத்த முடியும், ஆனால் சாதாரண செயலாக்கங்கள் பொதுவாக மிகச் சிறந்த திறன்மிக்கவை அல்ல. பொறுப்பான விதி பொருத்தத்திற்காக ஒரு சிறப்பு அல்காரிதம் [Rete](https://en.wikipedia.org/wiki/Rete_algorithm) பயன்படுத்தப்படுகிறது.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Collecting git+https://github.com/nilp0inter/experta\n",
|
|
" Cloning https://github.com/nilp0inter/experta to /tmp/pip-req-build-7qurtwk3\n",
|
|
" Running command git clone --filter=blob:none --quiet https://github.com/nilp0inter/experta /tmp/pip-req-build-7qurtwk3\n",
|
|
" Resolved https://github.com/nilp0inter/experta to commit c6d5834b123861f5ae09e7d07027dc98bec58741\n",
|
|
" Installing build dependencies ... \u001b[?25ldone\n",
|
|
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
|
|
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
|
|
"\u001b[?25hRequirement already satisfied: frozendict~=2.4.6 in /opt/conda/envs/ai4beg/lib/python3.12/site-packages (from experta==1.9.5.dev1) (2.4.7)\n",
|
|
"Collecting schema~=0.6.7 (from experta==1.9.5.dev1)\n",
|
|
" Downloading schema-0.6.8-py2.py3-none-any.whl.metadata (14 kB)\n",
|
|
"Downloading schema-0.6.8-py2.py3-none-any.whl (14 kB)\n",
|
|
"Building wheels for collected packages: experta\n",
|
|
" Building wheel for experta (pyproject.toml) ... \u001b[?25ldone\n",
|
|
"\u001b[?25h Created wheel for experta: filename=experta-1.9.5.dev1-py3-none-any.whl size=34804 sha256=888c459512a5e713f4b674caa9a0f96cfdf07ec0d6eb56cc318ce0653d218014\n",
|
|
" Stored in directory: /tmp/pip-ephem-wheel-cache-1eeii9zy/wheels/3d/e8/bb/22d7956359603fa8dd679aa09f5b8efb3f29991c3986fdc787\n",
|
|
"Successfully built experta\n",
|
|
"Installing collected packages: schema, experta\n",
|
|
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2/2\u001b[0m [experta]\n",
|
|
"\u001b[1A\u001b[2KSuccessfully installed experta-1.9.5.dev1 schema-0.6.8\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import sys\n",
|
|
"!{sys.executable} -m pip install git+https://github.com/nilp0inter/experta"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from experta import *\n",
|
|
"#import experta"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"நாம் எங்கள் முறைமைக்கான வகுப்பை `KnowledgeEngine` என்பதன் துணை வகுப்பாக வரையறுப்போம். ஒவ்வொரு விதிமுறையும் `@Rule` அலங்காரத்துடன் தனித்தனியான פונ்க்ஷன் மூலம் வரையறுக்கப்படுகிறது, இது விதி எப்போது இயங்க வேண்டும் என்பதைக் குறிப்பிடுகிறது. விதியின் உள்ளே, நாம் `declare` פונ்க்ஷன் பயன்படுத்தி புதிய உண்மைகளைச் சேர்க்கலாம், அந்த உண்மைகளைச் சேர்த்தால் முன்னேற்றக் கணத்துப் பொறியால் சில கூடுதல் விதிகள் அழைக்கப்படும்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Animals(KnowledgeEngine):\n",
|
|
" @Rule(OR(\n",
|
|
" AND(Fact('sharp teeth'),Fact('claws'),Fact('forward looking eyes')),\n",
|
|
" Fact('eats meat')))\n",
|
|
" def cornivor(self):\n",
|
|
" self.declare(Fact('carnivor'))\n",
|
|
" \n",
|
|
" @Rule(OR(Fact('hair'),Fact('gives milk')))\n",
|
|
" def mammal(self):\n",
|
|
" self.declare(Fact('mammal'))\n",
|
|
"\n",
|
|
" @Rule(Fact('mammal'),\n",
|
|
" OR(Fact('has hooves'),Fact('chews cud')))\n",
|
|
" def hooves(self):\n",
|
|
" self.declare('ungulate')\n",
|
|
" \n",
|
|
" @Rule(OR(Fact('feathers'),AND(Fact('flies'),Fact('lays eggs'))))\n",
|
|
" def bird(self):\n",
|
|
" self.declare('bird')\n",
|
|
" \n",
|
|
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
|
|
" Fact(color='red-brown'),\n",
|
|
" Fact(pattern='dark spots'))\n",
|
|
" def monkey(self):\n",
|
|
" self.declare(Fact(animal='monkey'))\n",
|
|
"\n",
|
|
" @Rule(Fact('mammal'),Fact('carnivor'),\n",
|
|
" Fact(color='red-brown'),\n",
|
|
" Fact(pattern='dark stripes'))\n",
|
|
" def tiger(self):\n",
|
|
" self.declare(Fact(animal='tiger'))\n",
|
|
"\n",
|
|
" @Rule(Fact('ungulate'),\n",
|
|
" Fact('long neck'),\n",
|
|
" Fact('long legs'),\n",
|
|
" Fact(pattern='dark spots'))\n",
|
|
" def giraffe(self):\n",
|
|
" self.declare(Fact(animal='giraffe'))\n",
|
|
"\n",
|
|
" @Rule(Fact('ungulate'),\n",
|
|
" Fact(pattern='dark stripes'))\n",
|
|
" def zebra(self):\n",
|
|
" self.declare(Fact(animal='zebra'))\n",
|
|
"\n",
|
|
" @Rule(Fact('bird'),\n",
|
|
" Fact('long neck'),\n",
|
|
" Fact('cannot fly'),\n",
|
|
" Fact(color='black and white'))\n",
|
|
" def straus(self):\n",
|
|
" self.declare(Fact(animal='ostrich'))\n",
|
|
"\n",
|
|
" @Rule(Fact('bird'),\n",
|
|
" Fact('swims'),\n",
|
|
" Fact('cannot fly'),\n",
|
|
" Fact(color='black and white'))\n",
|
|
" def pinguin(self):\n",
|
|
" self.declare(Fact(animal='pinguin'))\n",
|
|
"\n",
|
|
" @Rule(Fact('bird'),\n",
|
|
" Fact('flies well'))\n",
|
|
" def albatros(self):\n",
|
|
" self.declare(Fact(animal='albatross'))\n",
|
|
" \n",
|
|
" @Rule(Fact(animal=MATCH.a))\n",
|
|
" def print_result(self,a):\n",
|
|
" print('Animal is {}'.format(a))\n",
|
|
" \n",
|
|
" def factz(self,l):\n",
|
|
" for x in l:\n",
|
|
" self.declare(x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"ஒரு அறிவுத்தளத்தை анықித்துவிட்டவுடன், எங்கள் செயற்பாட்டு நினைவகத்தை சில ஆரம்ப உண்மைகளால் நிரப்பி, பிறகு ஊகிக்கையின் செயல்பாட்டை நடத்தியதற்காக `run()` முறைமையைக் கூப்பிடுகிறோம். நாம் முழுமையாக அனைத்து ஆரம்ப உண்மைகளையும் சரியாக அமைத்தால், இறுதியில் அந்த விலங்கின் பற்றிய சரியான உண்மைகள் செயற்பாட்டு நினைவகத்தில் புதிதாக சேர்க்கப்படுவதை நீங்கள் காணலாம்.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {
|
|
"trusted": true
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Animal is tiger\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"FactList([(0, InitialFact()),\n",
|
|
" (1, Fact(color='red-brown')),\n",
|
|
" (2, Fact(pattern='dark stripes')),\n",
|
|
" (3, Fact('sharp teeth')),\n",
|
|
" (4, Fact('claws')),\n",
|
|
" (5, Fact('forward looking eyes')),\n",
|
|
" (6, Fact('gives milk')),\n",
|
|
" (7, Fact('mammal')),\n",
|
|
" (8, Fact('carnivor')),\n",
|
|
" (9, Fact(animal='tiger'))])"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ex1 = Animals()\n",
|
|
"ex1.reset()\n",
|
|
"ex1.factz([\n",
|
|
" Fact(color='red-brown'),\n",
|
|
" Fact(pattern='dark stripes'),\n",
|
|
" Fact('sharp teeth'),\n",
|
|
" Fact('claws'),\n",
|
|
" Fact('forward looking eyes'),\n",
|
|
" Fact('gives milk')])\n",
|
|
"ex1.run()\n",
|
|
"ex1.facts"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**பொருள் வழங்கல்**: \nஇந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை [Co-op Translator](https://github.com/Azure/co-op-translator) மூலம் மொழிபெயர்க்கப்பட்டுள்ளது. சரியானதற்காக我们 முயற்சிக்கிறோம், இருப்பினும் தானாக生成ப்பட்ட மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதைக் கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் சொந்த மொழியில் அங்கீகாரம் பெறும் ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பின் பயன்பாட்டால் தோன்றும் எந்த தவறானப் புரிதல்கள் அல்லது தவறான விளக்கங்களுக்குமான பொறுப்பும் நாம் ஏற்கவில்லை.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3.7.4 64-bit (conda)",
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5"
|
|
}
|
|
},
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.11.2"
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "8ef43db4b9182239fd150a76bd494fdb",
|
|
"translation_date": "2026-01-16T06:42:24+00:00",
|
|
"source_file": "lessons/2-Symbolic/Animals.ipynb",
|
|
"language_code": "ta"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
} |