Sha256: bf173b407d87a31e882e416ebaa29d8c1430ef9d6d66b921e9845eb8c1d85eb5
Contents?: true
Size: 1.71 KB
Versions: 1
Compression:
Stored size: 1.71 KB
Contents
module Ebooks class Generator attr_accessor :dictionary def initialize(config) @tweets_csv_path = config[:tweets_csv_path] @corpus_path = config[:corpus_path] build_corpus @dictionary_name = config[:dictionary_name] @dictionary = build_dictionary end def generate_twitter_corpus # Go to Twitter.com -> Settings -> Download Archive. # This tweets.csv file is in the top directory. Put it in the same directory as this script. csv_text = CSV.read(@tweets_csv_path) # Create a new clean file of text that acts as the seed for your Markov chains File.open(@corpus_path, 'w') do |file| csv_text.reverse_each do |row| tweet_text = row[5] .gsub(/(?:f|ht)tps?:\/[^\s]+/, '') # Strip links .gsub(/\n/,' ') # Strip new lines .gsub(/@[a-z0-9_]+/i, '') # Strip usernames .gsub(/[R|M]T/, '') # Strip RTs # Save the text file.write("#{tweet_text}\n") end end end def generate_sentence # Run when you want to generate a new Markov tweet dictionary.generate_n_sentences(2).split(/\#\</).first.chomp.chop end private def build_corpus unless File.exists?(@corpus_path) generate_twitter_corpus end end def build_dictionary if File.exists?(dictionary_path) MarkyMarkov::Dictionary.new(@dictionary_name) else markov = MarkyMarkov::Dictionary.new(@dictionary_name) markov.parse_file(@corpus_path) markov.save_dictionary! markov end end def dictionary_path "#{@dictionary_name}.mmd" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ebooks-0.2.1 | lib/ebooks/generator.rb |