class FindKeywords::Keywords

Attributes

keywords[R]
sentence[RW]

Public Class Methods

new(sentence, word_list = "stop_words") click to toggle source
# File lib/find_keywords.rb, line 11
def initialize (sentence, word_list = "stop_words")
  if sentence.is_a?(String)
    @sentence = sentence
  elsif sentence.is_a?(Array)
    @sentence = sentence.join(' ')
  elsif sentence.is_a?(Hash)
    @sentence = sentence.collect { |k, v| "#{k} #{v} " }.join
  else
    @sentence = ''
  end
  @keywords = find_keywords(@sentence, word_list)
end

Private Instance Methods

find_keywords(sentence, word_list) click to toggle source
# File lib/find_keywords.rb, line 26
def find_keywords(sentence, word_list)
  slug = sentence.downcase
  #slug.gsub!(/(\d{2}|\d{1})\/(\d{2}|\d{1})(-|.-.)(\d{2}|\d{1})\/(\d{2}|\d{1})/, "") #add rev 0.0.2 remove date
  #slug.gsub!(/(sept|oct|nov|dec|jan|feb|mar|apr|may|jun|jul|aug)(\s*)(\d*|)(-|.-.|)/, "") #add rev 0.0.2 remove date
  slug.gsub! /['`]/,""
  slug.gsub! /\s*[^A-Za-z]\s*/, ' '
  slug.gsub!(/ +/,' ')
  slug.gsub!(/^\s|\s$/,'')
  words = slug.downcase.scan(/\w+/)
  keywords = words.select { |word| !remove_words(word_list).include?(word) }
  keywords.delete_if { |word| word.size <= 2 }
  keywords.uniq! if keywords.uniq
  keywords
end
remove_words(word_list) click to toggle source
# File lib/find_keywords.rb, line 41
def remove_words(word_list)
  case word_list
  when "stop_words"
    FindKeywords::RemoveWordsList.stop_words
  when "all_custom"
    FindKeywords::RemoveWordsList.all_custom
  when "all"
    FindKeywords::RemoveWordsList.all
  else
    if word_list.is_a?(FindKeywords::RemoveWordsList)
      word_list.word_list
    else
      FindKeywords::RemoveWordsList.stop_words
    end
  end
end