title: Unsupervised automatic tagging algorithms?
body: <p>I want to build a web application that lets users upload <em>documents</em>, <em>videos</em>, <em>images</em>, <em>music</em>, and then give them an ability to search them. Think of it as <em>Dropbox</em> + Semantic Search.</p>
  
  <p>When user uploads a new file, e.g. <strong>Document1.docx</strong>, how could I automatically generate tags based on the content of the file? In other words no user input is needed to determine what the file is about. If suppose that <strong>Document1.docx</strong> is a research paper on data mining, then when user searches for <em>data mining</em>, or <em>research paper</em>, or <em>document1</em>, that file should be returned in search results, since <em>data mining</em> and <em>research paper</em> will most likely be potential auto-generated tags for that given document.</p>
  
  <p><em><strong>1. Which algorithms would you recommend for this problem?</em></strong></p>
  
  <p><em><strong>2. Is there an natural language library that could do this for me?</em></strong></p>
  
  <p><em><strong>3. Which machine learning techniques should I look into to improve tagging precision?</em></strong></p>
  
  <p><em><strong>4. How could I extend this to video and image automatic tagging?</em></strong></p>
  
  <p>Thanks in advance!</p>