Sélection de mots intéressants lors des RANDOM.
This commit is contained in:
parent
542dac8822
commit
1f7076b09d
|
@ -3,23 +3,30 @@
|
|||
# cat dump.url
|
||||
# Aller à cette adresse, et télécharger le dernier dump
|
||||
echo
|
||||
echo "Étape 1/3 : Téléchargement"
|
||||
echo "=========================="
|
||||
echo "Étape 1/5 : Téléchargement de la version du dump"
|
||||
echo "================================================"
|
||||
latest="$(wget 'http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/?C=M;O=D' -O- | grep '\-LEXICALNET\-JEUXDEMOTS\-FR\-\(NOHTML\)\?\.txt' | head -n 1 | sed -E -e 's/^.*<a href="([0-9]*-LEXICALNET-JEUXDEMOTS-FR-(NOHTML)?\.txt)">.*$/\1/')"
|
||||
|
||||
echo
|
||||
echo "Étape 2/5 : Téléchargement du dump"
|
||||
echo "=================================="
|
||||
wget -c 'http://www.lirmm.fr/~lafourcade/JDM-LEXICALNET-FR/'"$latest"
|
||||
|
||||
echo
|
||||
echo "Étape 2/3 : Conversion vers sql"
|
||||
echo "Étape 3/5 : Conversion vers sql"
|
||||
echo "==============================="
|
||||
./dump2sqlite.sh "$latest" > sql
|
||||
|
||||
echo
|
||||
echo "Étape 3/3 : Insertion dans la bdd"
|
||||
echo "Étape 4/5 : Insertion dans la bdd"
|
||||
echo "================================="
|
||||
[ -e php/db ] && mv php/db php/db.old
|
||||
pv sql | sqlite3 php/db
|
||||
|
||||
|
||||
echo
|
||||
echo "Étape 5/5 : Réglage des permissions"
|
||||
echo "==================================="
|
||||
: > /tmp/log-chmod-pticlic
|
||||
sudo chgrp -R www-data php > /tmp/log-chmod-pticlic || sudo chgrp -R www php > /tmp/log-chmod-pticlic || {
|
||||
cat /tmp/log-chmod-pticlic
|
||||
|
|
|
@ -30,6 +30,8 @@ create table game(gid integer primary key autoincrement, eid_central_word, relat
|
|||
create table game_cloud(gid, num, difficulty, eid_word, totalWeight, probaR1, probaR2, probaR0, probaTrash);
|
||||
create table played_game(pgid integer primary key autoincrement, gid, login, timestamp);
|
||||
create table played_game_cloud(pgid, gid, type, num, relation, weight, score);
|
||||
create table random_cloud_node(eid,nbneighbors);
|
||||
create table random_center_node(eid);
|
||||
|
||||
insert into user(login, mail, hash_passwd, score) values('$(echo "$user" | sed -e "s/'/''/g")', 'foo@isp.com', '$(echo "$passwd" | dd bs=1 count="${#passwd}" | (if which md5sum >/dev/null 2>&1; then md5sum; else md5; fi) | cut -d ' ' -f 1)', 0);
|
||||
EOF
|
||||
|
@ -56,5 +58,18 @@ create index i_relation_type on relation(type);
|
|||
create index i_relation_start_type on relation(start,type);
|
||||
create index i_relation_end_type on relation(end,type);
|
||||
create index i_played_game_all on played_game(pgid, gid, login, timestamp);
|
||||
insert into random_cloud_node(eid,nbneighbors) select eid,sum(nb) from (
|
||||
select (select type from node where node.eid = relation.start) as type,
|
||||
start as eid,
|
||||
count(start) as nb from relation where type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001)
|
||||
group by start
|
||||
union
|
||||
select (select type from node where node.eid = relation.start) as type,
|
||||
end as eid,
|
||||
count(end) as nb from relation where type not in (4, 12, 36, 18, 29, 45, 46, 47, 48, 1000, 1001)
|
||||
group by end
|
||||
) where type = 1 group by eid;
|
||||
create index i_random_cloud_node_nbneighbors on random_cloud_node(nbneighbors);
|
||||
insert into random_center_node(eid) select eid from random_cloud_node where nbneighbors > 3;
|
||||
commit;
|
||||
EOF
|
||||
|
|
1
code/serveur/php/.gitignore
vendored
1
code/serveur/php/.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
db.old
|
||||
log.txt
|
||||
|
|
|
@ -75,11 +75,16 @@ if ($action == 3) {
|
|||
|
||||
/** Selectionne aléatoirement un noeud.
|
||||
*/
|
||||
function random_node()
|
||||
function random_center_node()
|
||||
{
|
||||
global $db;
|
||||
return $db->querySingle("select eid from random_center_node where rowid = (abs(random()) % (select max(rowid) from random_center_node))+1;");
|
||||
}
|
||||
|
||||
return $db->querySingle("select eid from node where eid = (abs(random()) % (select max(eid) from node))+1 or eid = (select max(eid) from node where eid > 0) order by eid limit 1;");
|
||||
function random_cloud_node()
|
||||
{
|
||||
global $db;
|
||||
return $db->querySingle("select eid from random_cloud_node where rowid = (abs(random()) % (select max(rowid) from random_cloud_node))+1;");
|
||||
}
|
||||
|
||||
|
||||
|
@ -99,7 +104,6 @@ function cg_build_result_sets($cloudSize, $centerEid, $r1, $r2)
|
|||
// Le select doit ranvoyer trois colonnes :
|
||||
// eid => l'eid du mot à mettre dans le nuage,
|
||||
// r1 => la probabilité pour que le mot soit dans r1, entre -1 et 1 (négatif = ne devrait pas y être, positif = devrait y être à coup sûr, 0 = on sait pas).
|
||||
// TODO : comment mettre un poids sur random, sachant qu'il ne peut / devrait pas être dans ces select, mais plutôt un appel à random_node() ?
|
||||
$typer1r2 = "type in ($r1, $r2)";
|
||||
$sources = array(
|
||||
// Voisins 1 saut du bon type (= relations déjà existantes)
|
||||
|
@ -153,7 +157,7 @@ function cg_build_result_sets($cloudSize, $centerEid, $r1, $r2)
|
|||
|
||||
for ($i = 0; $i < 10; $i++)
|
||||
{
|
||||
$sources[$k]['resultSet'][] = array('eid'=>random_node(), 'r1'=>0, 'r2'=>0, 'r0'=>0, 'trash'=>1);
|
||||
$sources[$k]['resultSet'][] = array('eid'=>random_cloud_node(), 'r1'=>0, 'r2'=>0, 'r0'=>0, 'trash'=>1);
|
||||
$sources[$k]['rsSize']++;
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +258,7 @@ function cg_build_cloud($cloudSize, $sources, $sumWeights)
|
|||
while ($i < $cloudSize)
|
||||
{
|
||||
$totalDifficulty += $sources['rand']['d'];
|
||||
$cloud[$i] = array('pos'=>$i++, 'd'=>$sources['rand']['d'], 'eid'=>random_node(), 'probaR1'=>$res['r1'], 'probaR2'=>$res['r2'], 'probaR0'=>$res['r0'], 'probaTrash'=>$res['trash']);
|
||||
$cloud[$i] = array('pos'=>$i++, 'd'=>$sources['rand']['d'], 'eid'=>random_cloud_node(), 'probaR1'=>$res['r1'], 'probaR2'=>$res['r2'], 'probaR0'=>$res['r0'], 'probaTrash'=>$res['trash']);
|
||||
}
|
||||
|
||||
return array($cloud, $totalDifficulty);
|
||||
|
@ -400,7 +404,7 @@ function createGameCore($cloudSize)
|
|||
global $db;
|
||||
|
||||
// select random node
|
||||
$centerEid = random_node();
|
||||
$centerEid = random_center_node();
|
||||
|
||||
$r1 = cg_choose_relations(); $r2 = $r1[1]; $r1 = $r1[0];
|
||||
$sources = cg_build_result_sets($cloudSize, $centerEid, $r1, $r2); $sumWeights = $sources[1]; $sources = $sources[0];
|
||||
|
|
Loading…
Reference in New Issue
Block a user