Skip to content

Latest commit

 

History

History
90 lines (68 loc) · 5.69 KB

README.md

File metadata and controls

90 lines (68 loc) · 5.69 KB

References of Learning AI

reference is a collection for Natural Language Processing(NLP) learning, which includs following topics:

  • Programming
  • Artificial Inteiilgence
  • Mathematical
  • Software Engineer
  • Algorithm
  • Machine Leanring
  • Automata and Complier

The reason why dose this exist is that I have worked in NLP domain for several years. The Natrual Langulage Processing is really complicated, may be the hardest domain in Artificial Intelligence. One NLP issue may call for several technologies to solve it. Besides the theoretical knowledge, the NLP also need a string good programming ability to solve related problems. A good programming means solving a problem using pragmatic way. Personally, the pragmatic way consists several important features for a programming.

  • Correctness: A programming must be right, cannot be maybe right or some right, the quality ensuring need automatical testing, need test cases, need good documentation.
  • Explicity: A programming must be explicity, some programming works but it's hard to understand. Explicity and concise are often tradeoff. However, the target for a serious programmer should focue explicaity and concise. After practicing and trying over and over again, the explicity and concise would be the same thing. Because your programming is real concise, not simply short, your programming becomes explicity. And because your programming is explicity, and do not make other persons confused, your programming becomes concise eventually.
  • Efficient: A programming must be efficient, the bottleneck of a programming usually is because of a 'stupid' implementation usually.
  • Scalable: A programming must be modified or composited easily.

And because the NLP is actually for Information Processing and some Reasoning Processing. A man who wants to be good at this domain, need some more knowledge out of purely 'classifical algorithm', such as sorting, search, graph algorthm, hash, greedy algorithm, dynamic programming, data structure. These techologies are very important for ** every ** computer programming. But besides these algorithm. One must be familiar with mathematics, automata and complier, machine learning and artificial intelligence programming technologies, and maybe some philosophy reasoning.

Machine Leanring is a subset of Artificial Intelligence. But in recent years, there are so many people regard machine learning as merely AI, or treat 'AI' as 'Machine Learning' equally. It's wrong totally. In my real experience, the machine learning just could solve 2/5 problems for AI problems.

Because the complexity of Artificial Intelligence related domain. I make a public libriary which consists the book I have read and think it valuable. These books, I want to share with you, if you want to learn more about algorithms, especially in natural language processing

Index of Books I collected in this repository

Programming and Software Engineer
Hackers and Painters
Programming-Pearls](./programming/Programming-Pearls.pdf
Structure-and-Interpretation-of-Computer-Programmings
The Practice of Programming
The-Pragmatic-Programmer
Hints-for-Computer-System-Design
https://www.cs.fsu.edu/~engelen/courses/COP4610/hoare.pdf
http://pu.inf.uni-tuebingen.de/users/klaeren/epigrams.html
http://worrydream.com/refs/Brooks-NoSilverBullet.pdf
Epigrams on Programming
Code Complete
Writing Solid Code
Building Secure Software
Go To
NLP
Natural Language Processing
Information Retrieval
Math Concepts
How to Lie with Statistics
Chances Are . . .: Adventures in Probability
Innumeracy: Mathematical Illiteracy and Its Consequences
Information Retrieve and Data Mining
[A Practical Introducation to Informaiton Retrieval and Text Mining](./information-retrieve/ChengXiang Zhai, Sean Massung-Text Data Management and Analysis_ A Practical Introduction to Information Retrieval and Text Mining-Morgan & Claypool (2016).pdf)
[Introduction to Information Retrieval](./information-retrieve/Christopher D Manning_ Prabhakar Raghavan_ Hinrich Schutze-Introduction to information retrieval-Cambridge University Press (2008).pdf)
Data Mining
Computer Science Algorithms, Concepts
Introduction to Algorithm
Algorithms-The Spirit of Computing.pdf
Programming Pearls
Artificial Intelligence and Machine Learning
Automata and Complier
Other References
Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems
The Elements of Style

some open courses for learning

  1. Learning Python First Step: https://www.coursera.org/specializations/python
  2. Learning Advacned Python Programming: https://www.udacity.com/course/design-of-computer-programs--cs212
  3. Computing Principles:https://www.coursera.org/learn/build-a-computer? AND https://www.coursera.org/learn/nand2tetris2
  4. Algorithm Design and Analysis: https://www.edx.org/course/algorithms-design-and-analysis

Python etudes

I got the idea from the Peter Norvig pytudes, who is a very influential to me when I was learning to programming.

No Profit

These books are no profit for everyone. If you have license issue, please contact me.