Using Conditional Random Fields for Named Entity Recognition

What is Conditional Random Field? How does exactly Conditional Random Field identify proper names as person, organization, or place in a structured or unstructured text?

For example: This product is ordered by StackOverFlow Inc.

What does Conditional Random Field do to identify StackOverFlow Inc. as an organization?


A CRF is a discriminative, batch, tagging model, in the same general family as a Maximum Entropy Markov model.

A full explanation is book-length.

A short explanation is as follows:

  1. Humans annotate 200-500K words of text, marking the entities.
  2. Humans select a set of features that they hope indicate entities. Things like capitalization, or whether the word was seen in the training set with a tag.
  3. A training procedure counts all the occurrences of the features.
  4. The meat of the CRF algorithm search the space of all possible models that fit the counts to find a pretty good one.
  5. At runtime, a decoder (probably a Viterbi decoder) looks at a sentence and decides what tag to assign to each word.

The hard parts of this are feature selection and the search algorithm in step 4.

Well to understand that you got to study a lot of things. For start

Understand the basic of markov and bayesian networks. Online course available in coursera by daphne coller

CRF is a special type of markov network where we have observation and hidden states. The objective is to find the best State Assignment to the unobserved variables also known as MAP problem. Be Prepared for a lot of probability and Optimization. :-)

Need Your Help

Android app SQLiteDatabase inserting new values not working, 0 errors in code

java android mysql database sqlite

I'm making an Android app and I got some done solution from androidhive which has a database etc, so I'm trying to add more values into that database e.g address, telephone etc, but whenever I make...

Scala type annotation without type


Found here odd type annotation: