Ok, this is a long subject and I will try to tell you how to use Google's free kw tool to the max.
First search the google keyword tool using your own keyword generated ideas or allow google to search your site. For our site www.johnnylew.com
I didnt like the results that came with the option of google trying to come up with ideas.
Try to go as broad as you can, NOW here is the secret. Download this list to excel. It may be huge but this method is going to save you hundreds maybe thousands of dollars over time.
Take this list and look for words that are not relevant to your site, add a minus sign "-" before the keyword. Do this for every keyword.
You will end up with a list of relevant keywords and keywords you do not want google to show an ad for.
For example (actual portion of what we did):
We then simply copied and pasted the column of modified keywords. Instantly we had the relevant and keyword lists of a thousand plus keywords. Make these "broad".
Thats step 1.
Step 2. Watch over time the "search term" results in the keyword section of Adwords. You are going to see some search terms, mispellings of relevant, new negative terms you dont want to show for. Add these as phrase or exact & add those negatives. Continue and repeat at least monthly.
Step 3. Start to replace those broad terms by making winners phrase and exact. Overtime you will have an optimized list of keywords, longtails too!
All without having to get your Credit Card out and pay for a keyword generator. You used Google Adwords to be your generator by using terms people actually searched for!