1. A method implemented by data processing apparatus, the method comprising: generating a raw name detection model using a collection of family names and an annotated corpus including a collection of n-grams, each n-gram having a corresponding probability of occurring as a respective name in the annotated corpus; applying the raw name detection model to a collection of semi-structured data to form annotated semi-structured data, the annotated semi-structured data identifying n-grams identifying names and n-grams not identifying names; applying the raw name detection model to a large unannotated corpus to form a large annotated corpus data identifying n-grams of the large unannotated corpus identifying names and n-grams not identifying names; and generating a name detection model including: deriving a name model using the annotated semi-structured data identifying names and the large annotated corpus data identifying names, deriving a not-name model using the semi-structured data not identifying names, deriving a language model using the large annotated corpus; and wherein generating and applying are performed by data processing apparatus.
9. The method of claim 1 further comprising: calculating a probability that a particular sequence of characters identifies a name, wherein the name includes a family name and a given name, by determining the probability that the particular sequence identifies a name as a function of a relative frequency that a portion of the sequence representing the given name occurs with any family name and the relative frequency of a portion of the sequence representing the family name.