module Polaris::Nlp
Constants
- VERSION
Public Instance Methods
calc_polarity(sentence)
click to toggle source
init method is called in first setup.
# File lib/polaris/nlp/calc.rb, line 13 def calc_polarity(sentence) if File.exists?(@path_to_db) db = SQLite3::Database.new("#{@home}/.polaris/features.sqlite3") nm = Natto::MeCab.new sum = 0 nm.parse(sentence).split(/\n/).each do |line| elem = line.split(/\t/) break if elem[0] == 'EOS' word = (elem[1].split(/\,/)[6] == '*') ? elem[0] : elem[1].split(/\,/)[6] value = db.execute("SELECT value FROM models WHERE word = ? LIMIT 1",word)[0] sum += value[0] if value end e = Math.exp(1) return (e ** sum - e** (-1 * sum)) / (e ** sum + e** (-1 * sum)) else puts ("features.sqlite3 not found.\nplease run Polaris::Nlp.init") exit end end
init()
click to toggle source
init method is called in first setup.
# File lib/polaris/nlp/init.rb, line 13 def init unless Dir.exists?("#{@home}/.polaris") Dir.mkdir("#{@home}/.polaris") end puts "Download data..." ja_text = open('http://www.lr.pi.titech.ac.jp/%7Etakamura/pubs/pn_ja.dic').read.encode('utf-8','sjis') en_text = open('http://www.lr.pi.titech.ac.jp/%7Etakamura/pubs/pn_en.dic').read.encode('utf-8','sjis') puts "Done" if File.exists?("#{@home}/.polaris/features.sqlite3") FileUtils.rm("#{@home}/.polaris/features.sqlite3") end db = SQLite3::Database.new("#{@home}/.polaris/features.sqlite3") db.execute("CREATE TABLE models (word TEXT ,value REAL);") puts "Seed Japanese data..." ja_text.split("\n").each do |line| item = line.split(':') word = item[0] value = item[3] insert_value(db,word,value) end puts "Done" puts "Seed English data..." en_text.split("\n").each do |line| item = line.split(':') word = item[0] value = item[2] insert_value(db,word,value) end puts "Done" end
insert_value(db,word,value)
click to toggle source
# File lib/polaris/nlp/init.rb, line 51 def insert_value(db,word,value) return db.execute("INSERT INTO models (word, value) VALUES(?, ?);", word, value) end