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 orsome
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
andconcise
. After practicing and trying over and over again, the explicity and concise would be the same thing. Because your programming isreal
concise, not simplyshort
, your programming becomesexplicity
. And because your programming is explicity, and do not make other persons confused, your programming becomesconcise
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
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 |
- Learning Python First Step: https://www.coursera.org/specializations/python
- Learning Advacned Python Programming: https://www.udacity.com/course/design-of-computer-programs--cs212
- Computing Principles:https://www.coursera.org/learn/build-a-computer? AND https://www.coursera.org/learn/nand2tetris2
- Algorithm Design and Analysis: https://www.edx.org/course/algorithms-design-and-analysis
I got the idea from the Peter Norvig pytudes, who is a very influential to me when I was learning to programming.
These books are no profit for everyone. If you have license issue, please contact me.