#!/usr/bin/env ruby
require 'csv'
require 'mysql2'
require 'stanford-core-nlp'
require 'treat'
require 'unidecoder'
require 'yaml'
include Treat::Core::DSL
Treat.core.language.default = "french"
$client = Mysql2::Client.new(YAML::load(File.open('config/database.yml')))
def delete_stop_words_from(arr)
stop_words = parse('stop_words.txt')
arr.delete_if{ |word| stop_words.include?(word) || !word.match(/^[[:alpha:]]+$/)}
arr
end
def get_data_from(keywords)
data = Hash.new(0)
keywords.each do |string|
tokens = get_tokens_from(string)
lemmas = get_lemmatised_words_from(tokens)
data[string] = lemmas
end
data
end
def get_lemmatised_words_from(tokens)
keywords = Array.new(0)
tokens.each do |w|
begin
word_str = $client.escape(w)
rows = $client.query("SELECT lemma,word,category
FROM lemmas
WHERE word = '#{word_str}' COLLATE utf8_bin
AND category = '#{w.category}'
LIMIT 1")
if rows.size > 0
keywords << remove_accents_from(rows.map{ |row| row["lemma"] }.first)
else
keywords << remove_accents_from(word_str)
end
rescue => e
puts "#{w} => #{e}"
next
end
end
delete_stop_words_from(keywords)
end
def get_results_from(data)
results = Array.new(0)
data.each do |k, v|
data.dup.each do |kb, vb|
dice = 2 * (v & vb).count.to_f / (v.count + vb.count)
dice = dice.round(2)
results << [k, kb, dice]
end
end
results
end
def get_tokens_from(string)
tokens = string.split(' ')
tokens
end
def make_edges_csv_from(array)
CSV.open("./edges.csv", "wb", {:col_sep => ";"}) do |csv|
csv << ["source", "target", "weight"]
array.each do |row|
csv << [row[0], row[1], row[2]]
end
end
end
def parse(file)
arr = []
File.open(file, 'r') do |file|
file.each_line do |line|
arr << line.chomp
end
end
arr
end
def remove_accents_from(string)
string.to_ascii
end
keywords = ["google seo","referencement google","search engine marketing","seo marketing","seo website","website seo","seo search engine optimization","référencement naturel","seo sem","seo google","web seo","seo optimisation","search marketing","seo ranking","marketing seo","seo test","référencement web","black hat seo","sem seo","seo strategy","seo site","référencement internet","referencement site","référencement site internet","seo search","seo search engine","agence de référencement","referencement site web","site seo","referencer son site","top seo","seo online","google referencement","agence référencement","référence","internet seo","seo search engine optimisation","le référencement","seo traffic","website rank","optimize seo","referencement de site","référencement naturel google","annuaire referencement","google optimisation","référencement seo","search engine advertising","référencement sur google","seo url","seo sites","seo advice","comment référencer son site","positionnement site internet","website optimization company","keywords seo","référencement payant","reference google","référencer son site sur google","société de référencement","référenceur web","agence référencement naturel","référencer un site","seo internet","référencement sur internet","website seo tools","position google","site web google","referencement automatique","référencer site google","service seo","site de référencement","agence de référencement naturel","expert referencement","référencer un site sur google","référencement de site internet","referencement annuaire","referencer un site","seo web marketing","seo referencement","consultant référencement","referencement pas cher","referenceur","devis référencement","bien référencer son site","comment référencer un site","référencement naturel seo","audit referencement","expert seo","le référencement naturel","société référencement","tool seo","référence internet","referencer site","référencement professionnel","annuaire de référencement","referencement google site","référencement blog","améliorer référencement google","référencement de site web","référencer son site internet","comment bien référencer son site","référencements","web referencement","référencer un site internet","site internet google","google référencement site","prix référencement google","référencement d un site","site referencement","referencer mon site","référencement site internet google","le référencement web","référence site internet","spécialiste référencement","referencement internet google","référencer son site web","referencement google prix","référencement automatique","améliorer son référencement","tarif référencement","référencer un site web","référencement pas cher","referencer site google","positionnement internet","referencer site sur google","referencer un site sur google","référencement naturel site internet","seo design","agence de référencement web","google site web","référencement d un site web","referencement site web google","consultant référencement naturel","referencement positionnement","agence web référencement","devis référencement naturel","positionnement site","referencer un site web","référencer site sur google","referencement pro","référence web","audit référencement","référencement entreprise","agence referencement web","le referenceur","référencement international","référence site web","le référencement sur internet","référencement organique","position site web","prix référencement","référencement dans google","référencer son blog","tarif référencement google","outil referencement","indexation site web","faire référencer son site","le référencement google","google référencement naturel","analyse référencement","référencement d un site internet","spécialiste référencement naturel","referencement des sites","se faire référencer sur google","référenceur seo","agence de referencement internet","conseil référencement","seo référencement naturel","référencer mon site","cout referencement google","tarif référencement naturel","comment référencer son site internet","référencer son site google","optimiser référencement","cout referencement","positionnement web","référencement google payant","référencement mots clés","position sur google","améliorer référencement naturel","expert référencement naturel","site internet référencement","optimiser référencement google","seo book","audit référencement naturel","seo software","referencement gratuit","audit référencement site","best seo software","seo audit","agence referencement internet","seo com","référencement gratuit","seo ppc","referencement du pro","agence référencement payant","référencement adwords","référencement naturel site","comment référencer un site internet","consultant référencement internet","analyse référencement site","agence référencement seo","comment référencer un site web","societe referencement internet","referencement naturelle","reference site","annuaire référencement site","améliorer référencement site","comment référencer son site web","agence référencement site internet","referencer un site internet","référencement payant google","google site internet","référencement naturel local","site web referencement","mots clés référencement","conseil référencement naturel","referenceur professionnel","se référencer sur google","comment bien référencer son site internet","référencement et positionnement","seo manager","referencement site web sur google","referenceur internet","joomla seo","référencement local","test referencement","prix référencement site internet","tarif référencement site internet","bien référencer son site internet","google referencer site","pack referencement"]
data = get_data_from(keywords)
results = get_results_from(data)
make_edges_csv_from(results)