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