[TCL] Oracle (version actuelle : 2.3.1)
#1
Description :

Posez votre question à l'oracle, il vous répondra.

Il détecte plusieurs types de question différents et donne des réponses appropriées (la plupart du temps) choisies parmi un total de 615 réponses réparties dans 16 catégories.

Si la question a déjà été posée, la réponse restera la même.

Oracle utilise un algorithme phonétique nommé HaploPhone afin de détecter des questions identiques même si l'orthographe et la ponctuation varient.
Oracle utilise également l'algorithme du Rapport de Relation Différentielle afin de tolérer des variations et de reconnaître deux questions très légèrement différentes ou formulées différemment, comme étant une seule et même question.

Les scripts HaploPhone (HaploPhone.tcl) et Related Differential Report (RDR.tcl) sont requis par Oracle pour fonctionner.
Assurez-vous que vous possédez bien ces deux scripts et que vous  les avez ajoutés dans le fichier eggdrop.conf AVANT Oracle.tcl :
tcl
source scripts/HaploPhone.tcl
source scripts/RDR.tcl
source scripts/Oracle.tcl



Si vous ajoutez de nouvelles réponses, assurez-vous de les placer dans la bonne catégorie et de les formuler de la bonne façon (inspirez-vous des réponses existantes), sans quoi l'oracle aura l'air d'être à côté de ses pompes.


Syntaxe :

Pour activer Oracle sur un chan, vous devez taper ceci en partyline :
    .chanset #NomDuChan +oracle
et ceci pour le désactiver :
    .chanset #NomDuChan -oracle

!oracle <question>

La commande !oracle_db_size permet au propriétaire de l'eggdrop de compter et d'afficher le nombre de réponses dans la base de données.


Exemple :
Citation :<MenzAgitat> !oracle est-ce que ce script déchire sa mémère ?
<Boole> MenzAgitat > grave !

Changelog :
Citation :1.0
  • 1ère version
2.0
  • Le code a été en grande partie réécrit, ce qui induit la correction de certains bugs potentiels, plus d'évolutivité, plus de rapidité.
  • Utiliser le script tout seul sur un chan ne provoque plus d'erreur. (merci à panfleto pour l'avoir découvert et à Artix pour la solution élégante)
  • La détection du type de question est maintenant plus fiable et tolère une orthographe approximative ainsi que de nombreuses variantes.
  • Ajout d'un grand nombre de nouvelles réponses.
  • Ajout de plusieurs nouveaux types de réponses.
  • Ajout de la commande !oracle_db_size qui permet de compter et d'afficher le nombre de réponses dans la base de données (owner seulement).
  • L'activation/désactivation du script sur chaque chan se fait maintenant au moyen de la commande .chanset #NomDuChan [+/-]oracle (à taper en partyline)
  • Passage sous licence Creative Commons.
2.1
  • Correction du type de questions "que...." comme dans "que fais-tu ?"
  • Ajout d'une nouvelle réponse (pour un nouveau total de 563).
  • Amélioration de la détection des packages.
  • Quelques optimisations mineures du code.
2.2
  • Amélioration de la détection du type de question : désormais, moins de questions devraient retourner une réponse neutre.
  • Le nombre de réponses directes oui/non a été légèrement augmenté.
  • Le script requiert maintenant le package MenzAgitat's Soundex v2.1
  • En raison de la mise à jour du soundex, les caractères non-alphabétiques n'influent plus sur la phonétique et la détection de questions déjà posées s'en trouve améliorée.
  • Ajout de 47 nouvelles réponses.
2.3
  • Correction : les question du type "Qu'est" étaient parfois mal détectées.
  • Modification : Le package Related Differential Report v1.1 est désormais requis : l'Oracle utilise maintenant le Rapport de Relation Différentielle plutôt que la Distance de Levenshtein pour détecter des questions similaires mais écrites ou formulées différemment. (script du même auteur à télécharger séparément).
  • Modification : le package Levenshtein n'est désormais plus requis.
  • Modification : Le package HaploPhone v3.0 est désormais requis : l'Oracle utilise maintenant HaploPhone, qui est une version améliorée de l'ancien package MenzAgitats_Soundex.
  • Modification : Le package MenzAgitats_Soundex n'est désormais plus requis.
  • Modification : Afin de diminuer la consommation de mémoire, les réponses aux questions déjà posées ne seront plus stockées littéralement, mais sous la forme type/index.
  • Modification : si une question mémorisée ressemble à une question posée de type différent, elle ne sera désormais plus considérée comme identique.
  • Ajout de 5 nouvelles réponses (pour un nouveau total de 615).
  • Nombreuses optimisations du code.
2.3.1
  • Correction : le script indiquait un problème de version lors du chargement sur un Eggdrop v1.8.x
  • Correction : utiliser la variable $question dans une réponse provoquait une erreur.

Téléchargement : Oracle  v2.3.1

Vous pouvez trouver une liste de mes autres releases ici


Laissez vos commentaires / suggestions / rapports de bugs.
Répondre Avertir
#2
salut,
l'idée est bonne, eventuellement peut etre utile,
Citation :<MenzAgitat> !oracle est-ce que ce script déchire sa mémère ?
<Boole> MenzAgitat > grave !
mais si je tape un truc !oracle nickserv
quelle sera sa reponse ? une definition ? une annerie ? me renverra demander à google/wiki , une annerie ?

Ou pioche t il ses reponses ? une BDD ? le net ? ( je n'ai pas lu le code, ni telechargé encore.)

Le fait d'utiliser 2 autres codes pour le faire tourner, m'arrete un peu Smile ( j'utilse un tcl, qui a pour fonction justement de ne pas avoir à editer le eggdrop.conf, a chaque ajout / retrait de tcl donc pas d'ordre de chargement de tcl)

Merci des ameliorations et reponses futures .
Répondre Avertir
#3
cestlemien a écrit :mais si je tape un truc !oracle nickserv
quelle sera sa reponse ? une definition ? une annerie ? me renverra demander à google/wiki , une annerie ?
MenzAgitat a écrit :<MenzAgitat> !oracle nickserv
<Boole> et à part ça, t'avais pas une question à me poser ?
cestlemien a écrit :Ou pioche t il ses reponses ? une BDD ? le net ? ( je n'ai pas lu le code, ni telechargé encore.)
Il puise ses réponses dans une base de données intégrée au script. Télécharge le fichier, ça m'aura pris plus de temps de te répondre que toi de le télécharger et te rendre compte toi-même.
cestlemien a écrit :Le fait d'utiliser 2 autres codes pour le faire tourner, m'arrete un peu ( j'utilse un tcl, qui a pour fonction justement de ne pas avoir à editer le eggdrop.conf, a chaque ajout / retrait de tcl donc pas d'ordre de chargement de tcl)
Les deux fichiers externes requis pour faire fonctionner Oracle ont été séparés exprès du script car ils peuvent être utilisés par d'autres scripts (et le seront sans doute dans certains de mes futurs scripts).

Ils sont codés proprement, chacun dans un namespace, chacun ayant sa propre procédure de désinstallation automatique intégrée (évitant de devoir .restart l'eggdrop pour désinstaller le script complètement ou pour le modifier) donc tu peux les installer sans hésiter.

Quant à ton script d'installation qui ne respecte pas d'ordre de chargement, moi je dis que faut pas te laisser manipuler par la machine. Il important de prendre garde à l'ordre de chargement des scripts car il arrive que certains soient requis par certains autres.
De plus, il est toujours bon qu'un script qui s'occuperait de l'identification de l'eggdrop auprès des services, soit chargé en 1er.

Améliore ton installeur afin qu'il gère cet aspect ou fais l'installation à la main.
Répondre Avertir
#4
Re ;
Merci pour ces reponses on ne peu plus claires Smile Quand à ton exemple sur l'identification au services, les renseignement sont dans mon eggdrop.conf , et un tcl via une commande reserver au flag n ( /msg monbot reidentification) lance la procedure ( automatisé via mon script IRC lors d'un retour des services) effectivement quelques tcl sont notés en "dur" bien entendu à la fin du eggdrop.conf comme tu le soulignes, il le faut pour certains TCL qui fonctionnent entre eux.Je ne faisait cette remarque que lorsque je fait des test de TCL, juste de la feignantise / gain de temp de ne pas devoir editer le fichier de configuration de l'eggdrop.

Merci.

(petite idée en passant, pourquoi ne pas faire 2 zip ? )
- 1 contenant QUE le tcl (pour ceux qui ont dejà les deux autres.)
- 1 autre contenant les trois ? (pour les autres xD )
Répondre Avertir
#5
cestlemien a écrit :(petite idée en passant, pourquoi ne pas faire 2 zip ? )
- 1 contenant QUE le tcl (pour ceux qui ont dejà les deux autres.)
- 1 autre contenant les trois ? (pour les autres xD )
Parce qu'ainsi ça permet de mettre à jour facilement l'un des 3 composants sans avoir à refaire tout les packs qui les utilisent.
Répondre Avertir
#6
Bonsoir,

Sauf erreur, le lien du Levenshtein.tcl mène au script du motus...
Répondre Avertir
#7
C'est ma foi vrai, euh.. c'est euh... c'était pour voir si vous suiviez ^^''

et euh...

c'est bien

... vous suivez
Répondre Avertir
#8
Coucou ici aussi ^^

Meme tarif que sur l'autre post, ça marche niquel ...
Répondre Avertir
#9
euh !!! pour les fleurs on peut ??.. oui ok..

super boulot MenzAgitat et ce pour toutes tes tcl vraiment tres biens
j ais encore du chemin a faire pour arrivé a tes chevilles
mais gaffe a ce qu elles enflent pas Wink) quoi que ....
Répondre Avertir
#10
Hello,

Sorry for speaking English but I can't speak French Sad

I'm testing oracle, the idea is to use it in Spanish. I think it shouldn't be any problem with Levenshtein.tcl since it should work in every language.

Neither with MenzAgitats_Soundex.tcl since I could just change the "string map" from French special chars to Spanish ones (ie. "à" to "á").

I'd also modify "string matches" and some other few things in Oracle.tcl to suit my needs.

Anyway, I'm testing all in French for now, but I can't make it work.

Citation :<panfleto> !oracle est-ce que ce script déchire sa mémère ?

Tcl error [Oracle::ask_oracle]: random limit must be greater than zero

It worked when I used !oracle command without input or only with a interrogation mark.

Citation :<panfleto> !oracle
<eggdrop> !panfleto
<panfleto> !oracle ?
<eggdrop> !panfleto ?

I'm using eggdrop 1.6.20 (*not* windrop) but I have the same problem with eggdrop 1.6.19. The three required scripts are loaded.

*Edited: pasted .set errorInfo output:

Citation :.set errorInfo

Currently: random limit must be greater than zero
Currently: while executing
Currently: "rand [llength $users_list]"
Currently: (procedure "Oracle::randnick" line 4)
Currently: invoked from within
Currently: "Oracle::randnick $nick $chan"
Currently: (procedure "Oracle::ask_oracle" line 44)
Currently: invoked from within
Currently: "Oracle::ask_oracle $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"


*Edit2: Sorry, I realized that with at least a 3rd user in chan, besides the one who ask !oracle and the Oraclebot (or other bots on the botnet) the script works.

Code :
# Retourne un nick aléatoire parmi les users présents sur le chan
# (sauf l'eggdrop, sauf les autres eggs du botnet, sauf l'user qui a posé la
# question)
proc Oracle::randnick {nick chan} {
    set users_list [lreplace [set users [chanlist $chan -b|]] [set index [lsearch $users $nick]] $index]
    set users_list [lreplace $users_list [set index [lsearch $users_list $::botnick]] $index]
    return [lindex $users_list [rand [llength $users_list]]]
}

Could this be disabled without affecting the whole script?

*Edit3: I think I got it. I just need to remove proc Oracle::randnick and stop using $randnick variable Smile


Merci beaucoup.
Répondre
#11
You shouldn't remove features :s
The point is, you're not supposed to use the script alone, do you ? I mean, what for ? it's not fun Razz
Anyway, i think you can mod the thingy otherwise.
I'd rather make the script outputs the nick "Somebody" when there's not enough people to use the proc :
tcl
proc Oracle::randnick {nick chan} {
    set users_list [lreplace [set users [chanlist $chan -b|]] [set index [lsearch $users $nick]] $index]
    set users_list [lreplace $users_list [set index [lsearch $users_list $::botnick]] $index]
    if {![llength $users_list]} { return Somebody }
    return [lindex $users_list [rand [llength $users_list]]]
}


Répondre Avertir
#12
Yeah, that's really a nice solution.


Merci, Artix Smile
Répondre
#13
Nouvelle version disponible : v2.0

Changelog :
Citation :v1.0
  • 1ère version
v2.0
  • Le code a été en grande partie réécrit, ce qui induit la correction de certains bugs potentiels, plus d'évolutivité, plus de rapidité.
  • Utiliser le script tout seul sur un chan ne provoque plus d'erreur. (merci à panfleto pour l'avoir découvert et à Artix pour la solution élégante)
  • La détection du type de question est maintenant plus fiable et tolère une orthographe approximative ainsi que de nombreuses variantes.
  • Ajout d'un grand nombre de nouvelles réponses.
  • Ajout de plusieurs nouveaux types de réponses.
  • Ajout de la commande !oracle_db_size qui permet de compter et d'afficher le nombre de réponses dans la base de données (owner seulement).
  • L'activation/désactivation du script sur chaque chan se fait maintenant au moyen de la commande .chanset #NomDuChan [+/-]oracle (à taper en partyline)
  • Passage sous licence Creative Commons.

Téléchargement : Oracle v2.0
Répondre Avertir
#14
Nouvelle version disponible : v2.1

Changelog partiel :
Citation :2.1
  • Correction du type de questions "que...." comme dans "que fais-tu ?"
  • Ajout d'une nouvelle réponse (pour un nouveau total de 563).
  • Amélioration de la détection des packages.
  • Quelques optimisations mineures du code.

Téléchargement : Oracle v2.1
Répondre Avertir
#15
Nouvelle version disponible : v2.2

Changelog partiel :
Citation :2.2
  • Amélioration de la détection du type de question : désormais, moins de questions devraient retourner une réponse neutre.
  • Le nombre de réponses directes oui/non a été légèrement augmenté.
  • Le script requiert maintenant le package MenzAgitat's Soundex v2.1
  • En raison de la mise à jour du soundex, les caractères non-alphabétiques n'influent plus sur la phonétique et la détection de questions déjà posées s'en trouve améliorée.
  • Ajout de 47 nouvelles réponses.

Téléchargement : Oracle v2.2
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté