Sha256: 0a155ff626325998a6bd5d8bdfca79c60223c12990db6c35bec16c3e5783bff3

Contents?: true

Size: 958 Bytes

Versions: 33

Compression:

Stored size: 958 Bytes

Contents

# Author::    Lucas Carlson  (mailto:lucas@rufy.com)
# Copyright:: Copyright (c) 2005 Lucas Carlson
# License::   LGPL

class String
   def summary( count=10, separator=" [...] " )
      perform_lsi split_sentences, count, separator
   end

   def paragraph_summary( count=1, separator=" [...] " )
      perform_lsi split_paragraphs, count, separator
   end

   def split_sentences
      split /(\.|\!|\?)/ # TODO: make this less primitive
   end
   
   def split_paragraphs
      split /(\n\n|\r\r|\r\n\r\n)/ # TODO: make this less primitive
   end
   
   private
   
   def perform_lsi(chunks, count, separator)
      lsi = Classifier::LSI.new :auto_rebuild => false
      chunks.each { |chunk| lsi << chunk unless chunk.strip.empty? || chunk.strip.split.size == 1 }
      lsi.build_index
      summaries = lsi.highest_relative_content count
      return summaries.reject { |chunk| !summaries.include? chunk }.map { |x| x.strip }.join(separator)
   end
end

Version data entries

33 entries across 33 versions & 12 rubygems

Version Path
francois-classifier-1.3.4 lib/classifier/lsi/summary.rb
francois-classifier-1.3.6 lib/classifier/lsi/summary.rb
otherinbox-classifier-1.3.1.1 lib/classifier/lsi/summary.rb
yury-classifier-1.3.1 lib/classifier/lsi/summary.rb
yury-classifier-1.3.2 lib/classifier/lsi/summary.rb
yury-classifier-1.3.3 lib/classifier/lsi/summary.rb
yury-classifier-1.3.4 lib/classifier/lsi/summary.rb
yury-classifier-1.3.5 lib/classifier/lsi/summary.rb
classifier-fork-1.3.4 lib/classifier/lsi/summary.rb
classifier-1.3.4 lib/classifier/lsi/summary.rb
classifier_atsukamoto-0.0.5 lib/classifier/lsi/summary.rb
classifier_atsukamoto-0.0.4 lib/classifier/lsi/summary.rb
classifier_atsukamoto-0.0.3 lib/classifier/lsi/summary.rb
classifier_atsukamoto-0.0.2 lib/classifier/lsi/summary.rb
classifier_atsukamoto-0.0.1 lib/classifier/lsi/summary.rb
otherinbox-classifier-1.3.1.2.20121218.2 lib/classifier/lsi/summary.rb
otherinbox-classifier-1.3.1.2.20121218 lib/classifier/lsi/summary.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/classifier-1.3.3/lib/classifier/lsi/summary.rb
logankoester-classifier-1.4.3 lib/classifier/lsi/summary.rb
classifier-1.3.3 lib/classifier/lsi/summary.rb