├── Introduction.pdf ├── README.md └── week01-How_to_get_started ├── 01 How To Get Started.ipynb └── imgs ├── crawler.png ├── indexer.png ├── ranker.jpg ├── se1.jpg ├── search_engines.jpg ├── string1.jpg ├── string2.jpg └── string3.jpg /Introduction.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/snrazavi/Learning-Python-by-implementing-a-basic-search-engine/63c48de94af54c67b43f0207a542c79573c82854/Introduction.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Learning-Python-by-implementing-a-basic-search-engine 2 | This repository contains all the materials of my workshop about Python Programming. The approach is to learn the important concepts of python and programming by implementing different components of a simple text search engine: Crawler, Indexer and Page ranking algorithm. 3 | 4 | ## Contents 5 | ### Part 1: Implementing the Crawler 6 | - **Week 01:** How To Get Started: A basic introduction to python; Getting a link from a webpage. 7 | - **Week 02**: How To Repeat Code: control flow and functions; Getting all links from a webpage. 8 | - **Week 03**: How To Manage Data: lists in python; Storing collected links. 9 | ### Part 2: Implementing the Indexer 10 | - **Week 04**: How To Respond To Queries: Indexing the contents of the collected webpages. 11 | - **Week 05**: How To Make Things Fast: Using a python dictionary to make indexing much faster. 12 | ### Part 3: Page Ranking 13 | - **Week 06**: How To Have Infinite Power: Recursive functions in python, implementing PageRank algorithm. 14 | 15 | ## Videos in YouTube (in Persian): 16 | - http://www.youtube.com/c/SeyedNaserRazavi 17 | 18 | ## My website Address: 19 | - containing anything you need to learn and of course to use machine learning in real world applications: 20 | - http://wwww.snrazavi.ir/ 21 | 22 | ## The workshop page on my website: 23 | - http://www.snrazavi.ir/python-videos/ 24 | -------------------------------------------------------------------------------- /week01-How_to_get_started/01 How To Get Started.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "nbpresent": { 7 | "id": "661ffa30-f166-462a-a491-a9c184277c6f" 8 | }, 9 | "slideshow": { 10 | "slide_type": "slide" 11 | } 12 | }, 13 | "source": [ 14 | "# Search Engine\n", 15 | "" 16 | ] 17 | }, 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "nbpresent": { 22 | "id": "af3a8905-c12c-47cf-81a3-a4f25f5b560a" 23 | }, 24 | "slideshow": { 25 | "slide_type": "slide" 26 | } 27 | }, 28 | "source": [ 29 | "## Get the first Link from Web\n", 30 | "" 31 | ] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": { 36 | "nbpresent": { 37 | "id": "c65a9bb6-a01e-4af4-8931-16ff76a365c2" 38 | }, 39 | "slideshow": { 40 | "slide_type": "slide" 41 | } 42 | }, 43 | "source": [ 44 | "# Three Basic Functions:\n", 45 | "**Crawling** (week 1, 2, 3)\n", 46 | "--\n", 47 | "" 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": { 53 | "slideshow": { 54 | "slide_type": "slide" 55 | } 56 | }, 57 | "source": [ 58 | "**Indexing** (week 4, 5)\n", 59 | "--\n", 60 | "" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "metadata": { 66 | "slideshow": { 67 | "slide_type": "slide" 68 | } 69 | }, 70 | "source": [ 71 | "**Ranking** (week 6)\n", 72 | "--\n", 73 | "" 74 | ] 75 | }, 76 | { 77 | "cell_type": "markdown", 78 | "metadata": { 79 | "nbpresent": { 80 | "id": "8213fc7c-ed51-4189-a63f-33914b22ca65" 81 | }, 82 | "slideshow": { 83 | "slide_type": "slide" 84 | } 85 | }, 86 | "source": [ 87 | "### QUIZ! \n", 88 | "Write a program to print number of minues in seven weeks" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 1, 94 | "metadata": { 95 | "nbpresent": { 96 | "id": "e1d2d182-5e88-46d6-b4dd-56224572810f" 97 | }, 98 | "slideshow": { 99 | "slide_type": "slide" 100 | } 101 | }, 102 | "outputs": [ 103 | { 104 | "name": "stdout", 105 | "output_type": "stream", 106 | "text": [ 107 | "70560\n" 108 | ] 109 | } 110 | ], 111 | "source": [ 112 | "print 7 * 7 * 24 * 60" 113 | ] 114 | }, 115 | { 116 | "cell_type": "markdown", 117 | "metadata": { 118 | "nbpresent": { 119 | "id": "c87c8fce-ca69-4b92-8f51-5ca5726dc588" 120 | } 121 | }, 122 | "source": [ 123 | "### Syntax Errors" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 2, 129 | "metadata": { 130 | "collapsed": true, 131 | "nbpresent": { 132 | "id": "b3e4a732-15d4-4533-8484-fda6d4917c8e" 133 | } 134 | }, 135 | "outputs": [], 136 | "source": [ 137 | "# print 2 + 3 *" 138 | ] 139 | }, 140 | { 141 | "cell_type": "markdown", 142 | "metadata": { 143 | "nbpresent": { 144 | "id": "92eaab02-79ed-4cbf-807a-eb6402d36ab7" 145 | } 146 | }, 147 | "source": [ 148 | "### QUIZ!\n", 149 | "How far light travels in centimeters in 1 nano seconds?\n", 150 | "- Speed of lights = 299792458 meters/seconds\n", 151 | "- 1 meter = 100 centimeters\n", 152 | "- 1 nano seconds = $10^{-9}$ seconds" 153 | ] 154 | }, 155 | { 156 | "cell_type": "code", 157 | "execution_count": 3, 158 | "metadata": { 159 | "nbpresent": { 160 | "id": "c19593d0-3e17-4a75-a441-2ecfba0056a1" 161 | } 162 | }, 163 | "outputs": [ 164 | { 165 | "name": "stdout", 166 | "output_type": "stream", 167 | "text": [ 168 | "29.9792458\n" 169 | ] 170 | } 171 | ], 172 | "source": [ 173 | "print 299792458 * 100 * 10 ** (-9)" 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "metadata": { 179 | "nbpresent": { 180 | "id": "edca49c4-eafc-4ede-81e3-8008e9486c56" 181 | } 182 | }, 183 | "source": [ 184 | "### Variables" 185 | ] 186 | }, 187 | { 188 | "cell_type": "code", 189 | "execution_count": 4, 190 | "metadata": { 191 | "nbpresent": { 192 | "id": "2b73c2b5-843c-4efe-8900-47ed30621743" 193 | } 194 | }, 195 | "outputs": [ 196 | { 197 | "name": "stdout", 198 | "output_type": "stream", 199 | "text": [ 200 | "299792458\n" 201 | ] 202 | } 203 | ], 204 | "source": [ 205 | "speed_of_lights = 299792458\n", 206 | "\n", 207 | "print speed_of_lights" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 5, 213 | "metadata": { 214 | "nbpresent": { 215 | "id": "80706a09-8b5b-4129-bc63-84c1d0130183" 216 | } 217 | }, 218 | "outputs": [ 219 | { 220 | "name": "stdout", 221 | "output_type": "stream", 222 | "text": [ 223 | "29.9792458\n" 224 | ] 225 | } 226 | ], 227 | "source": [ 228 | "nanostick = speed_of_lights * 10 ** (-9) * 100\n", 229 | "print nanostick" 230 | ] 231 | }, 232 | { 233 | "cell_type": "markdown", 234 | "metadata": { 235 | "nbpresent": { 236 | "id": "c3161d79-7623-48f1-8ae1-68e0f26ac5c6" 237 | } 238 | }, 239 | "source": [ 240 | "### Strings\n", 241 | "A **sequence** of characters between single quotes ' ' or double quotes \" \"." 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "execution_count": 6, 247 | "metadata": { 248 | "nbpresent": { 249 | "id": "34e5e8c9-3a82-4355-ad33-9b2fade4175e" 250 | } 251 | }, 252 | "outputs": [ 253 | { 254 | "name": "stdout", 255 | "output_type": "stream", 256 | "text": [ 257 | "Hello, World!\n" 258 | ] 259 | } 260 | ], 261 | "source": [ 262 | "first_string = 'Hello, World!'\n", 263 | "\n", 264 | "print first_string" 265 | ] 266 | }, 267 | { 268 | "cell_type": "code", 269 | "execution_count": 7, 270 | "metadata": { 271 | "nbpresent": { 272 | "id": "db7e627d-601b-4227-85e3-f52cd299cf42" 273 | } 274 | }, 275 | "outputs": [ 276 | { 277 | "name": "stdout", 278 | "output_type": "stream", 279 | "text": [ 280 | "Hello, World!\n" 281 | ] 282 | } 283 | ], 284 | "source": [ 285 | "second_string = \"Hello, World!\"\n", 286 | "\n", 287 | "print second_string" 288 | ] 289 | }, 290 | { 291 | "cell_type": "code", 292 | "execution_count": 8, 293 | "metadata": { 294 | "nbpresent": { 295 | "id": "954f88b6-872c-4a74-8867-0a8692f66297" 296 | } 297 | }, 298 | "outputs": [ 299 | { 300 | "name": "stdout", 301 | "output_type": "stream", 302 | "text": [ 303 | "To be or not to be, that's the question.\n" 304 | ] 305 | } 306 | ], 307 | "source": [ 308 | "third_string = \"To be or not to be, that's the question.\"\n", 309 | "\n", 310 | "print third_string" 311 | ] 312 | }, 313 | { 314 | "cell_type": "markdown", 315 | "metadata": {}, 316 | "source": [ 317 | "### String Concatination" 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "execution_count": 9, 323 | "metadata": { 324 | "nbpresent": { 325 | "id": "62b0bafd-38a4-4c62-832c-e1a5e5632c1b" 326 | } 327 | }, 328 | "outputs": [ 329 | { 330 | "name": "stdout", 331 | "output_type": "stream", 332 | "text": [ 333 | "HelloJohn\n" 334 | ] 335 | } 336 | ], 337 | "source": [ 338 | "name = \"John\"\n", 339 | "print \"Hello\" + name" 340 | ] 341 | }, 342 | { 343 | "cell_type": "code", 344 | "execution_count": 10, 345 | "metadata": { 346 | "nbpresent": { 347 | "id": "019f3f69-0039-457c-bbcf-599b762897dc" 348 | } 349 | }, 350 | "outputs": [ 351 | { 352 | "name": "stdout", 353 | "output_type": "stream", 354 | "text": [ 355 | "Hello John\n" 356 | ] 357 | } 358 | ], 359 | "source": [ 360 | "print \"Hello \" + name" 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "execution_count": 11, 366 | "metadata": { 367 | "nbpresent": { 368 | "id": "a437cbed-6d6a-4aee-9409-6c6a8382b7aa" 369 | } 370 | }, 371 | "outputs": [ 372 | { 373 | "name": "stdout", 374 | "output_type": "stream", 375 | "text": [ 376 | "Hello John!\n" 377 | ] 378 | } 379 | ], 380 | "source": [ 381 | "print \"Hello \" + name + \"!\"" 382 | ] 383 | }, 384 | { 385 | "cell_type": "code", 386 | "execution_count": 12, 387 | "metadata": { 388 | "collapsed": true, 389 | "nbpresent": { 390 | "id": "a7c691d8-718b-4b01-9bd2-cd0bff871717" 391 | } 392 | }, 393 | "outputs": [], 394 | "source": [ 395 | "age = 30\n", 396 | "\n", 397 | "# print \"I have \" + age + \" years old.\"" 398 | ] 399 | }, 400 | { 401 | "cell_type": "code", 402 | "execution_count": 13, 403 | "metadata": { 404 | "nbpresent": { 405 | "id": "614d896e-a972-4898-a748-40b4b086fc3b" 406 | } 407 | }, 408 | "outputs": [ 409 | { 410 | "name": "stdout", 411 | "output_type": "stream", 412 | "text": [ 413 | "I have 30 years old.\n" 414 | ] 415 | } 416 | ], 417 | "source": [ 418 | "print \"I have \" + str(age) + \" years old.\"" 419 | ] 420 | }, 421 | { 422 | "cell_type": "markdown", 423 | "metadata": {}, 424 | "source": [ 425 | "### Data Types" 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 14, 431 | "metadata": { 432 | "nbpresent": { 433 | "id": "8396d068-62d1-4037-abc4-9314dc357f71" 434 | } 435 | }, 436 | "outputs": [ 437 | { 438 | "name": "stdout", 439 | "output_type": "stream", 440 | "text": [ 441 | "\n" 442 | ] 443 | } 444 | ], 445 | "source": [ 446 | "print type(\"Hello\")" 447 | ] 448 | }, 449 | { 450 | "cell_type": "code", 451 | "execution_count": 15, 452 | "metadata": { 453 | "nbpresent": { 454 | "id": "da48095c-4b45-4781-b661-ff9500951aa2" 455 | } 456 | }, 457 | "outputs": [ 458 | { 459 | "name": "stdout", 460 | "output_type": "stream", 461 | "text": [ 462 | "\n" 463 | ] 464 | } 465 | ], 466 | "source": [ 467 | "print type(30)" 468 | ] 469 | }, 470 | { 471 | "cell_type": "code", 472 | "execution_count": 16, 473 | "metadata": { 474 | "nbpresent": { 475 | "id": "ddf8fb4f-bd09-46ed-90e6-85f2cf3d044a" 476 | } 477 | }, 478 | "outputs": [ 479 | { 480 | "name": "stdout", 481 | "output_type": "stream", 482 | "text": [ 483 | "\n" 484 | ] 485 | } 486 | ], 487 | "source": [ 488 | "print type(3.14)" 489 | ] 490 | }, 491 | { 492 | "cell_type": "code", 493 | "execution_count": 17, 494 | "metadata": { 495 | "nbpresent": { 496 | "id": "85d879f9-9667-41f4-9962-9049ad7b055e" 497 | } 498 | }, 499 | "outputs": [ 500 | { 501 | "name": "stdout", 502 | "output_type": "stream", 503 | "text": [ 504 | "HiHiHi\n" 505 | ] 506 | } 507 | ], 508 | "source": [ 509 | "print \"Hi\" * 3" 510 | ] 511 | }, 512 | { 513 | "cell_type": "markdown", 514 | "metadata": { 515 | "nbpresent": { 516 | "id": "de6a98ba-f676-4b7b-bf4c-cfafb055fc12" 517 | } 518 | }, 519 | "source": [ 520 | "### Indexing Strings" 521 | ] 522 | }, 523 | { 524 | "cell_type": "code", 525 | "execution_count": 18, 526 | "metadata": { 527 | "collapsed": true, 528 | "nbpresent": { 529 | "id": "16d8171f-ec0e-4ffe-8401-cbc01ffc68ef" 530 | } 531 | }, 532 | "outputs": [], 533 | "source": [ 534 | "university_name = \"University of Tabriz\"" 535 | ] 536 | }, 537 | { 538 | "cell_type": "code", 539 | "execution_count": 19, 540 | "metadata": { 541 | "nbpresent": { 542 | "id": "7b45342f-179f-48aa-8811-9f949df574b7" 543 | } 544 | }, 545 | "outputs": [ 546 | { 547 | "name": "stdout", 548 | "output_type": "stream", 549 | "text": [ 550 | "University of Tabriz\n" 551 | ] 552 | } 553 | ], 554 | "source": [ 555 | "print university_name" 556 | ] 557 | }, 558 | { 559 | "cell_type": "markdown", 560 | "metadata": {}, 561 | "source": [ 562 | "" 563 | ] 564 | }, 565 | { 566 | "cell_type": "code", 567 | "execution_count": 20, 568 | "metadata": { 569 | "nbpresent": { 570 | "id": "2ec8f011-f298-4c1e-9db1-3513ee8e622e" 571 | } 572 | }, 573 | "outputs": [ 574 | { 575 | "name": "stdout", 576 | "output_type": "stream", 577 | "text": [ 578 | "U\n" 579 | ] 580 | } 581 | ], 582 | "source": [ 583 | "print university_name[0]" 584 | ] 585 | }, 586 | { 587 | "cell_type": "code", 588 | "execution_count": 21, 589 | "metadata": { 590 | "nbpresent": { 591 | "id": "d88160ef-368e-4cfc-aa3e-6f76ad77b5ad" 592 | } 593 | }, 594 | "outputs": [ 595 | { 596 | "name": "stdout", 597 | "output_type": "stream", 598 | "text": [ 599 | "n\n" 600 | ] 601 | } 602 | ], 603 | "source": [ 604 | "print university_name[1]" 605 | ] 606 | }, 607 | { 608 | "cell_type": "code", 609 | "execution_count": 22, 610 | "metadata": { 611 | "nbpresent": { 612 | "id": "2bd0edae-177a-422c-b923-ae9378f173d5" 613 | } 614 | }, 615 | "outputs": [ 616 | { 617 | "name": "stdout", 618 | "output_type": "stream", 619 | "text": [ 620 | "v\n" 621 | ] 622 | } 623 | ], 624 | "source": [ 625 | "print university_name[1 + 2]" 626 | ] 627 | }, 628 | { 629 | "cell_type": "code", 630 | "execution_count": 23, 631 | "metadata": { 632 | "nbpresent": { 633 | "id": "741b4c82-909c-4fa8-9aa8-305d44bc5aed" 634 | } 635 | }, 636 | "outputs": [ 637 | { 638 | "name": "stdout", 639 | "output_type": "stream", 640 | "text": [ 641 | "20\n" 642 | ] 643 | } 644 | ], 645 | "source": [ 646 | "print len(university_name) # len() returns the length of any string" 647 | ] 648 | }, 649 | { 650 | "cell_type": "code", 651 | "execution_count": 24, 652 | "metadata": { 653 | "nbpresent": { 654 | "id": "369ceb34-cbd0-4d05-8913-4320ca13eb4f" 655 | } 656 | }, 657 | "outputs": [ 658 | { 659 | "name": "stdout", 660 | "output_type": "stream", 661 | "text": [ 662 | "z\n" 663 | ] 664 | } 665 | ], 666 | "source": [ 667 | "print university_name[len(university_name) - 1]" 668 | ] 669 | }, 670 | { 671 | "cell_type": "code", 672 | "execution_count": 25, 673 | "metadata": { 674 | "nbpresent": { 675 | "id": "c49cbece-f142-43b5-8d8b-de9197a491e8" 676 | }, 677 | "scrolled": true 678 | }, 679 | "outputs": [ 680 | { 681 | "name": "stdout", 682 | "output_type": "stream", 683 | "text": [ 684 | "z\n" 685 | ] 686 | } 687 | ], 688 | "source": [ 689 | "n = len(university_name)\n", 690 | "\n", 691 | "print university_name[n - 1]" 692 | ] 693 | }, 694 | { 695 | "cell_type": "markdown", 696 | "metadata": {}, 697 | "source": [ 698 | "### Reverse Indexing" 699 | ] 700 | }, 701 | { 702 | "cell_type": "markdown", 703 | "metadata": {}, 704 | "source": [ 705 | "" 706 | ] 707 | }, 708 | { 709 | "cell_type": "code", 710 | "execution_count": 26, 711 | "metadata": { 712 | "nbpresent": { 713 | "id": "54222e84-b7d7-42f2-b839-a244f096932b" 714 | } 715 | }, 716 | "outputs": [ 717 | { 718 | "name": "stdout", 719 | "output_type": "stream", 720 | "text": [ 721 | "z\n" 722 | ] 723 | } 724 | ], 725 | "source": [ 726 | "print university_name[-1]" 727 | ] 728 | }, 729 | { 730 | "cell_type": "code", 731 | "execution_count": 27, 732 | "metadata": { 733 | "nbpresent": { 734 | "id": "3f0477b2-54ca-4a13-a3e8-7442096436b8" 735 | } 736 | }, 737 | "outputs": [ 738 | { 739 | "name": "stdout", 740 | "output_type": "stream", 741 | "text": [ 742 | "i\n" 743 | ] 744 | } 745 | ], 746 | "source": [ 747 | "print university_name[-2]" 748 | ] 749 | }, 750 | { 751 | "cell_type": "code", 752 | "execution_count": 28, 753 | "metadata": { 754 | "collapsed": true, 755 | "nbpresent": { 756 | "id": "cbbf7198-d887-4514-9a55-28462421fc27" 757 | } 758 | }, 759 | "outputs": [], 760 | "source": [ 761 | "# print university_name[20] # Index Error" 762 | ] 763 | }, 764 | { 765 | "cell_type": "code", 766 | "execution_count": 29, 767 | "metadata": { 768 | "nbpresent": { 769 | "id": "33cb0602-ee83-4c9b-9f3f-1206968ea92f" 770 | } 771 | }, 772 | "outputs": [ 773 | { 774 | "name": "stdout", 775 | "output_type": "stream", 776 | "text": [ 777 | "University\n" 778 | ] 779 | } 780 | ], 781 | "source": [ 782 | "print university_name[0:10]" 783 | ] 784 | }, 785 | { 786 | "cell_type": "code", 787 | "execution_count": 30, 788 | "metadata": { 789 | "nbpresent": { 790 | "id": "28d16f97-650e-4d0f-ab15-7307c999d97e" 791 | } 792 | }, 793 | "outputs": [ 794 | { 795 | "name": "stdout", 796 | "output_type": "stream", 797 | "text": [ 798 | "University\n" 799 | ] 800 | } 801 | ], 802 | "source": [ 803 | "print university_name[:10]" 804 | ] 805 | }, 806 | { 807 | "cell_type": "code", 808 | "execution_count": 31, 809 | "metadata": { 810 | "nbpresent": { 811 | "id": "1240ad92-4c26-484d-b493-06c378838ff5" 812 | } 813 | }, 814 | "outputs": [ 815 | { 816 | "name": "stdout", 817 | "output_type": "stream", 818 | "text": [ 819 | "of\n" 820 | ] 821 | } 822 | ], 823 | "source": [ 824 | "print university_name[11:13]" 825 | ] 826 | }, 827 | { 828 | "cell_type": "code", 829 | "execution_count": 32, 830 | "metadata": { 831 | "nbpresent": { 832 | "id": "9a9a2566-abc3-4598-a3f5-48f857f8ee65" 833 | } 834 | }, 835 | "outputs": [ 836 | { 837 | "name": "stdout", 838 | "output_type": "stream", 839 | "text": [ 840 | "Tabriz\n" 841 | ] 842 | } 843 | ], 844 | "source": [ 845 | "print university_name[14:20]" 846 | ] 847 | }, 848 | { 849 | "cell_type": "code", 850 | "execution_count": 33, 851 | "metadata": { 852 | "nbpresent": { 853 | "id": "7175e031-6035-404d-a5cd-3918aa909f60" 854 | } 855 | }, 856 | "outputs": [ 857 | { 858 | "name": "stdout", 859 | "output_type": "stream", 860 | "text": [ 861 | "Tabriz\n" 862 | ] 863 | } 864 | ], 865 | "source": [ 866 | "print university_name[14:]" 867 | ] 868 | }, 869 | { 870 | "cell_type": "code", 871 | "execution_count": 34, 872 | "metadata": { 873 | "nbpresent": { 874 | "id": "be1b0660-0cde-4c11-81cd-57e64ea1fcc4" 875 | } 876 | }, 877 | "outputs": [ 878 | { 879 | "name": "stdout", 880 | "output_type": "stream", 881 | "text": [ 882 | "University of Tabriz\n" 883 | ] 884 | } 885 | ], 886 | "source": [ 887 | "print university_name[:]" 888 | ] 889 | }, 890 | { 891 | "cell_type": "code", 892 | "execution_count": 35, 893 | "metadata": { 894 | "nbpresent": { 895 | "id": "c69c425a-72b2-4a73-9853-b62d7c1d9117" 896 | } 897 | }, 898 | "outputs": [ 899 | { 900 | "name": "stdout", 901 | "output_type": "stream", 902 | "text": [ 903 | "11\n" 904 | ] 905 | } 906 | ], 907 | "source": [ 908 | "print university_name.find('of') # return the index of first occurance of the input string " 909 | ] 910 | }, 911 | { 912 | "cell_type": "code", 913 | "execution_count": 36, 914 | "metadata": { 915 | "nbpresent": { 916 | "id": "10e719f2-8f96-4f43-beab-4c263bfd0965" 917 | } 918 | }, 919 | "outputs": [ 920 | { 921 | "name": "stdout", 922 | "output_type": "stream", 923 | "text": [ 924 | "14\n" 925 | ] 926 | } 927 | ], 928 | "source": [ 929 | "print university_name.find('Tabriz')" 930 | ] 931 | }, 932 | { 933 | "cell_type": "code", 934 | "execution_count": 37, 935 | "metadata": { 936 | "nbpresent": { 937 | "id": "1426daa0-0569-4328-9209-e477ca12e9d8" 938 | } 939 | }, 940 | "outputs": [ 941 | { 942 | "name": "stdout", 943 | "output_type": "stream", 944 | "text": [ 945 | "-1\n" 946 | ] 947 | } 948 | ], 949 | "source": [ 950 | "print university_name.find('tabriz')" 951 | ] 952 | }, 953 | { 954 | "cell_type": "code", 955 | "execution_count": 38, 956 | "metadata": { 957 | "nbpresent": { 958 | "id": "2a963a78-0419-4f66-bfeb-13eaf9a006c8" 959 | } 960 | }, 961 | "outputs": [ 962 | { 963 | "name": "stdout", 964 | "output_type": "stream", 965 | "text": [ 966 | "2\n" 967 | ] 968 | } 969 | ], 970 | "source": [ 971 | "print university_name.find('i')" 972 | ] 973 | }, 974 | { 975 | "cell_type": "code", 976 | "execution_count": 39, 977 | "metadata": { 978 | "collapsed": true, 979 | "nbpresent": { 980 | "id": "029dd76f-0422-46d3-b645-548b1812680b" 981 | } 982 | }, 983 | "outputs": [], 984 | "source": [ 985 | "s = \"To be or not to be, that's the question\"" 986 | ] 987 | }, 988 | { 989 | "cell_type": "markdown", 990 | "metadata": {}, 991 | "source": [ 992 | "" 993 | ] 994 | }, 995 | { 996 | "cell_type": "code", 997 | "execution_count": 40, 998 | "metadata": { 999 | "nbpresent": { 1000 | "id": "e9196682-a4fc-464f-a341-cfe5f15114cf" 1001 | } 1002 | }, 1003 | "outputs": [ 1004 | { 1005 | "name": "stdout", 1006 | "output_type": "stream", 1007 | "text": [ 1008 | "3\n" 1009 | ] 1010 | } 1011 | ], 1012 | "source": [ 1013 | "print s.find('be')" 1014 | ] 1015 | }, 1016 | { 1017 | "cell_type": "code", 1018 | "execution_count": 41, 1019 | "metadata": { 1020 | "nbpresent": { 1021 | "id": "7433520d-e1ca-4793-a909-86fbd7660bb9" 1022 | } 1023 | }, 1024 | "outputs": [ 1025 | { 1026 | "name": "stdout", 1027 | "output_type": "stream", 1028 | "text": [ 1029 | "3\n" 1030 | ] 1031 | } 1032 | ], 1033 | "source": [ 1034 | "print s.find('be', 3)" 1035 | ] 1036 | }, 1037 | { 1038 | "cell_type": "code", 1039 | "execution_count": 42, 1040 | "metadata": { 1041 | "nbpresent": { 1042 | "id": "9e440165-c678-4e32-9ed5-cefb19c900fc" 1043 | } 1044 | }, 1045 | "outputs": [ 1046 | { 1047 | "name": "stdout", 1048 | "output_type": "stream", 1049 | "text": [ 1050 | "16\n" 1051 | ] 1052 | } 1053 | ], 1054 | "source": [ 1055 | "print s.find('be', 4)" 1056 | ] 1057 | }, 1058 | { 1059 | "cell_type": "markdown", 1060 | "metadata": { 1061 | "nbpresent": { 1062 | "id": "93bd2ee2-4857-4903-8ce0-959446a0fcf8" 1063 | } 1064 | }, 1065 | "source": [ 1066 | "### Getting Help" 1067 | ] 1068 | }, 1069 | { 1070 | "cell_type": "code", 1071 | "execution_count": 43, 1072 | "metadata": { 1073 | "collapsed": true, 1074 | "nbpresent": { 1075 | "id": "a6a4439d-61ec-494a-9d64-9f89439dc25f" 1076 | } 1077 | }, 1078 | "outputs": [], 1079 | "source": [ 1080 | "# s.find?" 1081 | ] 1082 | }, 1083 | { 1084 | "cell_type": "code", 1085 | "execution_count": 44, 1086 | "metadata": { 1087 | "nbpresent": { 1088 | "id": "7a431b66-251d-42a0-a9a7-6fb6847e09fa" 1089 | } 1090 | }, 1091 | "outputs": [ 1092 | { 1093 | "name": "stdout", 1094 | "output_type": "stream", 1095 | "text": [ 1096 | "Help on built-in function find:\n", 1097 | "\n", 1098 | "find(...)\n", 1099 | " S.find(sub [,start [,end]]) -> int\n", 1100 | " \n", 1101 | " Return the lowest index in S where substring sub is found,\n", 1102 | " such that sub is contained within S[start:end]. Optional\n", 1103 | " arguments start and end are interpreted as in slice notation.\n", 1104 | " \n", 1105 | " Return -1 on failure.\n", 1106 | "\n" 1107 | ] 1108 | } 1109 | ], 1110 | "source": [ 1111 | "help(s.find)" 1112 | ] 1113 | }, 1114 | { 1115 | "cell_type": "code", 1116 | "execution_count": 45, 1117 | "metadata": { 1118 | "nbpresent": { 1119 | "id": "99e0c81b-5cc5-46cb-a356-01f1280f2cee" 1120 | } 1121 | }, 1122 | "outputs": [ 1123 | { 1124 | "data": { 1125 | "text/plain": [ 1126 | "['__add__',\n", 1127 | " '__class__',\n", 1128 | " '__contains__',\n", 1129 | " '__delattr__',\n", 1130 | " '__doc__',\n", 1131 | " '__eq__',\n", 1132 | " '__format__',\n", 1133 | " '__ge__',\n", 1134 | " '__getattribute__',\n", 1135 | " '__getitem__',\n", 1136 | " '__getnewargs__',\n", 1137 | " '__getslice__',\n", 1138 | " '__gt__',\n", 1139 | " '__hash__',\n", 1140 | " '__init__',\n", 1141 | " '__le__',\n", 1142 | " '__len__',\n", 1143 | " '__lt__',\n", 1144 | " '__mod__',\n", 1145 | " '__mul__',\n", 1146 | " '__ne__',\n", 1147 | " '__new__',\n", 1148 | " '__reduce__',\n", 1149 | " '__reduce_ex__',\n", 1150 | " '__repr__',\n", 1151 | " '__rmod__',\n", 1152 | " '__rmul__',\n", 1153 | " '__setattr__',\n", 1154 | " '__sizeof__',\n", 1155 | " '__str__',\n", 1156 | " '__subclasshook__',\n", 1157 | " '_formatter_field_name_split',\n", 1158 | " '_formatter_parser',\n", 1159 | " 'capitalize',\n", 1160 | " 'center',\n", 1161 | " 'count',\n", 1162 | " 'decode',\n", 1163 | " 'encode',\n", 1164 | " 'endswith',\n", 1165 | " 'expandtabs',\n", 1166 | " 'find',\n", 1167 | " 'format',\n", 1168 | " 'index',\n", 1169 | " 'isalnum',\n", 1170 | " 'isalpha',\n", 1171 | " 'isdigit',\n", 1172 | " 'islower',\n", 1173 | " 'isspace',\n", 1174 | " 'istitle',\n", 1175 | " 'isupper',\n", 1176 | " 'join',\n", 1177 | " 'ljust',\n", 1178 | " 'lower',\n", 1179 | " 'lstrip',\n", 1180 | " 'partition',\n", 1181 | " 'replace',\n", 1182 | " 'rfind',\n", 1183 | " 'rindex',\n", 1184 | " 'rjust',\n", 1185 | " 'rpartition',\n", 1186 | " 'rsplit',\n", 1187 | " 'rstrip',\n", 1188 | " 'split',\n", 1189 | " 'splitlines',\n", 1190 | " 'startswith',\n", 1191 | " 'strip',\n", 1192 | " 'swapcase',\n", 1193 | " 'title',\n", 1194 | " 'translate',\n", 1195 | " 'upper',\n", 1196 | " 'zfill']" 1197 | ] 1198 | }, 1199 | "execution_count": 45, 1200 | "metadata": {}, 1201 | "output_type": "execute_result" 1202 | } 1203 | ], 1204 | "source": [ 1205 | "dir(s)" 1206 | ] 1207 | }, 1208 | { 1209 | "cell_type": "markdown", 1210 | "metadata": { 1211 | "nbpresent": { 1212 | "id": "9cca194d-e406-44ae-af19-2b6ad5947b80" 1213 | } 1214 | }, 1215 | "source": [ 1216 | "### Multi-line Strings" 1217 | ] 1218 | }, 1219 | { 1220 | "cell_type": "code", 1221 | "execution_count": 46, 1222 | "metadata": { 1223 | "collapsed": true, 1224 | "nbpresent": { 1225 | "id": "7882009b-8226-4032-92e3-0f36b5812c94" 1226 | } 1227 | }, 1228 | "outputs": [], 1229 | "source": [ 1230 | "s = \"\"\"Sometimes a string may be very long.\n", 1231 | "In this case we can use triple quotes for\n", 1232 | "strings which are multi-line strings.\"\"\"" 1233 | ] 1234 | }, 1235 | { 1236 | "cell_type": "code", 1237 | "execution_count": 47, 1238 | "metadata": { 1239 | "nbpresent": { 1240 | "id": "6e0b640d-7fd1-4df9-afaf-7a2cedb94f8a" 1241 | } 1242 | }, 1243 | "outputs": [ 1244 | { 1245 | "name": "stdout", 1246 | "output_type": "stream", 1247 | "text": [ 1248 | "Sometimes a string may be very long.\n", 1249 | "In this case we can use triple quotes for\n", 1250 | "strings which are multi-line strings.\n" 1251 | ] 1252 | } 1253 | ], 1254 | "source": [ 1255 | "print s" 1256 | ] 1257 | }, 1258 | { 1259 | "cell_type": "markdown", 1260 | "metadata": { 1261 | "nbpresent": { 1262 | "id": "e0a07bbe-7ea1-4703-9588-d074bac0d126" 1263 | } 1264 | }, 1265 | "source": [ 1266 | "## Extracting links from a web page" 1267 | ] 1268 | }, 1269 | { 1270 | "cell_type": "code", 1271 | "execution_count": 48, 1272 | "metadata": { 1273 | "nbpresent": { 1274 | "id": "38984b24-d19a-4e75-8ada-e405fc3ed8c2" 1275 | } 1276 | }, 1277 | "outputs": [ 1278 | { 1279 | "name": "stdout", 1280 | "output_type": "stream", 1281 | "text": [ 1282 | "\r\n", 1283 | "\r\n", 1284 | "\r\n", 1285 | " \r\n", 1286 | " \r\n", 1287 | " \r\n", 1288 | " \r\n", 1289 | " وب سایت شخصی دکتر سید ناصر رضوی | آزمایشگاه هوش محاسباتی و یادگیری ماشین (همیاد)\n", 1290 | "\n", 1291 | "\n", 1292 | "\n", 1293 | "\n", 1294 | "\n", 1295 | "\n", 1296 | "\n", 1297 | "\n", 1298 | "\n", 1299 | "\n", 1300 | "\n", 1301 | "\n", 1302 | "\n", 1303 | "\n", 1304 | "\n", 1305 | "\n", 1306 | "\n", 1307 | "\n", 1308 | "\n", 1309 | "\n", 1310 | "\n", 1311 | "\t\t\n", 1315 | "\t\t\n", 1329 | "\n", 1330 | "\n", 1333 | "\n", 1334 | "\n", 1335 | "\n", 1336 | "\n", 1337 | "\n", 1338 | "\n", 1339 | "\n", 1340 | "\n", 1341 | "\n", 1342 | "\n", 1343 | "\n", 1344 | " \n", 1345 | "\n", 1346 | "\n", 1347 | "\n", 1370 | "\n", 1371 | " \n", 1604 | " \n", 1605 | "\r\n", 1606 | "\r\n", 1607 | "\r\n", 1608 | "\r\n", 1609 | "
\r\n", 1610 | " Skip to content\r\n", 1611 | "\r\n", 1612 | "
\r\n", 1613 | "\t\t\t\r\n", 1614 | "\t\t\t\r\n", 1615 | "
\r\n", 1616 | "\t\t\t\t
\r\n", 1617 | "\t\t\t\t\t

\r\n", 1618 | "\t\t\t\t\t\tوب سایت شخصی دکتر سید ناصر رضوی\r\n", 1619 | "\t\t\t\t\t\t\r\n", 1620 | "\t\t\t\t\t

\r\n", 1621 | "\t\t\t\t\t\t\t\t\t\t\t\tآزمایشگاه هوش محاسباتی و یادگیری ماشین (همیاد)\r\n", 1622 | "\t\t\t\t\t\t \r\n", 1623 | "\t\t\t\t
\t\t\t\t\r\n", 1624 | "
\r\n", 1625 | "\t\t\t
\r\n", 1626 | " \r\n", 1627 | "\r\n", 1628 | "\t\t\t
\r\n", 1629 | "
\r\n", 1630 | "
MENU
\r\n", 1631 | "
\r\n", 1632 | " \r\n", 1637 | " \r\n", 1638 | "
\r\n", 1639 | "
\r\n", 1640 | "\r\n", 1641 | "\r\n", 1642 | "
\r\n", 1643 | "\r\n", 1644 | "
\r\n", 1645 | "\r\n", 1646 | "
\r\n", 1647 | "
\r\n", 1648 | "\t\r\n", 1649 | "
\r\n", 1650 | "
\r\n", 1651 | "

چگونه یادگیری عمیق را عمیق یاد بگیرم؟

\r\n", 1652 | " \r\n", 1653 | "
\r\n", 1654 | " \r\n", 1655 | "
\r\n", 1656 | " \r\n", 1657 | " \t\r\n", 1658 | "
\r\n", 1659 | " \r\n", 1660 | " \"یادگیری\r\n", 1661 | "

در چند سال گذشته، یادگیری ژرف یا یادگیری عمیق به یکی از جذاب‌ترین زمینه‌های پژوهشی تبدیل گشته و دستاوردهای بسیاری نیز در حوزه‌های گوناگون به دنبال داشته است. در این نوشته نکاتی چند به منظور راهنمایی افراد علاقمند به پژوهش در این حوزه بسیار جذاب ارائه می‌گردد.

\n", 1662 | "
\r\n", 1663 | " \r\n", 1664 | " \r\n", 1667 | " \r\n", 1668 | "
\r\n", 1669 | "\r\n", 1670 | " \r\n", 1671 | "
\r\n", 1672 | "\r\n", 1673 | "\r\n", 1674 | "
\r\n", 1675 | "
\r\n", 1676 | "

یادگیری عمیق: فرصت‌ها و چالش‌ها

\r\n", 1677 | " \r\n", 1678 | "
\r\n", 1679 | " \r\n", 1680 | "
\r\n", 1681 | " \r\n", 1682 | " \t\r\n", 1683 | "
\r\n", 1684 | " \r\n", 1685 | " \"یادگیری\r\n", 1686 | "

سخنرانی درباره یادگیری ژرف (یادگیری عمیق) به مناسبت هفته پژوهش در دانشگاه تبریز

\n", 1687 | "
\r\n", 1688 | " \r\n", 1689 | " \r\n", 1692 | " \r\n", 1693 | "
\r\n", 1694 | "\r\n", 1695 | " \r\n", 1696 | "
\r\n", 1697 | "\r\n", 1698 | "\r\n", 1699 | "
\r\n", 1700 | "
\r\n", 1701 | "

اسلایدهای برنامه‌نویسی کاربردی با جاوا

\r\n", 1702 | " \r\n", 1703 | "
\r\n", 1704 | " \r\n", 1705 | "
\r\n", 1706 | " \r\n", 1707 | " \t\r\n", 1708 | "
\r\n", 1709 | " \r\n", 1710 | " \"برنامه\r\n", 1711 | "

در این درس با زبان برنامه‌نویسی جاوا که یکی از پرطرفدارترین و پرکاربردترین زبان‌های برنامه‌نویسی روز دنیا است آشنا می‌شوید. در مطالب ارائه شده در این درس تلاش گردیده است به شیوه‌ای کاربردی و از طریق حل مسائل گوناگون در حوزه‌های مختلف علمی (مانند بازیابی اطلاعات، مسئله تراوش در فیزیک، مسئله شبیه‌سازی چندجسمی)، مفاهیم مهم برنامه‌نویسی و برنامه‌نویسی شی‌گرایی با استفاده از زبان جاوا معرفی گردند.
\n", 1712 | "دانشگاه تبریز، دانشکده مهندسی برق و کامپیوتر، گروه مهندسی کامپیوتر

\n", 1713 | "
\r\n", 1714 | " \r\n", 1715 | " \r\n", 1718 | " \r\n", 1719 | "
\r\n", 1720 | "\r\n", 1721 | " \r\n", 1722 | "
\r\n", 1723 | "\r\n", 1724 | "\r\n", 1725 | "
\r\n", 1726 | "
\r\n", 1727 | "

اسلایدهای درس ساختمان داده‌ها و الگوریتم‌ها

\r\n", 1728 | " \r\n", 1729 | "
\r\n", 1730 | " \r\n", 1731 | "
\r\n", 1732 | " \r\n", 1733 | " \t\r\n", 1734 | "
\r\n", 1735 | " \r\n", 1736 | " \"کتاب\r\n", 1737 | "

ساختمان داده‌ها یا داده ساختار‌ها، از بنیادی‌ترین مباحث مورد نیاز جهت یادگیری و درک بسیاری از مفاهیم عمده در علوم رایانه و یکی از مهم‌ترین دروس دوره کارشناسی برای دانشجویان رشته کامپیوتر است. هدف از مطالعه این درس یادگیری روش‌های پرکاربرد به منظور سازمان دادن داده‌ها در حافظه رایانه به یک روش ویژه و بر پایه یک مدل منطقی یا ریاضی است؛ به گونه‌ای که بتوان از داده‌های موجود به صورت بهینه استفاده نمود. داده ساختار‌ها انواع گوناگونی دارند که هر کدام مناسب برنامه‌های مختلفی هستند. در این درس با پرکاربردترین آنها مانند لیست، صف و پشته، درخت و گراف آشنا می‌شوید.
\n", 1738 | "دانشگاه تبریز، دانشکده مهندسی برق و کامپیوتر، گروه مهندسی کامپیوتر

\n", 1739 | "
\r\n", 1740 | " \r\n", 1741 | " \r\n", 1744 | " \r\n", 1745 | "
\r\n", 1746 | "\r\n", 1747 | " \r\n", 1748 | "
\r\n", 1749 | "\r\n", 1750 | "\r\n", 1751 | "
\r\n", 1752 | "
\r\n", 1753 | "

اسلایدهای درس تحلیل و طراحی الگوریتم‌ها

\r\n", 1754 | " \r\n", 1755 | "
\r\n", 1756 | " \r\n", 1757 | "
\r\n", 1758 | " \r\n", 1759 | " \t\r\n", 1760 | "
\r\n", 1761 | " \r\n", 1762 | " \"یادگیری\r\n", 1763 | "

اسلایدهای درس تحلیل و طراحی الگوریتم‌ها بر اساس کتاب «مبانی طراحی الگوریتم‌ها» (ریچارد نیپولیتان و کیومرث نعیمی‌پور). در این درس با روش‌های تحلیل الگوریتم‌ها و همچنین برخی از مهم‌ترین روش‌های طراحی الگوریتم‌ها مانند تقسیم و حل، برنامه‌ریزی پویا و حریصانه آشنا می‌شوید.
\n", 1764 | "دانشگاه تبریز، دانشکده مهندسی برق و کامپیوتر، گروه مهندسی کامپیوتر

\n", 1765 | "
\r\n", 1766 | " \r\n", 1767 | " \r\n", 1770 | " \r\n", 1771 | "
\r\n", 1772 | "\r\n", 1773 | " \r\n", 1774 | "
\r\n", 1775 | "\r\n", 1776 | "\r\n", 1777 | "
\r\n", 1778 | "
\r\n", 1779 | "

چالش فارسی‌نویسی

\r\n", 1780 | " \r\n", 1781 | "
\r\n", 1782 | " \r\n", 1783 | "
\r\n", 1784 | " \r\n", 1785 | " \t\r\n", 1786 | "
\r\n", 1787 | " \r\n", 1788 | " \"فارسی\r\n", 1789 | "

بیایید فارسی بنویسیم

\n", 1790 | "

در سال‌هایی که گذشت، هر روز با یک فراخوان برای انجام یک چالش جدید روبه‌رو شدیم (از چاش آب یخ تا چالش مانکن و …). من هم امروز می‌خواهم همه ایرانی‌ها و به ویژه اساتید، دانشجویان، دانش‌آموختگان و پژوهشگران گرامی را به انجام یک چالش جدید فرا بخوانم: «چالش فارسی بنویسیم».

\n", 1791 | "

گزاف نیست اگر بگویم شمار بسیاری از پژوهشگران، دانشجویان و دانش‌آموختگان و اساتید، کمتر به فارسی‌نویسی می‌اندیشند و بدتر آن که می‌بینیم شماری بر استفاده از واژه‌های زبان‌های بیگانه (به ویژه انگلیسی و فرانسه و حتی عربی) پافشاری می‌کنند و به نوعی به کار بردن این گونه واژگان را در گفتار و نوشتار خویش نشانی بر باسوادی و روشن‌فکری و فرهنگ بالاتر می‌دانند. در نشست‌های گوناگون بسیاری بوده‌ام (همانند نشست‌هایی در پیوند با دفاعیه از پایان‌نامه‌های کارشناسی ارشد و رساله‌های دکترا) که سخنران تنها در برخی موارد، برخی از افعال را به زبان فارسی می‌گفت و دیگر واژه‌هایش همگی انگلیسی بوده‌اند (آن هم با گویش نادرست). حتی در مواردی که به استفاده از واژگان فارسی گوشزد نموده‌ام، شماری بودند که می‌گفتند واژگان تخصصی را نباید ترجمه کرد و باید به همان زبان اصلی بیان نمود.

\n", 1792 | "

من از این پس در زمینه کاری خودم هرجا با واژه‌ای غیر از فارسی روبه‌رو شوم که برابر فارسی داشته باشد و یا بتوانم جایگزین فارسی مناسبی پیشنهاد دهم، در همین نوشته به آن اشاره خواهم نمود. از همه آنهایی که با من هم‌عقیده هستند نیز می‌خواهم اگر دوست داشتند به این چالش بپیوندند و واژه بیگانه و افزون بر آن واژه جایگزین پیشنهادی خود را در اینجا بیاورند.

\n", 1793 | "

یک پیشنهاد. در بیشتر موارد با یک جستجوی ساده در تارنمای ویکی‌پدیا، می‌توان جایگزین‌های مناسبی برای واژه‌های تخصصی بیگانه پیدا نمود.

\n", 1794 | "

 

\n", 1795 | "
\r\n", 1796 | " \r\n", 1797 | " \r\n", 1800 | " \r\n", 1801 | "
\r\n", 1802 | "\r\n", 1803 | " \r\n", 1804 | "
\r\n", 1805 | "\r\n", 1806 | "\r\n", 1807 | "
\r\n", 1808 | "
\r\n", 1809 | "

چگونه پروپوزال (طرح‌نامه) بنویسیم؟

\r\n", 1810 | " \r\n", 1811 | "
\r\n", 1812 | " \r\n", 1813 | "
\r\n", 1814 | " \r\n", 1815 | " \t\r\n", 1816 | "
\r\n", 1817 | " \r\n", 1818 | " \"هوش\r\n", 1819 | "

چگونه یک پروپوزال خوب بنویسیم؟

\n", 1820 | "

نوشتن یک پروپوزال خوب همواره یکی از دغدغه‌های اصلی دانشجویان دوره کارشناسی ارشد و دکترا و همچنین اساتید (!) بوده و هست. (البته اگر راستش را بخواهید، خودم نسبت به درستی این گفته بسیار تردید دارم؛ ولی به هر روی به نگارش در این باره ادامه می‌دهم، به امید آن که دست‌کم برای شمار اندکی از دوستان که چنین دغدغه‌هایی دارند کمک کننده باشد). برای نوشتن یک پروپوزال خوب، در کنار برگزیدن یک موضوع خوب، باید در نگارش درست پروپوزال نیز تلاش نمود. در این نوشته می‌خواهم به نکات مهم و اشکالاتی که در نگارش نخستین نسخه پروپوزال در میان بیشتر دانشجوها به چشم می‌خورد بپردازم. در این راستا، یک نمونه پروپوزال با نگارش نامناسب (پروپوزال ۱) را با یک نمونه پروپوزال با نگارش درست و مناسب (پروپوزال ۲) مقایسه خواهیم نمود.

\n", 1821 | "

یادآوری ۱. گفتنی است پروپوزال‌هایی که در ادامه این نوشته به آنها اشاره شده است، مربوط به دانشجویان دوره‌های قبلی اینجانب است و موضوع آنها پیشتر ثبت گردیده است. بنابراین خواهش می‌کنم به جای نسخه‌برداری از روی آنها، به نکات اشاره شده دقت بفرمایید.

\n", 1822 | "

یادآوری ۲. بسیار دوست داشتم و می‌پسندیدم در این نوشته به جای واژه «پروپوزال»، واژه «طرح‌نامه» را به کار ببرم؛ اما از آنجا که شاید این واژه برای شمار زیادی ناآشنا باشد، همان واژه پروپوزال را به کار خواهم برد (پس بر من خرده نگیرید).

\n", 1823 | "

در آغاز به پروپوزال (۱) بپردازیم که از نگارش خوبی برخوردار نیست (دانلود).

\n", 1824 | "

۱ – خواهش می‌کنم فایل پی‌دی‌اف پروپوزال بالا را دانلود کرده و آن را مطالعه کنید.

\n", 1825 | "

۲ – به واژه‌ها و جملات برجسته شده (به گویش فرنگی‌ها، های‌لایت شده) و توضیحاتی که در کنار آنها نوشته‌ام، دقت فرمایید.

\n", 1826 | "

۳ – اشکالات مطرح شده را برای خودتان دسته‌بندی کنید و سپس بر اساس نظر خودتان، آنها را اولویت‌بندی نمایید (اگر دوست داشتید، نتیجه را با ما در میان بگذارید).

\n", 1827 | "

اکنون به پروپوزال (۲) بپردازیم که شیوه نگارش آن (به نسبت!) پذیرفتنی است (دانلود).

\n", 1828 | "

۱ – خواهش می‌کنم فایل پی‌دی‌اف مربوط به پروپوزال (۲) را دانلود نموده و به دقت مطالعه کنید (بدون توجه به موضوع و با تأکید بر ساختار)

\n", 1829 | "

۲ – سعی کنید نمونه ایرادات مطرح شده در پروپوزال (۱) را در این پروپوزال پیدا کنید.

\n", 1830 | "

۳ – نکاتی را که به منظور بهبود این پروپوزال به نظرتان می‌آید، یادداشت کنید (و اگر دوست داشتید، با ما نیز در میان بگذارید).

\n", 1831 | "
\r\n", 1832 | " \r\n", 1833 | " \r\n", 1836 | " \r\n", 1837 | "
\r\n", 1838 | "\r\n", 1839 | " \r\n", 1840 | "
\r\n", 1841 | "\r\n", 1842 | "\r\n", 1843 | "
\r\n", 1844 | "
\r\n", 1845 | "

اسلایدهای درس هوش مصنوعی

\r\n", 1846 | " \r\n", 1847 | "
\r\n", 1848 | " \r\n", 1849 | "
\r\n", 1850 | " \r\n", 1851 | " \t\r\n", 1852 | "
\r\n", 1853 | " \r\n", 1854 | " \"هوش\r\n", 1855 | "

تا کنون تعاریف متفاوتی برای هوش مصنوعی ارائه شده و رویکردهای گوناگونی نیز برای رسیدن به اهداف هوش مصنوعی دنبال شده است. در این درس که مطالب آن بر اساس ویراست سوم پرطرفدارترین کتاب هوش مصنوعی یعنی «هوش مصنوعی: رویکردی نوین» تهیه و تنظیم شده است، هوش مصنوعی به صورت «دانش مطالعه و ساخت عامل‌های هوشمند» تعریف شده است و در بخش‌های آن مختلف سعی شده است عامل‌هایی برای حل مسائل گوناگون (از ساده‌ترین مسائل مانند مسیریابی روی نقشه تا پیچیده‌ترین مسائل در دنیای واقعی مانند طراحی یک خودروی هوشمند و بدون راننده) طراحی و پیاده‌سازی گردد.

\n", 1856 | "
\r\n", 1857 | " \r\n", 1858 | " \r\n", 1861 | " \r\n", 1862 | "
\r\n", 1863 | "\r\n", 1864 | " \r\n", 1865 | "
\r\n", 1866 | "\r\n", 1867 | "\r\n", 1868 | "
\r\n", 1869 | "
\r\n", 1870 | "

اسلایدها و ویدیوهای درس یادگیری ماشین

\r\n", 1871 | " \r\n", 1872 | "
\r\n", 1873 | " \r\n", 1874 | "
\r\n", 1875 | " \r\n", 1876 | " \t\r\n", 1877 | "
\r\n", 1878 | " \r\n", 1879 | " \"کتاب\r\n", 1880 | "

یادگیری ماشین یکی از مهم‌ترین دروس رشته هوش مصنوعی در دوره کارشناسی ارشد و پایه بسیاری از دروس دیگر مانند بازشناسی الگو، پردازش تصویر، بینایی ماشین، پردازش زبان طبیعی و پردازش گفتار است. در این درس با مفاهیم پایه و برخی از مهم‌ترین روش‌ها و الگوریتم‌های یادگیری ماشین مانند رگرسیون، رگرسیون لجستیک، شبکه‌های عصبی، ماشین‌های بردار پشتیبان، خوشه‌بندی، کاهش ابعاد و تحلیل مؤلفه‌های اصلی، سامانه‌های توصیه‌گر و تشخیص آنومالی آشنا می‌شوید.
\n", 1881 | "دانشگاه تبریز، دانشکده مهندسی برق و کامپیوتر، گروه مهندسی کامپیوتر

\n", 1882 | "
\r\n", 1883 | " \r\n", 1884 | " \r\n", 1887 | " \r\n", 1888 | "
\r\n", 1889 | "\r\n", 1890 | " \r\n", 1891 | "
\r\n", 1892 | "\r\n", 1893 | "\r\n", 1894 | "
\r\n", 1895 | "
\r\n", 1896 | "

دوره آموزش پایتون و پیاده‌سازی جویشگر متنی

\r\n", 1897 | " \r\n", 1898 | "
\r\n", 1899 | " \r\n", 1900 | "
\r\n", 1901 | " \r\n", 1902 | " \t\r\n", 1903 | "
\r\n", 1904 | " \r\n", 1905 | " \"پوستر\r\n", 1906 | "

هدف این دوره آشنایی با زبان برنامه‌نویسی پایتون از طریق پیاده‌سازی بخش‌های اصلی یک جویشگر متنی شامل خزشگر، نمایه‌ساز و رتبه‌بند صفحات است. دانشجویان در هر جلسه در کنار پیاده‌سازی هر یک از بخش‌های اصلی جویشگر، با مفاهیم مهم برنامه‌نویسی و پیاده‌سازی این مفاهیم با استفاده از زبان برنامه‌نویسی پرطرفدار پایتون آشنا می‌شوند.
\n", 1907 | "دانشکده مهندسی برق و کامپیوتر دانشگاه تبریز

\n", 1908 | "
\r\n", 1909 | " \r\n", 1910 | " \r\n", 1913 | " \r\n", 1914 | "
\r\n", 1915 | "\r\n", 1916 | " \r\n", 1917 | "
\r\n", 1918 | "\r\n", 1919 | "\r\n", 1920 | "
\r\n", 1921 | "
\r\n", 1922 | "

دوره پاییزه یادگیری عمیق (یادگیری ژرف)

\r\n", 1923 | " \r\n", 1924 | "
\r\n", 1925 | " \r\n", 1926 | "
\r\n", 1927 | " \r\n", 1928 | " \t\r\n", 1929 | "
\r\n", 1930 | " \r\n", 1931 | " \"پوستر\r\n", 1932 | "

اسلایدها و ویدیوهای «دوره پاییزه یادگیری عمیق»، برگزار شده در پژوهشگاه ارتباطات و فناوری اطلاعات، ۱۲ مهر ۱۳۹۶

\n", 1933 | "
\r\n", 1934 | " \r\n", 1935 | " \r\n", 1938 | " \r\n", 1939 | "
\r\n", 1940 | "\r\n", 1941 | " \r\n", 1942 | "
\r\n", 1943 | "\r\n", 1944 | "\r\n", 1945 | "
\r\n", 1946 | "
\r\n", 1947 | "

کارگاه یادگیری ماشین با پایتون

\r\n", 1948 | " \r\n", 1949 | "
\r\n", 1950 | " \r\n", 1951 | "
\r\n", 1952 | " \r\n", 1953 | " \t\r\n", 1954 | "
\r\n", 1955 | " \r\n", 1956 | " \"دوره\r\n", 1957 | "

«کارگاه یادگیری ماشین با پایتون» در دانشکده مهندسی برق و کامپیوتر دانشگاه تبریز (پاییز ۱۳۹۶)
\n", 1958 | "برای دیدن سرفصل مباحث ارائه شده و مشاهده ویدیوها به متن نوشته مراجعه نمایید.

\n", 1959 | "
\r\n", 1960 | " \r\n", 1961 | " \r\n", 1964 | " \r\n", 1965 | "
\r\n", 1966 | "\r\n", 1967 | " \r\n", 1968 | "
\r\n", 1969 | "\r\n", 1970 | "\r\n", 1971 | "
\r\n", 1972 | "
\r\n", 1973 | "

عنوان پروژه‌های پیشنهادی برای دانشجویان ارشد و دکترا (۲۰۱۷)

\r\n", 1974 | " \r\n", 1975 | "
\r\n", 1976 | " \r\n", 1977 | "
\r\n", 1978 | " \r\n", 1979 | " \t\r\n", 1980 | "
\r\n", 1981 | " \r\n", 1982 | " […]

عناوین پروژه‌های پیشنهادی در آزمایشگاه هوش محاسباتی و یادگیری ماشین پردازش تصویر و یادگیری عمیق طراحی و پیاده‌سازی جویشگر چهره یک سامانه بازیابی تصویر بر اساس ویژگی‌های عمیق تشخیص نوع فعالیت انسان به وسیله‌ی یادگیری عمیق جستجوی شخص در تصویر به وسیله‌ی یادگیری عمیق قطعه‌بندی تصویر برای کاربردهای مختلف (پزشکی و غیره) طبقه‌بندی عکس‌های سلفی با استفاده از یادگیری ماشین پردازش تصویر و خودروی هوشمند تشخیص حواس‌پرتی راننده با استفاده از یادگیری عمیق تشخیص عابر پیاده، دوچرخه، موتورسیکلت تشخیص تابلوهای رانندگی با یادگیری عمیق تشخیص چراغ راهنمایی رانندگی با شبکه‌های عصبی کانولوشن مترجم ماشینی توسعه مترجم ماشینی با چند زبان۸۸

\n", 1983 | "
\r\n", 1984 | " \r\n", 1985 | " \r\n", 1988 | " \r\n", 1989 | "
\r\n", 1990 | "\r\n", 1991 | " \r\n", 1992 | "
\r\n", 1993 | "\r\n", 1994 | "\r\n", 1995 | "
\r\n", 1996 | "
\r\n", 1997 | "\r\n", 1998 | "\n", 2096 | "\r\n", 2097 | " \r\n", 2098 | "\r\n", 2099 | "
\r\n", 2100 | "\r\n", 2101 | "
\r\n", 2102 | " \r\n", 2103 | "
\r\n", 2104 | " \r\n", 2105 | " \r\n", 2106 | " \r\n", 2107 | "
\r\n", 2108 | "
\r\n", 2109 | "
\r\n", 2110 | "\r\n", 2111 | " \n", 2112 | "\n", 2113 | "\n", 2114 | "\n", 2115 | "\n", 2116 | "\r\n", 2117 | " \r\n", 2118 | "\r\n", 2119 | "\n" 2120 | ] 2121 | } 2122 | ], 2123 | "source": [ 2124 | "import urllib\n", 2125 | "url = \"http://www.snrazavi.ir/\"\n", 2126 | "# url = \"http://tabrizu.ac.ir\"\n", 2127 | "content = urllib.urlopen(url).read()\n", 2128 | "print content" 2129 | ] 2130 | }, 2131 | { 2132 | "cell_type": "code", 2133 | "execution_count": 49, 2134 | "metadata": { 2135 | "nbpresent": { 2136 | "id": "960ca8fe-97db-4103-8638-25a1411ebaef" 2137 | } 2138 | }, 2139 | "outputs": [ 2140 | { 2141 | "name": "stdout", 2142 | "output_type": "stream", 2143 | "text": [ 2144 | "22810\n" 2145 | ] 2146 | } 2147 | ], 2148 | "source": [ 2149 | "print content.find('