Il s'agit de la commande dbacl qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos nombreux postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
dbacl - un classificateur bayésien digrammique pour la reconnaissance de texte.
SYNOPSIS
dbacl [-01dvnirmwMNDXW] [-T type ] -l category [-h longueur du câble] [-H taille g] [-X décim] [-q
qualité] [-w max_order] [-e deftok] [-O en ligne] [-L mesurer] [-g regex] ...
[FICHIER]...
dbacl [-vnimNRX] [-h longueur du câble] [-T taper] -c category [-c category]... [-f garder]... [DÉPOSER]...
dbacl -V
APERÇU
dbacl est un classificateur bayésien de textes et d'e-mails. Lorsqu'on utilise -l commutateur, il apprend un corps
de texte et produire un fichier nommé category qui résume le texte. Lorsque vous utilisez le -c
commutateur, il compare un flux de texte d'entrée avec n'importe quel nombre de category fichiers et sorties
le nom de la correspondance la plus proche, ou éventuellement divers scores numériques expliqués ci-dessous.
Bien que cette page de manuel soit destinée à servir de référence, il existe plusieurs didacticiels et
documents que vous pouvez consulter pour obtenir des informations spécialisées. Documentation spécifique sur le
la conception de dbacl et les modèles statistiques qu'il utilise peuvent être trouvés dans dbacl.ps. Pour un
aperçu de base de la classification de texte à l'aide de dbacl, voir tutorial.html. Un tutoriel complémentaire
Le fichier email.html est destiné au filtrage des e-mails. Si vous rencontrez des difficultés pour que dbacl
Pour classer de manière fiable, consultez le fichier is_it_working.html. La section UTILISATION de cette page de manuel
a quelques exemples.
/usr/share/doc/dbacl/dbacl.ps
/usr/share/doc/dbacl/tutorial.html
/usr/share/doc/dbacl/email.html
/usr/share/doc/dbacl/is_it_working.html
dbacl utilise un modèle de langage à entropie maximale (divergence minimale) construit en respectant
à une mesure de référence digrammique (les jetons inconnus sont prédits à partir de digrammes, c'est-à-dire des paires de
lettres). Concrètement, cela signifie qu'un category est construit à partir de jetons dans le
ensemble d'entraînement, tandis que les jetons précédemment invisibles peuvent être prédits automatiquement à partir de leur
lettres. Un jeton ici est soit un mot (fragment), soit une combinaison de mots (fragments),
sélectionnés selon différents commutateurs. L'apprentissage fonctionne en ajustant le jeton.
probabilités jusqu'à ce que les données d'entraînement soient les moins surprenantes.
EXIT STATUT
Les conventions de sortie du shell ne sont pas respectées (désolé !). Lors de l'utilisation de -l commander
forme, dbacl renvoie zéro en cas de succès, et une valeur différente de zéro en cas d'erreur. -c forme,
dbacl renvoie un entier positif correspondant à la category avec le postérieur le plus haut
probabilité. En cas d'égalité, la première catégorie la plus probable est choisie. En cas d'erreur
se produit, dbacl renvoie zéro.
DESCRIPTION
Lorsque vous utilisez le -l formulaire de commande, dbacl apprend une catégorie lorsqu'on lui donne un ou plusieurs noms de FICHIER,
qui doit contenir du texte ASCII lisible. Si aucun FICHIER n'est fourni, dbacl apprend de STDIN. Si
FILE est un répertoire, il est ouvert et tous ses fichiers sont lus, mais pas ses sous-répertoires.
Le résultat est enregistré dans le fichier binaire nommé category, et remplace complètement tout
contenu précédent. Par commodité, si la variable d'environnement DBACL_PATH contient un
répertoire, qui est alors ajouté au chemin du fichier, à moins que category commence par un '/' ou un
'.'.
Le texte d'entrée pour l'apprentissage est supposé être du texte brut non structuré par défaut. Ceci est
ne convient pas à l'apprentissage du courrier électronique, car le courrier électronique contient divers codages de transport et
instructions de formatage qui peuvent réduire l'efficacité de la classification. Vous devez utiliser -T
changer dans ce cas pour que dbacl sait qu'il doit effectuer le décodage et le filtrage MIME
et HTML, selon le cas. Les valeurs de commutateur appropriées sont « -T email » pour l'entrée email RFC2822,
"-T html" pour l'entrée HTML, "-T xml" pour l'entrée de style XML générique et "-T text" est le
format texte brut par défaut. Il existe d'autres valeurs -T interrupteur qui permet également de bien
réglage des capacités de décodage.
Lorsque vous utilisez le -c formulaire de commande, dbacl tente de classer le texte trouvé dans le FICHIER, ou
STDIN si aucun FICHIER n'est fourni. Chaque category doivent être donnés séparément et doivent être
le nom de fichier d'un corpus de textes précédemment appris. Par commodité, si la variable
DBACL_PATH contient un répertoire, il est ajouté au début de chaque chemin de fichier qui ne démarre pas
avec un « / » ou un « . ». La sortie visible de la classification dépend de la combinaison
des commutateurs supplémentaires utilisés. Si aucun commutateur n'est utilisé, aucune sortie n'est affichée sur STDOUT. Cependant,
dbacl produit toujours un code de sortie qui peut être testé.
Pour voir une sortie pour une classification, vous devez utiliser au moins l'un des -v,-U,-n,-N,-D,-d
commutateurs. Parfois, ils peuvent être utilisés en combinaison pour produire une variation naturelle de
leurs productions individuelles. Parfois, dbacl génère également des avertissements sur STDERR si applicable.
Le manuel de formation -v switch affiche le nom de la meilleure catégorie parmi tous les choix proposés.
Le manuel de formation -U le commutateur affiche le nom de la meilleure catégorie suivi d'un pourcentage de confiance.
Normalement, c'est le commutateur que vous souhaitez utiliser. Un pourcentage de 100 % signifie que dbacl
est sûr de son choix, tandis qu'un pourcentage de 0% signifie qu'une autre catégorie est également
probable. Il ne s'agit pas de la probabilité du modèle, mais d'une mesure du degré de clarté de la classification.
est, et peut être utilisé pour marquer les classifications incertaines (par exemple si la confiance est de 25 % ou moins).
Le manuel de formation -N switch imprime chaque nom de catégorie suivi de sa probabilité (postérieure), exprimée
en pourcentage. La somme des pourcentages est toujours égale à 100 %. C'est intuitif, mais seulement utile
si le document classifié contient une poignée de jetons (dix ou moins). Dans le cas commun
dans le cas où il y a beaucoup plus de jetons, les probabilités sont toujours extrêmement proches de 100% et 0%.
Le manuel de formation -n switch imprime chaque nom de catégorie suivi du logarithme négatif de sa
probabilité. Cela équivaut à utiliser la -N commutateur, mais bien plus utile. Le plus petit
Le nombre donne la meilleure catégorie. Une forme plus pratique consiste à utiliser les deux -n et -v qui
imprime chaque nom de catégorie suivi de l'entropie croisée et du nombre de jetons analysés.
L'entropie croisée mesure (en bits) le taux de compression moyen qui est réalisable,
selon le modèle de catégorie donné, par jeton de texte saisi. Si vous utilisez les trois -n,-v,-X
puis une valeur supplémentaire est générée pour chaque catégorie, représentant une sorte de valeur p pour chaque
Score de catégorie. Cela indique la similarité du score par rapport à la formation.
documents, mais ne fonctionne que si le -X le commutateur a été utilisé pendant l'apprentissage, et seulement pour certains
types de modèles (par exemple, courriel). Ces valeurs p sont uniformément distribuées et indépendantes.
(si les catégories sont indépendantes), elles peuvent donc être combinées à l'aide du test du chi carré de Fisher pour
obtenir des valeurs p composites pour des regroupements de catégories.
Le manuel de formation -v et -X les commutateurs impriment ensemble chaque nom de catégorie suivi d'un
décomposition du score de catégorie, factorisé en (taux de divergence + entropie de Shannon)
taux )* nombre de jetons @ valeur p. Encore une fois, cela ne fonctionne que dans certains types de modèles.
Le manuel de formation -v et -U les commutateurs impriment chaque nom de catégorie suivi d'une décomposition du
score de catégorie dans (taux de divergence + taux d'entropie de Shannon # variance de score)* jeton
compter.
Le manuel de formation -D le commutateur imprime le texte d'entrée tel que modifié en interne par dbacl antérieurement à
Tokenisation. Par exemple, si un document électronique codé MIME est classifié, alors ceci
imprime le texte décodé qui sera effectivement tokenisé et classé. Ce commutateur est
principalement utile pour le débogage.
Le manuel de formation -d Le commutateur vide les jetons et les scores pendant leur lecture. Il est utile pour
débogage, ou si vous souhaitez créer des représentations graphiques de la classification.
L'explication détaillée de la sortie dépasse le cadre de cette page de manuel, mais est
C'est simple si vous avez lu dbacl.ps. Les variantes possibles incluent -d avec -n
or -N.
La classification peut en principe être effectuée avec une ou plusieurs catégories. Lorsque deux ou plusieurs
les catégories sont utilisées, la probabilité postérieure bayésienne est utilisée, étant donné le texte d'entrée,
avec une distribution a priori uniforme sur les catégories. Pour d'autres choix de distribution a priori, voir
utilitaire compagnon bayésol(1). Lorsqu'une seule catégorie est utilisée, la classification peut être effectuée
en comparant le score à un seuil. En pratique, cependant, des résultats bien meilleurs sont
obtenu avec plusieurs catégories.
L'apprentissage et la classification ne peuvent pas être mélangés sur la même invocation de commande, cependant il y a
pas de problèmes de verrouillage et séparé dbacl les processus peuvent fonctionner simultanément avec des éléments évidents
résultats, car les opérations sur les fichiers sont conçues pour être atomiques.
Enfin, notez que dbacl ne gère pas vos corpus de documents ni vos données informatiques
catégories, et en particulier il ne permet pas d'étendre un fichier de catégories existant
avec de nouveaux documents. Ceci est différent des nombreux filtres anti-spam actuels, qui peuvent apprendre de nouveaux
e-mails de manière incrémentielle. Cette limitation dbacl est en partie dû à la procédure non linéaire
utilisé dans l'algorithme d'apprentissage, et en partie un désir de flexibilité accrue.
Vous pouvez simuler l’effet de l’apprentissage progressif en enregistrant vos documents de formation dans
archives et en ajoutant à ces archives au fil du temps, en réapprenant périodiquement à partir de zéro.
L'apprentissage est en fait plus rapide si ces archives sont compressées et décompressées à la volée
En cas de besoin. En gardant le contrôle de vos archives, vous ne perdrez jamais les informations qu'elles contiennent.
vos catégories, et vous pouvez facilement expérimenter différents commutateurs ou tokenisations ou
des ensembles de documents de formation si vous le souhaitez.
Notes INTERRUPTEURS
Par défaut, dbacl classe le texte d'entrée dans son ensemble. Cependant, lors de l'utilisation de -f option,
dbacl peut être utilisé pour filtrer chaque ligne d'entrée séparément, en imprimant uniquement les lignes qui
correspondre à un ou plusieurs modèles identifiés par garder (utilisez le nom ou le numéro de catégorie pour faire référence à une
catégorie). Ceci est utile si vous souhaitez filtrer certaines lignes, mais notez que si les lignes
sont courts, le taux d’erreur peut être élevé.
Le manuel de formation -e,-w,-g,-j Les commutateurs sont utilisés pour sélectionner un schéma de tokenisation approprié.
Un jeton est un mot, un fragment de mot ou une combinaison de mots ou de fragments. La forme des jetons
est important car il constitue la base des modèles de langage utilisés par dbaclL’ -e
Le commutateur sélectionne un schéma de tokenisation prédéfini, rapide mais limité. -w
switch spécifie les jetons composites dérivés du -e commutateur. Par exemple : « -e alnum -w 2 »
signifie que les jetons doivent être des fragments de mots alphanumériques combinés en paires qui se chevauchent
(bigrammes). Lorsque le -j switch est utilisé, tous les jetons sont convertis en minuscules, ce qui
réduit le nombre de jetons possibles et donc la consommation de mémoire.
Si la -g le commutateur est utilisé, vous pouvez spécifier complètement à quoi doivent ressembler les jetons
en utilisant une expression régulière. Plusieurs -g Les commutateurs peuvent être utilisés pour construire des structures complexes.
schémas de tokenisation, et les parenthèses dans chaque expression peuvent être utilisées pour sélectionner
fragments et les combiner en n-grammes. Le coût d'une telle flexibilité est réduit
Classification et vitesse d'apprentissage. Lorsque vous expérimentez des schémas de tokenisation, essayez d'utiliser
le -d or -D commute pendant l'apprentissage ou la classification, car ils imprimeront les jetons
explicitement afin que vous puissiez voir quels fragments de texte sont repris ou omis. Pour les
syntaxe d'expression, voir regex (7).
Le manuel de formation -h et -H les commutateurs régulent la quantité de mémoire dbacl peut être utilisé pour l'apprentissage. Texte
la classification peut utiliser beaucoup de mémoire et, par défaut, dbacl se limite même au
au détriment de la précision de l'apprentissage. Dans de nombreux cas, si une limite est atteinte, un message d'avertissement s'affiche.
être imprimé sur STDERR avec quelques conseils.
En réapprenant plusieurs fois la même catégorie, une accélération significative peut être obtenue en
en utilisant l' -1 commutateur, car cela permet de lire les probabilités précédemment apprises
la catégorie et réutilisée.
Il convient de noter que la précision de la classification dépend avant tout de la quantité et de la qualité des
échantillons de formation, puis uniquement sur la quantité de réglages.
EXIT STATUT
Lorsque vous utilisez le -l formulaire de commande, dbacl renvoie zéro en cas de succès. Lors de l'utilisation de -c forme,
dbacl renvoie un entier positif (1,2,3...) correspondant à la category avec le plus haut
probabilité postérieure. En cas d'égalité, la première catégorie la plus probable est choisie. Si une
une erreur se produit, dbacl renvoie zéro.
OPTIONS
-0 Lors de l'apprentissage, empêche la précharge du poids. Normalement, dbacl vérifie si la catégorie
le fichier existe déjà et, si c'est le cas, essaie d'utiliser les poids existants comme point de départ
point. Cela peut considérablement accélérer l'apprentissage. Si le -0 le commutateur (zéro) est réglé,
puis dbacl se comporte comme si aucun fichier de catégorie n'existait déjà. Ceci est particulièrement utile pour
Ce commutateur est désormais activé par défaut pour protéger contre les dérives de poids.
ce qui peut réduire la précision au fil des itérations d'apprentissage. -1 à forcer
préchargement.
-1 Forcer le préchargement du poids si le fichier de catégorie existe déjà. Voir la discussion sur le
-0 interrupteur.
-a Ajoute les scores. Chaque ligne d'entrée est écrite sur STDOUT et les scores dbacl sont
ajouté. Ceci est utile pour le post-traitement avec bayésol(1). Pour faciliter la
traitement, chaque ligne d'entrée d'origine est indentée par un seul espace (pour distinguer
à partir des scores annexés), et la ligne avec les scores (si -n est utilisé) est
préfixé par la chaîne « scores ». Si une seconde copie de dbacl doit lire ceci
sortie plus tard, elle doit être invoquée avec le -A interrupteur.
-d Vider les paramètres du modèle sur STDOUT. En conjonction avec -l option, cette
produit un résumé lisible par l'homme du modèle d'entropie maximale. En conjonction avec
le -c option, affiche la contribution de chaque jeton au score final.
Supprime toutes les autres sorties normales.
-e Sélectionne la classe de caractères pour la tokenisation par défaut (non basée sur des expressions régulières). Par défaut,
Les jetons sont des chaînes alphabétiques uniquement. Ceci correspond au cas où deftok is
« alpha ». Valeurs possibles pour deftok sont « alpha », « alnum », « graph », « char », « cef »
et « adp ». Ces deux derniers sont des tokenizers personnalisés destinés aux e-mails. Voir
aussi isalpha(3). Le tokeniseur « char » récupère les caractères imprimables uniques plutôt que
que des jetons plus gros, et est destiné uniquement aux tests.
-f Filtrer chaque ligne d'entrée séparément, en passant à STDOUT uniquement les lignes qui correspondent à
category identifiée en tant que garderCette option doit être utilisée à plusieurs reprises pour chaque
category qui doit être conservé. garder peut être soit le category nom de fichier, ou un
entier positif représentant le requis category dans le même ordre qu'il apparaît sur
la ligne de commande.
Les lignes de sortie sont vidées dès leur écriture. Si le fichier d'entrée est un tube
ou un périphérique de caractères, puis une tentative est effectuée pour utiliser le mode de mise en mémoire tampon de ligne, sinon
la mise en mémoire tampon de bloc la plus efficace est utilisée.
-g Apprendre uniquement les fonctionnalités décrites par l'expression régulière étendue regex
remplace la méthode de sélection de fonctionnalités par défaut (voir -w option) et apprend, pour chaque
ligne d'entrée, uniquement les jetons construits à partir de la concaténation de chaînes qui
faire correspondre les sous-expressions balisées dans les éléments fournis regex. Toutes les sous-chaînes qui
rencontre regex dans un suffixe de chaque ligne d'entrée sont traités comme des fonctionnalités, même si
ils se chevauchent sur la ligne d'entrée.
En guise de commodité facultative, regex peut inclure le suffixe ||xyz ce qui indique
quelles sous-expressions entre parenthèses doivent être étiquetées. Dans ce cas, xyz devrait
se composent exclusivement de chiffres de 1 à 9, numérotant exactement les sous-expressions qui
doivent être étiquetés. Autrement, s'il n'y a pas de parenthèses dans regex, alors c'est
suppose que l'expression entière doit être capturée.
-h Définit la taille de la table de hachage à 2^longueur du câble éléments. Lors de l'utilisation du -l option, cette
fait référence au nombre total de caractéristiques autorisées dans le modèle d'entropie maximale
appris. Lorsque vous utilisez le -c option avec le -M commutateur et type multinomial
catégories, cela fait référence au nombre maximal de fonctionnalités prises en compte lors
classification. Sans le -M commutateur, cette option n'a aucun effet.
-i Mode entièrement internationalisé. Force l'utilisation de caractères larges en interne, ce qui
est nécessaire dans certaines régions. Cela entraîne une pénalité de performance notable.
-j : les fonctionnalités sont sensibles à la casse. Normalement, toutes les fonctionnalités sont converties en minuscules.
pendant le traitement, ce qui réduit les besoins de stockage et améliore les statistiques
Estimations pour les petits ensembles de données. Avec cette option, la casse d'origine est utilisée.
pour chaque fonctionnalité. Cela peut améliorer la précision de la classification.
-m Mappe de manière agressive les catégories en mémoire et les verrouille dans la RAM pour empêcher
échanger, si possible. Ceci est utile lorsque la vitesse est primordiale et que la mémoire est
abondant, par exemple lors du test du classificateur sur de grands ensembles de données.
Le verrouillage peut nécessiter d'assouplir les limites d'utilisation avec ulimit(1). Demandez à votre système
administrateur. Soyez prudent lorsque vous utilisez le -m commuter avec le -o commutateur, comme seul
Un processus dbacl doit apprendre ou classer à la fois pour éviter la corruption des fichiers. Si
aucun apprentissage n'a lieu, alors le -m Le commutateur de classification est toujours sûr à utiliser.
Voir aussi la discussion pour le -o interrupteur.
-n Imprimer les scores pour chaque category. Chaque score est le produit de deux nombres, le
l'entropie croisée et la complexité du texte d'entrée sous chaque modèle.
ensemble, ils représentent la probabilité logarithmique que l'entrée ressemble au modèle.
voir ces numéros séparément, utiliser également le -v option. En conjonction avec le -f
option, arrête le filtrage mais imprime chaque ligne d'entrée précédée d'une liste de scores
pour cette ligne.
-q Sélectionner qualité d'apprentissage, où qualité peut être 1,2,3,4, XNUMX, XNUMX, XNUMX. Des valeurs plus élevées prennent plus de temps
à apprendre, et devrait être légèrement plus précis. La valeur par défaut qualité est 1 si le
le fichier de catégorie n'existe pas ou les poids ne peuvent pas être préchargés, et 2 sinon.
-o Lors de l'apprentissage, lit/écrit des décomptes partiels de jetons afin de pouvoir les réutiliser. Normalement,
les fichiers de catégories sont appris exactement à partir des données d'entrée fournies et ne contiennent pas
informations superflues. Lorsque cette option est activée, des informations supplémentaires sont
enregistré dans le fichier en ligne, après lecture de toutes les entrées. Ces informations peuvent être relues.
la prochaine fois que l'apprentissage se produit, pour continuer là où l'ensemble de données précédent s'est arrêté
désactivé. Si en ligne n'existe pas, il est créé. Si en ligne existe, il est lu avant
et mis à jour par la suite. Le fichier est environ trois fois plus volumineux (à
moins) que les savants category.
In dbacl, les mises à jour de fichiers sont atomiques, mais si vous utilisez le -o commutateur, deux ou plus
les processus ne doivent pas apprendre simultanément, car un seul processus écrira un message durable.
catégorie et vidage de mémoire. Le -m Le commutateur peut également accélérer l'apprentissage en ligne, mais
Attention à une possible corruption. Un seul processus peut lire ou écrire un fichier. Ceci
L'option est principalement destinée aux tests contrôlés.
-r Apprendre uniquement le modèle de référence digrammique. Ignore l'apprentissage des fonctionnalités supplémentaires dans
le corpus de textes.
-v Mode verbeux. Lors de l'apprentissage, affiche les détails du calcul, lorsque
classer, imprimer le nom du plus probable category. En collaboration avec
le -n option, imprime les scores comme un produit explicite de l'entropie croisée et
la complexité.
-w Sélectionnez les fonctionnalités par défaut comme n-grammes jusqu'à max_order. Ceci est incompatible avec
le -g option, qui a toujours la priorité. Si aucune -w or -g des options sont proposées,
dbacl suppose -w 1. Notez que les n-grammes pour n supérieur à 1 ne chevauchent pas la ligne
pauses par défaut. Le -S le commutateur permet le chevauchement de ligne.
-x Définit la probabilité de décimation à 1 - 2^(-décim). Pour réduire les besoins en mémoire lorsque
Lors de l'apprentissage, certaines entrées sont ignorées de manière aléatoire et seules quelques-unes sont ajoutées au modèle.
Le comportement exact dépend des conditions applicables. -T option (la valeur par défaut est -T « texte »). Lorsque
le type n'est pas « e-mail » (par exemple « texte »), alors des fonctionnalités d'entrée individuelles sont ajoutées avec
probabilité 2^(-décim). Lorsque le type est « e-mail », les messages d'entrée complets sont
ajouté avec une probabilité de 2^(-décim). Dans chacun de ces messages, toutes les fonctionnalités sont
utilisé.
-A Attendez-vous à des entrées et des scores en retrait. Avec ce commutateur, dbacl s'attend à ce que les lignes d'entrée soient
indenté par un seul caractère d'espace (qui est ensuite ignoré). Les lignes commençant par
tout autre caractère est ignoré. C'est l'équivalent de -a interrupteur ci-dessus.
Lorsqu'il est utilisé avec le -a commutateur, dbacl affiche les lignes sautées telles quelles,
et réinsère l'espace au début de chaque ligne d'entrée traitée.
-D Affiche la sortie de débogage. Ne pas utiliser normalement, mais peut être très utile pour afficher les
lister les fonctionnalités acquises lors de l'apprentissage.
-H Autorise la table de hachage à croître jusqu'à un maximum de 2^taille g éléments pendant l'apprentissage.
La taille initiale est donnée par -h option.
-L Sélectionnez la mesure de référence digrammique pour les transitions de caractères. mesurer peuvent être
L'une des options suivantes est « uniforme », « dirichlet » ou « maxent ». La valeur par défaut est « uniforme ».
-M Force les calculs multinomiaux. Lors de l'apprentissage, force les caractéristiques du modèle à être
traité de manière multinomiale. Lors de la classification, corrige les scores d'entropie pour refléter
probabilités multinomiales (applicables uniquement aux modèles de type multinomial, s'ils sont présents).
Les scores seront toujours plus bas, car l’ordre des fonctionnalités est perdu.
-N Imprimer les probabilités postérieures pour chaque category. Ceci suppose que le
catégories forment une liste exhaustive de possibilités. En conjonction avec -f
option, arrête le filtrage mais imprime chaque ligne d'entrée précédée d'un résumé de la
distribution postérieure pour cette ligne.
-R Inclut une catégorie supplémentaire pour le texte purement aléatoire. Cette catégorie est appelée « aléatoire ».
Cela n'a de sens que lorsque vous utilisez le -c option.
-S Active le chevauchement de ligne. Ceci est utile avec l'option -w option pour autoriser les n-grammes
pour n > 1 pour ignorer les sauts de ligne, donc un jeton complexe peut continuer au-delà de la fin de
la ligne. Ceci n'est pas recommandé pour les e-mails.
-T Spécifie un format de texte non standard. Par défaut, dbacl suppose que le texte d'entrée est un
fichier texte purement ASCII. Ceci correspond au cas où type est "texte".
Il existe plusieurs types et sous-types qui peuvent être utilisés pour nettoyer le texte d'entrée de
jetons superflus avant l'apprentissage ou la classification proprement dite. Chaque (sous-)type
vous souhaitez utiliser doit être indiqué avec un -T option sur la ligne de commande,
et implique automatiquement le type correspondant.
Le type « texte » est destiné au texte brut non structuré. Aucun nettoyage n'est effectué.
la valeur par défaut si aucun type n'est donné sur la ligne de commande.
Le type « e-mail » est destiné aux fichiers d'entrée au format mbox ou aux e-mails RFC822 uniques.
sont reconnus et la plupart sont ignorés. Pour inclure des en-têtes supplémentaires conformes à la norme RFC822
(sauf pour les en-têtes de trace), utilisez le sous-type « email:headers ». Pour inclure une trace
Pour les en-têtes, utilisez le sous-type « email:theaders ». Pour inclure tous les en-têtes de l'e-mail, utilisez
le sous-type « email:xheaders ». Pour ignorer tous les en-têtes, sauf l'objet, utilisez
« email:noheaders ». Pour analyser les pièces jointes binaires à la recherche de chaînes, utilisez « email:atts ».
sous-type.
Lorsque le type « e-mail » est activé, le balisage HTML est automatiquement supprimé du texte.
pièces jointes, sauf les pièces jointes textuelles. Pour supprimer également le balisage HTML des pièces jointes simples
Pour les pièces jointes textuelles, utilisez « email:noplain ». Pour empêcher la suppression du balisage HTML dans tout le texte
pièces jointes, utilisez « email:plain ».
Le type « html » permet de supprimer le balisage HTML (entre et balises) et
texte environnant. Notez que si le type « e-mail » est activé, alors « html » est
activé automatiquement pour les pièces jointes de messages compatibles uniquement.
Le type « xml » est comme « html », mais ne respecte pas et , et ne le fait pas
interpréter les balises (cela devrait donc être plus correctement appelé suppression du « balisage d'angle » et
n'a rien à voir avec la sémantique XML réelle).
Lorsque « html » est activé, la plupart des attributs de balisage sont perdus (pour les valeurs de « most » proches
à « tous »). Le sous-type « html:links » force l'analyse et l'apprentissage des URL de liens,
qui seraient autrement ignorés. Le sous-type « html:alt » force l'analyse
Texte alternatif dans les attributs ALT et diverses autres balises. Les « html:scripts »
le sous-type force l'analyse des scripts, « html:styles » force l'analyse des styles,
"html:forms" force l'analyse des valeurs du formulaire, tandis que "html:comments" force l'analyse des
Commentaires HTML.
-U Imprime l'ambiguïté (U). Utilisé en conjonction avec -v commutateur, imprime les scores
suivis de leurs écarts types empiriques. Utilisé seul, il imprime les meilleurs
catégorie, suivie d'une probabilité estimée que ce choix de catégorie soit
sans ambiguïté. Plus précisément, la probabilité mesure l'absence de chevauchement du CLT
intervalles de confiance pour chaque score de catégorie (s'il y a chevauchement, alors il y a
ambiguïté).
Cette probabilité estimée peut être utilisée comme un indicateur « incertain », par exemple si la probabilité estimée
probabilité est inférieure à 50 %. Formellement, un score de 0 % signifie qu'une autre catégorie est
tout aussi susceptibles de s'appliquer à l'entrée, et un score de 100 % signifie qu'aucune autre catégorie
est susceptible de s'appliquer à l'entrée. Notez que ce type de confiance n'est pas lié à
le -X commutateur. De plus, l'estimation de probabilité est généralement faible si le document est
court, ou si le message contient de nombreux jetons qui n'ont jamais été vus auparavant
(s'applique uniquement à la mesure digrammique uniforme).
-V Affiche le numéro de version du programme et quitte.
-W : similaire à -w, mais empêche les fonctionnalités de chevaucher les sauts de ligne. Voir la description de -w.
-X Imprime la confiance dans le score calculé pour chaque category, lorsqu'ils sont utilisés ensemble
grâce à la fonction -n or -N commutateur. Prépare le modèle pour les scores de confiance, lorsqu'il est utilisé avec
le -l commutateur. La confiance est une estimation de la typicité du score,
en supposant l'hypothèse nulle que la catégorie donnée est correcte. Utilisé avec
-v commutateur seul, factorise le score comme la divergence empirique plus le Shannon
l'entropie, multipliée par la complexité, dans cet ordre. -X le commutateur n'est pas pris en charge dans
tous les modèles possibles et affiche un pourcentage de « 0.0 » s'il ne peut pas être calculé.
Notez que pour les documents inconnus, il est assez fréquent d'avoir des confidences proches de
zéro.
UTILISATION
Pour créer deux fichiers de catégorie dans le répertoire courant à partir de deux fichiers texte ASCII nommés
Mark_Twain.txt et William_Shakespeare.txt respectivement, tapez :
% dbacl -l twain Mark_Twain.txt
% dbacl -l shake William_Shakespeare.txt
Vous pouvez désormais classer le texte saisi, par exemple :
% echo "bonjour" | dbacl -v -c twain -c shake
Twain
% echo "être ou ne pas être" | dbacl -v -c twain -c shake
secouer
Notez que le -v l'option au moins est nécessaire, sinon dbacl n'imprime rien.
La valeur de retour est 1 dans le premier cas, 2 dans le second.
% echo "être ou ne pas être" | dbacl -v -N -c twain -c shake
deux 22.63 % secouer 77.37 %
% echo "être ou ne pas être" | dbacl -v -n -c twain -c shake
twain 7.04 * 6.0 shake 6.74 * 6.0
Ces invocations sont équivalentes. Les nombres 6.74 et 7.04 représentent la proximité
Le jeton moyen est attribué à chaque catégorie, et 6.0 correspond au nombre de jetons observés. Si vous souhaitez
pour imprimer une valeur de confiance simple avec la meilleure catégorie, remplacez -v avec -U.
% echo "être ou ne pas être" | dbacl -U -c twain -c shake
shake # 34%
Notez que la vraie probabilité de la catégorie secouer par rapport à la catégorie Twain est de 77.37 %, mais le
le calcul est quelque peu ambigu, et 34 % est la confiance sur 100 % que le
le calcul est qualitativement correct.
Supposons qu'un fichier document.txt contienne des lignes de texte en anglais entrecoupées de lignes de bruit.
filtrer les lignes de bruit des lignes anglaises, en supposant que vous ayez une catégorie existante
secouer dire, taper :
% dbacl -c shake -f shake -R document.txt > document.txt_eng
% dbacl -c shake -f random -R document.txt > document.txt_rnd
Notez que la qualité des résultats variera en fonction de la façon dont les catégories se mélangent.
et aléatoire représentent chaque ligne d'entrée. Il est parfois utile de visualiser l'arrière-plan
probabilités pour chaque ligne sans filtrage :
% dbacl -c shake -f shake -RN document.txt > document.txt_probs
Vous pouvez désormais post-traiter les probabilités postérieures pour chaque ligne de texte avec une autre
script, pour reproduire une règle de décision bayésienne arbitraire de votre choix.
Dans le cas particulier de deux catégories exactement, la procédure de décision bayésienne optimale peut
être mis en œuvre pour les documents comme suit : soit p1 être la probabilité a priori que l'entrée
le texte est classé comme catégorie1. Par conséquent, la probabilité a priori de classer comme
catégorie2 est 1 - p1. Laisse moi u12 être le coût d'une mauvaise classification d'un catégorie1 saisir du texte comme
appartenir à catégorie2 et vice versa pour u21Nous supposons qu'il n'y a aucun coût pour la classification
correctement. Ensuite, la commande suivante implémente la décision bayésienne optimale :
% dbacl -n -c catégorie1 -c catégorie2 | awk '{ si($2 * p1 * u12 > 4 $ * (1 - p1) * u21) {
imprimer $1; } sinon { imprimer $3; } }'
dbacl peut également être utilisé en conjonction avec procmail(1) pour mettre en œuvre une méthode bayésienne simple
Système de classification des e-mails. Supposons que le courrier entrant soit distribué automatiquement.
vers l'un des trois dossiers de courrier situés dans $MAILDIR et nommés travail, personnelet le spam.
Dans un premier temps, ceux-ci doivent être créés et remplis avec des exemples d'e-mails appropriés. crontab(1)
le fichier peut être utilisé pour apprendre les trois catégories une fois par jour, par exemple
CHATS=$HOME/.dbacl
5 0 * * * dbacl -T email -l $CATS/travail $MAILDIR/travail
10 0 * * * dbacl -T email -l $CATS/personnel $MAILDIR/personnel
15 0 * * * dbacl -T email -l $CATS/spam $MAILDIR/spam
Pour envoyer automatiquement chaque e-mail entrant dans le dossier approprié, procédez comme suit
procmailrc(5) Un fragment de recette pourrait être utilisé :
CHATS=$HOME/.dbacl
# exécuter le classificateur de spam
:0 c
YAY=| dbacl -vT email -c $CATS/travail -c $CATS/personnel -c $CATS/spam
# envoyer à la boîte aux lettres appropriée
: 0:
* ? test -n "$YAY"
$MAILDIR/$YAY
: 0:
$ PAR DÉFAUT
Parfois, dbacl enverra le courriel à la mauvaise boîte aux lettres. Dans ce cas, le message mal classé
le message doit être supprimé de sa mauvaise destination et placé dans la bonne boîte aux lettres.
L'erreur sera corrigée lors de la prochaine acquisition de vos messages. Si elle est laissée dans le
mauvaise catégorie, dbacl apprendra les mauvaises statistiques du corpus.
Les fonctionnalités de texte par défaut (jetons) lues par dbacl sont des chaînes purement alphabétiques, qui
minimise les besoins en mémoire, mais peut s'avérer irréaliste dans certains cas. Pour construire des modèles
basé sur des jetons alphanumériques, utilisez le -e commutateur. L'exemple ci-dessous utilise également l'option
-D commutateur, qui imprime une liste de jetons réels trouvés dans le document :
% dbacl -e alnum -D -l twain Mark_Twain.txt | moins
Il est également possible de remplacer la méthode de sélection de fonctionnalités par défaut utilisée pour apprendre le
modèle de catégorie au moyen d'expressions régulières. Par exemple, l'exemple suivant reproduit le
méthode de sélection de fonctionnalités par défaut dans la locale C, tout en étant beaucoup plus lente :
% dbacl -l twain -g '^([[:alpha:]]+)' -g '[^[:alpha:]]([[:alpha:]]+)' Mark_Twain.txt
La catégorie twain obtenue dépend uniquement des mots alphabétiques simples dans le texte
fichier Mark_Twain.txt (et statistiques de diagramme calculées pour la prédiction). Pendant une seconde
exemple, la commande suivante construit un modèle markovien lissé (bigramme de mots) qui
dépend des paires de mots consécutifs dans chaque ligne (mais les paires ne peuvent pas chevaucher une ligne)
casser):
% dbacl -l twain2 -g '(^|[^[:alpha:]])([[:alpha:]]+)||2' -g
'(^|[^[:alpha:]])([[:alpha:]]+)[^[:alpha:]]+([[:alpha:]]+)||23' Mark_Twain.txt
Des modèles n-grammes plus généraux, basés sur des lignes et de tous ordres (jusqu'à 7) peuvent être construits de manière similaire
façon. Pour construire des modèles basés sur des paragraphes, vous devez reformater les corpus d'entrée avec
awk(1) ou sed(1) pour obtenir un paragraphe par ligne. La taille des lignes est limitée par la disponibilité.
mémoire, mais notez que les performances des expressions régulières se dégraderont rapidement pour les longues lignes.
PERFORMANCE
L’hypothèse sous-jacente de l’apprentissage statistique est qu’un nombre relativement faible de
Les documents de formation peuvent représenter un ensemble beaucoup plus vaste de documents d'entrée. Ainsi, à long terme
L'apprentissage peut s'arrêter sans que cela ait un impact sérieux sur la précision de la classification.
Ce n'est pas vrai en réalité, mais cette hypothèse est étonnamment précise pour des problèmes tels que le courrier électronique.
filtrage. En pratique, cela signifie qu'un corpus bien choisi, de l'ordre de dix mille
documents suffisent à obtenir des résultats extrêmement précis pendant des années. Un apprentissage continu après
Une telle masse critique entraîne des rendements décroissants. Bien sûr, lorsque l'on prend en compte les données du monde réel,
Les modèles de documents changent radicalement, et leur pouvoir prédictif peut être perdu.
à l’autre bout, quelques centaines de documents donnent déjà des résultats acceptables dans la plupart des cas.
dbacl est fortement optimisé pour le cas de classifications fréquentes mais de lots peu fréquents
apprentissage. Il s'agit de l'optimum à long terme décrit ci-dessus. Dans des conditions idéales, dbacl Vous pouvez
Classer une centaine d'e-mails par seconde sur du matériel bas de gamme (Pentium III 500 MHz).
la vitesse n'est pas beaucoup plus lente, mais prend effectivement beaucoup plus de temps pour les documents volumineux
collections pour diverses raisons. Lorsque vous utilisez le -m commutateur, les structures de données sont
mappé de manière agressive en mémoire si possible, réduisant ainsi les frais généraux pour les E/S et la mémoire
attributions.
dbacl jette son entrée dès que possible et n'a aucune limite sur le document d'entrée
taille. La classification et la vitesse d'apprentissage sont directement proportionnelles au nombre de
jetons dans l'entrée, mais l'apprentissage nécessite également une étape d'optimisation non linéaire qui prend
temps proportionnel au nombre de jetons uniques découverts. Au moment de la rédaction de cet article, dbacl is
l'un des filtres de courrier open source les plus rapides compte tenu de son scénario d'utilisation optimal, mais utilise
plus de mémoire pour l'apprentissage que les autres filtres.
PLUSIEURS PROCESSUS ET DONNEES LA CORRUPTION
Lors de l'enregistrement des fichiers de catégorie, dbacl écrit d'abord un fichier temporaire au même endroit,
et la renomme ensuite. Si un problème ou un plantage survient pendant l'apprentissage, l'ancienne catégorie
Le fichier est donc conservé intact. Cela garantit que les catégories ne peuvent jamais être corrompues.
peu importe le nombre de processus qui tentent d'apprendre ou de classer simultanément, et cela signifie que les processus valides
les catégories sont disponibles pour la classification à tout moment.
Lorsque vous utilisez le -m commutateur, le contenu du fichier est mappé en mémoire pour une lecture et une écriture rapides.
Ceci, ainsi que le -o commutateur, est principalement destiné à des fins de test, lorsque des dizaines de
des milliers de messages doivent être appris et notés en laboratoire pour mesurer dbacl's
précision. Étant donné qu'aucun verrouillage de fichier n'est tenté pour des raisons de performances, des corruptions sont
possible, à moins de vous assurer qu'un seul dbacl le processus lit ou écrit n'importe quel fichier à tout moment
temps donné. C'est le seul cas (-m et -o ensemble) où la corruption est possible.
MÉMOIRE UTILISATION
Lors de la classification d'un document, dbacl charge toutes les catégories indiquées dans la RAM, donc le total
la mémoire nécessaire est approximativement la somme des tailles de fichiers de catégorie plus une petite valeur fixe
surcharge. Le document d'entrée est consommé pendant sa lecture, sa taille n'a donc pas d'importance,
mais les files d'attente très longues peuvent prendre de la place. Lorsque vous utilisez le -m switch, les catégories sont lues
grâce à mmap(2) selon disponibilité.
Lors de l'apprentissage, dbacl conserve en mémoire une grande structure qui contient de nombreux objets qui
ne sera pas enregistré dans la catégorie de sortie. La taille de cette structure est proportionnelle à la
nombre de jetons uniques lus, mais pas la taille des documents d'entrée, car ils sont
rejetée lors de la lecture. À titre indicatif, cette structure est 4 à 5 fois plus grande que
fichier de catégorie final qui est produit.
Pour éviter une croissance incontrôlée de la mémoire, dbacl alloue par défaut une petite quantité fixe de
mémoire pour les jetons. Lorsque cet espace est épuisé, d'autres jetons sont rejetés, ce qui
effet de biaiser la catégorie apprise, la rendant moins utilisable à mesure que davantage de jetons sont abandonnés.
un avertissement est imprimé sur STDERR dans un tel cas.
Le manuel de formation -h le commutateur vous permet de fixer la taille initiale de l'espace de jeton en puissances de 2, c'est-à-dire « -h 17 »
signifie 2^17 = 131072 XNUMX jetons possibles. Si vous tapez « dbacl -V », vous pouvez voir le nombre de
Nombre d'octets nécessaires à chaque jeton, que ce soit pour l'apprentissage ou la classification. Multipliez ce nombre par
le nombre maximal de jetons possibles pour estimer la mémoire nécessaire à l'apprentissage. -H
commutateur permet dbacl développer ses tables automatiquement si et quand cela est nécessaire, jusqu'à un maximum
spécifié. Donc, si vous tapez « -H 21 », la taille initiale sera doublée à plusieurs reprises si
nécessaire, jusqu'à environ deux millions de jetons uniques.
Lors de l'apprentissage avec le -X commutateur, une poignée de documents d'entrée sont également conservés dans la RAM
tout au long.
ENVIRONNEMENT
DBACL_PATH
Lorsque cette variable est définie, sa valeur est ajoutée au début de chaque category nom de fichier qui
ne commence pas par un '/' ou un '.'.
SIGNAUX
INT Si ce signal est capté, dbacl sort simplement sans faire de nettoyage ou autre
opérations. Ce signal peut souvent être envoyé en appuyant sur Ctrl-C sur le clavier. Voir
Sty (1).
HUP, QUITTER, TERMINAL
Si l’un de ces signaux est détecté, dbacl arrête de lire l'entrée et continue sa
Opération comme si aucune entrée n'était disponible. C'est une façon de quitter l'opération en douceur.
mais notez qu'en mode apprentissage, un fichier de catégorie sera écrit en fonction du
saisie incomplète. Le signal QUIT peut souvent être envoyé en appuyant sur Ctrl- sur le
clavier. Voir Sty (1).
USR1 Si ce signal est capté, dbacl recharge les catégories actuelles au plus tôt
opportunité réalisable. Ce n'est généralement pas utile du tout, mais cela pourrait être particulièrement utile.
cas, comme si le -f le commutateur est invoqué avec l'entrée d'une longue exécution
tuyau.
NOTES
dbacl Les fichiers de catégories générés sont au format binaire et peuvent ou non être portables vers
systèmes utilisant une architecture d'ordre d'octets différente (cela dépend de la façon dont dbacl était
compilé). Le -V le commutateur indique si les catégories sont portables, ou bien vous pouvez simplement
expérience.
dbacl ne reconnaît pas les expressions régulières fonctionnellement équivalentes, et dans ce cas
les fonctionnalités en double seront comptées plusieurs fois.
À chaque catégorie apprise, les options de ligne de commande utilisées sont enregistrées.
classer, s'assurer que chaque catégorie pertinente a été apprise avec le même ensemble de
options (les expressions régulières peuvent différer), sinon le comportement est indéfini. Il n'y a pas
il faut répéter tous les commutateurs lors de la classification.
Si vous recevez de nombreux avertissements de numérisation, c'est que vous essayez d'apprendre trop de données à la fois.
ou votre modèle est trop complexe. dbacl est compilé pour économiser de la mémoire en numérisant le fichier final
poids, mais vous pouvez désactiver la numérisation en modifiant dbacl.h et en recompilant.
dbacl propose plusieurs tokeniseurs intégrés (voir -e (switch) avec d'autres à venir dans le futur
versions, telles que l'auteur les invente. Bien que le tokenizer par défaut puisse évoluer,
Le tokenizer doit toujours être supprimé, afin que vous puissiez toujours simuler les précédents dbacl comportement
sous réserve de corrections de bugs et de modifications architecturales.
Les estimations de confiance obtenues grâce à la -X les commutateurs sont des sous-estimations, c'est-à-dire qu'ils sont plus
conservateurs qu’ils ne devraient l’être.
Utiliser dbacl en ligne avec les services onworks.net