title: Alternatives to TF-IDF and Cosine Similarity (comparing documents with different formats)
body: <p>I've been working on a small, personal project which takes a user's job skills and suggests the most ideal career for them based on those skills.  I use a database of job listings to achieve this.  At the moment, the code works as follows:</p>
  
  <p>1) Process the text of each job listing to extract skills that are mentioned in the listing</p>
  
  <p>2) For each career (e.g. "Data Analyst"), combine the processed text of the job listings for that career into one document</p>
  
  <p>3) Calculate the TF-IDF of each skill within the career documents</p>
  
  <p>After this, I'm not sure which method I should use to rank careers based on a list of a user's skills.  The most popular method that I've seen would be to treat the user's skills as a document as well, then to calculate the TF-IDF for the skill document, and use something like cosine similarity to calculate the similarity between the skill document and each career document.</p>
  
  <p>This doesn't seem like the ideal solution to me, since cosine similarity is best used when comparing two documents of the same format.  For that matter, TF-IDF doesn't seem like the appropriate metric to apply to the user's skill list at all.  For instance, if a user adds additional skills to their list, the TF for each skill will drop.  In reality, I don't care what the frequency of the skills are in the user's skills list -- I just care that they have those skills (and maybe how well they know those skills).</p>
  
  <p>It seems like a better metric would be to do the following:</p>
  
  <p>1) For each skill that the user has, calculate the TF-IDF of that skill in the career documents</p>
  
  <p>2) For each career, sum the TF-IDF results for all of the user's skill </p>
  
  <p>3) Rank career based on the above sum</p>
  
  <p>Am I thinking along the right lines here?  If so, are there any algorithms that work along these lines, but are more sophisticated than a simple sum? Thanks for the help!</p>