Translate

Sunday, November 24, 2013

Artificial Intelligence: Natural Language Processing(NLP)

Artificial Intelligence: Natural Language Processing(NLP)

Do you know NLP(Natural Language Processing)? Do you hear AI(Artificial Intelligence)? Today, AI is a really hot topic on scientific and technical stage. NLP is one of the classical AI problems.

Let us look at the picture below: the toaster is telling Srini that Srini's toasts are ready. One people is asking his computer to send new year postcards to all his friends in the address and translate to German for his German friends. Yes, human is communicating with machine and the machine can understand human's language. The contents of the picture is the result of NLP(Natural Language Processing).

      Don't you mind I tell you some of my dreams? They are following:
·       I dream I can talk to my TV set: show me The Lion King?
·       I dream I can communicate with my Ipad.  When I tell it that I am sad, it can analyze the questions and enlighten me like my soul friends.  When I am happy, it can enjoy the feeling with me.
·       I dream my computer can read the newspaper and tell me the important news only.
·       Ahhh, I hope my PC can do English homework for me, isn't it your dream?
......
Don't you have the same dreams as me? These dreams are so amazing. These smart computers can change people's life. They can lead human to a new technical world.
All them need NLP.

What is NLP?  we firstly need  to know what Natural Language is. Natural Language refers to the language spoken by people such as English, Chinese, Japanese, as opposed to artificial languages, like C++, Java, etc. NLP(Natural Language Processing) is the subject that processes information contained in natural text. It is also known as Computational Linguistics(CL), Human Language Technology(HLT),  or Natural Language Engineering(NLE).

How do we measure intelligence of a machine? The most famous way is Turing test-Alan Turling(1950) which says that a machine can be accepted to be intelligent if it can fool a  judge that its human over a tele-typing exercise.

Two well-known intelligent systems are ELIZA and SHRDLU.   ELIZA (1966 by Weizenbaum)  pretends to be a psychiatrist and converses with a patient on his problem. It uses keyword pattern matching technology to "understand" and "solve" the patient's problem. Many patients though the system really understood their problems. The image below is showing the chatting process。


SHRDLU(1968-70 by Terry Winograd MIT AI Lab) works on a "Blocks World" as a simulated environment in which blocks like colored cubes, cylinders, pyramids can be moved around, placed over each other. It can understand a bit of  anaphora.  These intelligent system like ELIZA and SHRDLU need strong and excellent databases.

NLP is a popular technology. More and more universities are working on it. But,  it is still like a baby who just begins his life.  With the development of kinds of technology, I believe NLP will grow up quickly.

In sum, NLP is one technology which makes machine understand people's language and communicate with people like a human. In other words, NLP will help a machine be a "human". 

The road is far. The hope is there. Let us work hard!


Reference: Wiki

Saturday, November 16, 2013

History of Computer Science: the history of programming language


Programming languages are part of the fundamental body of Computer Science.  Programming Paradigm is one of the my favorite courses. In this post, I use my language to show you the history of programming languages which I learned in this course.

 
The right picture comes from my teacher's class. From the picture, we can easily figure out the time when one language appeared. And, the picture also tells us the relationship among the languages. For example, Java was invented around 1995. It has two ancients: one is Simula, and the other one is C.
Programming languages have different culture. The most common three are OOP(Objected-Oriented programming), Functional programming and Logical programming. For instance, Java is OOP, Scheme is Functional Programming language, and Prolog belongs to Logical Programming. Each language is based on a model of computation. Functional programming is suitable mathematical proof systems. Prolog programming is good at solving problems that involve objects and the relationships between objects. Yet OOP can substitute the two languages above.  Because OOP is just like objects in real world, it is the most popular language.

With the development of multi-core computers, the existing programming languages are facing new challenges. More and more researchers and scientists are working on inventing new languages which can work better on multi-core computers.

 In a word, the history of programming languages is not long. Various language cultures come from different problem models. The new development of new technology usually foretell the appearance of new language.

By the way, do you know who invented the first programming language? It is Ada Lovelace(woman)!

Reference: CS152 SJSU.







History of Computer Science: history of computing hardware


In the beginning, computing hardware was only machines that need people manually perform the arithmetic operations.  The history of human computing can be traced back to thousands of years old. Our ancients used fingers to begin their calculations. The counting device changed many appearances from tally sticks, Fertile Cresent,  livestock or grains,  abacus, to analog computers like famous Thomas Arithmometer. It spent thousands years from the fingers to punched card machines. 

Computer Science, the special and popular discipline, emerged in 20th century. As one of its' most important object of study, computing hardware has already undergone great changes. In this post, I will simply show you how it changed.


Punched card machines stepped on the calculating stage in 1801. At this year, a loom that Joseph-Marie Jacquard invented used punched cards to control the pattern being woven. From Charles Babbage's Analytical Engine to  Percy Ludgate's programmable mechanical computer, every new change means great development in calculating history.  In 1901, Percy Ludgate's invention ended the history of punched card machines. 
Today, stored-programming computers are known by almost every modern people in the world. A stored-programming computer is one which stores program instructions in electronic memory.(wiki). Simply, all the computers that you see are stored-programming computers. This kind of machines have extremely good features compared with punched card machines. For example, every instructions are stored in machine. People don't need tons of cards to control  operations. 

In sum, the history of computer hardware is long. However, with the development of modern technology, the speed of hardware's update is becoming faster and faster. The content of Computer Science is also richer and richer.

Reference: http://en.wikipedia.org/wiki/History_of_computing_hardware

Friday, November 8, 2013

File Sharing:Streamfile



If you are an internet fan, it is very possible that you know about online file sharing service.  

Processing large original files like .PSD (Photoshop) and .AI (Illustrator) is becoming a very simple task for today's technology and machines(whether it is PC or Mac). But sharing part aren't. We generally use two ways to share the files with peers or clients: e-mailing and hosting-account. But e-mailing cannot upload anything more than 100Mb, and hosting-account can be easily exposed.  Today's online file sharing services solved the above two shortcomings. With the development of modern information society, more and more online file sharing alternatives appear. In this post, I will introduce you one of them: Streamfile.

Based in Stockholm, the features of Streamfile are better looking, easier to use and the fastest way to deliver data wherever you are in the world.

From their website, we can get the following data:
Max filesize: 300Mb   Registration: No Premium account: Yes   Password Protection: No

streamfile


Secure Socket Layer (SSL) is used by Streamfile which means you don't have to worry about the security of sharing file. In fact, online banks are using SSL as transmitting credit card details. Streamfile also offers the ability to store your files encrypted before they are uploaded, adding an additional layer of security. Streamfile provides you with an extensive audit trail. With their File Center you can check who has downloaded your files and when. You can also set a file expiration date or archive any files to never expire with AWS Glacier.

Streamfile provides three plans: Basic, Pro and Business. The last two are not free. But if you are not satisfied with your purchase, they can give you 100% refund within 30 days payment. Don't you think that it is an amazing policy?

For students, I think the basic plan is enough. It is free an has the below features:
  • 300Mb file-size limit
  • 1 day expiry on all uploads
  • Basic file tracking
  • 128 bit File encryption
  • 1GB Monthly Bandwidth
I am using it to share photos with my friends and family. It is a good tool to finish the task. If you have files to share with other people, it deserves a try.

References:
https://www.streamfile.com/
http://www.hongkiat.com/blog/15-great-free-online-file-sharing-alternatives/

Friday, November 1, 2013

Data Structure: Trees


Tree1

 As a student in computer science, I am using BT(Binary Tree) to work on our project which requires us to create a parser for Scheme. To do it, I looked up many materials about Tree. In this post, I simply show you some what I got recently.

The tree is one of the most powerful of the advanced data structures and it often pops up in even more advanced subjects such as AI and compiler design.

In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.

Mathematically, it is a tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at most one parent node. Furthermore, the children of each node have a specific order.


 In the big family, there are two important members: BT(Binary Tree) and BST(Binary Search Tree) 

A binary tree is a tree-like structure that is rooted and in which each vertex has at most two children and each child of a vertex is designated as its left or right child (West 2000, p. 101). In other words, unlike a proper tree, the relative positions of the children is significant. 

In computer science, a binary search tree (BST), sometimes also called an ordered or sorted binary tree, is a node-based binary tree data structure which has the following properties:[1]
  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • The left and right subtree each must also be a binary search tree.
  • There must be no duplicate nodes.
All Trees have the following common operations: Searching, Insertion, Deletion, Traversal and Sort.

It is very common to use Tree data structure in computer science. Why Tree?  Unlike Array and Linked List, which are linear data structures, tree is hierarchical (or non-linear) data structure.
As per Wikipedia, following are the common uses of tree.
1. Manipulate hierarchical data.
2. Make information easy to search (see tree traversal).
3. Manipulate sorted lists of data.
4. As a workflow for compositing digital images for visual effects.
5. Router algorithms.

References:
http://www.cs.bu.edu/teaching/c/tree/binary/
http://en.wikipedia.org/wiki/Tree_%28data_structure%29#Common_uses
http://www.geeksforgeeks.org/applications-of-tree-data-structure/
http://www.i-programmer.info/babbages-bag/477-trees.html







Read more: http://geeksgrave.blogspot.com/2013/05/auto-alt-tags-for-blogger.html#ixzz2eAd5m09j