This sounds like a very cool project. I imagine trying to develop a program that can take a document that is entirely lowercase and determine which words within it are proper. I just think it might be doable.
Here are some characteristics that might make a word more likely to be a proper noun:
- Ending in with 's or s' (if it's possessive or a subject, it's more
likely to be proper)
- Being preceded by Mr., Mrs., Ms., etc.
- First word of a paragraph*
- First word after a period*
- First word after the first comma in a sentence, if within first five
- First letter of word starts with J (A disproportionate number of
names:words start with J)
- Word before a word that ends 't or 'll
- Penultimate word before , or . is "to" (Means last word is an object
without an article, so more likely a proper name)
- Word ending in Y (A disproportionate number of words ending in Y are proper names)
- Word appearing before Jr., Sr., Esq., MD., II, III, IV, etc.
- Any single letter followed by a period.
- Word immediately following any single letter followed by a period
- Word immediately before any single letter followed by a period
- Any series of two-word pairs separated by commas, along with two words before first comma and the second and third word (in order to exclude "and") after the last comma (two-word pairs in a list separated by commas would have a likelihood for being first and last names)
Using these and others in combination, you should be able to identify which words in a sentence are more and less likely to be proper nouns. For example, if a word is identified as fitting more than one of these criteria, its likelihood for being a proper noun increases. In this manner, you can begin an algorithm that essentially develops a profile for each word within a text.
Incidentally, if I were to cheat, I might be tempted to write code that imported the lists from Social Security's website of the 1,000 most popular boy's and girl's names.
*A very likely position for a subject, which subjects are more likely to be proper nouns