title: Which form of unicode normalization is appropriate for text mining?
body: <p>I've been reading a lot on the subject of Unicode, but I remain very confused about normalization and its different forms.  In short, I am working on a project that involves extracting text from PDF files and performing some semantic text analysis.</p>
  
  <p>I've managed to satisfactorily extract the text using a simple python script, but now I need to make sure that all equivalent orthographic strings have one (and only one) representation.  For example, the 'fi' typographic ligature should be decomposed into 'f' and 'i'.</p>
  
  <p>I see that python's <code>unicodedata.normalize</code> function offers several algorithms for normalizing unicode code points.  Could someone please explain the difference between:</p>
  
  <ul>
  <li>NFC</li>
  <li>NFKC</li>
  <li>NFD</li>
  <li>NFKD</li>
  </ul>
  
  <p>I read the <a href="http://en.wikipedia.org/wiki/Unicode_equivalence#Normalization" rel="nofollow">relevant wikipedia article</a>, but it was far too opaque for my feeble brain to understand.  Could someone kindly explain this to me in plain English?</p>
  
  <p>Also, could you please make a recommendation for the normalization method best adapted to a natural language processing project?</p>