VBTextFinder : un moteur de recherche de mot dans
son contexte
en VBA, VB6 et VB9
Documentation : VBTextFinder.html
Code source : VBTextFinder.vbproj.html
Par Patrice Dargenton : patrice.dargenton@free.fr
http://patrice.dargenton.free.fr/CodesSources/index.html
www.vbfrance.com/listeauteur2.aspx?ID=1124
Version 1.03 du 18/05/2008
VBTextFinder permet de retrouver l'ensemble des phrases (et paragraphes) contenant un mot donné que l'on recherche dans un corpus documentaire préalablement indexé (un corpus est un ensemble cohérent de documents).
Comment ça marche ? c'est très simple : lors de l'indexation d'un document, les phrases sont découpées en mots, et une collection de mots est construite en complétant la liste des numéros de phrase contenant ce mot, toutes les phrases étant conservées en intégralité avec l'index des mots qui en font partie. Ensuite, pour retrouver l'ensemble des phrases contenant un mot donné présent dans l'index, il suffit de parcourir la liste des phrases référencées par ce mot, cette recherche étant quasi-instantanée, même avec de gros document. Tout le travail est fait dans l'objet Collection de VB (une hashtable dans la version DotNet).
En bonus, certaines statistiques sont disponibles. De plus, si on précise des codes mnémoniques courts associés de façon unique à chaque document indexé, alors VBTextFinder est capable de produire un index alphabétique ou fréquentiel avec ces codes mnémoniques. Par exemple, si j'indexe plusieurs documentations de mes logiciels avec les codes mnémoniques suivants :
VBWaveComp.txt
(VBWC)
VBSpamCheck.txt
(VBSC)
VBLocker.txt
(VBLck)
VBBrainBox.txt
(VBBB)
VB2Html.txt
(VB2H)
ODBCDotNet.txt
(ODBCDN)
DVDClass.txt
(DVDC)
VBTextFinder peux alors produire un index alphabétique dont voici un extrait :
...
applicable (1 :
VBBB)
applicables (3 :
VBBB)
application (45 :
DVDC, ODBCDN, VB2H, VBBB, VBLck, VBSC, VBWC)
applications (16 :
DVDC, VBBB, VBLck)
appliquant (1 :
VBBB)
appliqué (2 :
DVDC, VBBB)
appliquée (1 :
VBBB)
appliquées (4 :
VBBB)
appliquer (14 :
ODBCDN, VBBB, VBSC)
appliqués (2 : DVDC, VBSC)
appliquez (1 : VBWC)
...
et un index fréquentiel dont voici un extrait :
...
57 : audio (DVDC, VBLck, VBWC)
57 : access (DVDC, ODBCDN, VB2H,
VBBB)
56 : windows (DVDC, ODBCDN, VB2H,
VBBB, VBLck, VBSC, VBWC)
56 : votre (DVDC, ODBCDN, VBBB, VBLck,
VBSC, VBWC)
55 : spam (VBSC)
55 : patrice (DVDC, ODBCDN, VB2H, VBBB, VBLck,
VBSC, VBWC)
55 : entre (DVDC, ODBCDN, VBBB, VBSC, VBWC)
54 : dargenton (DVDC, ODBCDN,
VB2H, VBBB, VBLck, VBSC, VBWC)
53 : votant (DVDC)
53 : règles (VBBB, VBSC, VBWC)
...
Il faut choisir un code mnémotechnique facile à retenir, si on ne précise rien, on utilise par défaut Doc n°1, Doc n°2..., ou rien s'il n'y a qu'un seul document. Ces codes sont stockés dans un fichier ini (simple fichier texte) pour faciliter l'étiquetage.
J'ai développé ce code en un week-end !... mais je le peaufine depuis plus de 4 ans ! je me suis enfin décider à le publier ; la version DotNet possède quelques fonctionnalités en plus et sa présentation des résultats est plus pertinente, cependant j'ai fait attention à ce que l'index soit compatible entre les versions.
Autre bonus : il y a une version Excel ainsi qu'une version Word : les utilisateurs du VBA Excel ou Word sont encore plus nombreux que ceux de VB ! ces deux versions sont bien la preuve que l'environnement VBA est un environnement de développement complet en Visual Basic, il n'y a guère que la compilation optimisée qui manque. Vous pouvez constater que le code source est strictement identique à 100% à celui de VB6, j'ai juste utilisé la compilation conditionnelle pour switcher l'initialisation du code entre les différentes versions. En fait, seuls les contrôles de l'interface ne peuvent pas être copiés/collés entre VB6 et VBA Word ou Excel, mais cela fonctionne entre Word et Excel. Les contrôles ne sont pas identiques, mais tout est compatible en faisant attention à deux ou trois subtilités.
Table des matières
Fonctionnalités supplémentaires de la version DotNet
Précisions
sur la gestion des accents
Exemple :
recherche dans les proverbes
Pour indexer
une série de fichiers .txt
Pour indexer
une série de fichiers .doc ou .htm ou .html
Pour indexer
une arborescence de fichiers
Arguments
possibles pour la ligne de commande
Exemples de génération de mots clés
Recherche
d'une expression exacte
Version 0.01
du 10/04/2004 : Première version
Indexation
d'autres types de document
- Exportation : les résultats de recherche peuvent être copiés / collés dans le presse papier ;
- Choix du nombre de paragraphes à afficher avant ou après chaque phrase afin de mieux saisir le contexte dans certain cas (1, 2 ou 3 paragraphes avant et après dans les versions VBA et VB6, et illimité dans la version DotNet via la barre de défilement à gauche) ;
- Gestion des fichiers Word .doc ou bien Html : il y a une procédure pour convertir automatiquement le fichier en .txt en utilisant l'automation de Word ; on peut aussi utiliser les menus contextuels dans l'explorateur de Windows afin d'indexer rapidement un document à la volée ;
- Affichage d'un indicateur si le mot est trouvé directement pendant la frappe, avec le nombre d'occurrences correspondant ;
- Mémorisation des mots recherchés successivement (comme dans la barre d'outil de Google) ;
- Mode hypertexte : il est activé lorsque l'on fait un double-clic sur un mot dans les phrases affichées dans la zone des résultats de recherche (pour les versions VBA, il faut ensuite cliquer sur le bouton Rechercher) ;
- Sauvegarde : si au moment de quitter l'application on souhaite conserver l'index, une sauvegarde de l'index est effectuée dans le fichier VBTextFinder.idx. Au lancement de VBTextFinder, si ce fichier est présent (dans le dossier de l'application), on propose de le recharger ;
- Création d'un index des mots dans Word (avec la liste des codes document le contenant) selon un tri alphabétique ou fréquentiel au choix (cf. la fonction équivalente de VBDico) : les versions VBA et VB6 sont limitées en taille, Word refusant de trier une trop grande liste de mots (il suffit de le tester sous Word : menu Tableau : Trier...) ; Astuce : il suffit d'utiliser la version DotNet, elle fonctionne aussi avec un index créé à partir des versions VBA et VB6, et elle n'utilise pas le tri de Word.
- Gestion des accents en option (en VBA ou VB6 les accents sont toujours pris en compte, en DotNet, les accents sont ignorés par défaut), voir ci-dessous pour le détail ;
- Sélection de plusieurs fichiers à indexer (ou a convertir au préalable), par exemple *.txt, *.doc ou *.html ;
- Vérification si un document est déjà indexé (via le nom du fichier) : dans la version VBA/VB6, ce n'est pas vérifié, de sorte qu'on peut ajouter plusieurs fois le même document, et cela produit des anomalies dans la recherche (les modes phrase et paragraphe ne sont plus tout à fait cohérents) ;
- Création d'une liste de mot clés : il s'agit de la liste des n mots les plus fréquents, une fois que l'on a retiré les mots non signifiants tel que : de le la et..., voir les exemples ici ;
- Gestion d'un dictionnaire : en décochant "Mots dico" les index seront générés sans les mots qui font partie du dictionnaire, ce qui permet de lister tous les mots propres indexés ; le dictionnaire utilisé se trouve ici :
www.pallier.org/ressources/dicofr/liste.de.mots.francais.frgut.txt (3.6 Mo ou 800 Ko ici)
- Désallocation en RAM : instantanée en DotNet, et assez long en VBA et VB6 : de l'utilité du ramasse-miettes !
- La version VBA/VB6 indexe les accents, de sorte qu'il faut obligatoirement saisir les mots avec les accents pour pouvoir les retrouver (on risque donc de ne pas trouver les mots auxquels les accents manquent). La version DotNet peut indexer avec ou sans les accents, c'est configurable (par défaut les accents ne sont pas indexés, on ne risque donc pas d'oublier des mots lors d'une recherche) ;
- La version VBA/VB6 indexe "cœur" avec œ collé et peut trouver la phrase même si on tape oe séparé : on peut donc taper aussi bien cœur que coeur pour trouver cœur ou coeur indistinctement ; tandis qu'avec la version DotNet, cela dépend si on indexe les accents ou pas : si oui, alors ces lettres sont distinctes et donc indépendantes (ce qu'on ne peut pas faire en VBA/VB6), et si les accents ne sont pas indexés, cela fonctionne comme dans la version VBA/VB6.
Le fichier d'exemple Proverbes.txt fourni est situé dans le
même répertoire que l'application VBTextFinder :
cliquez sur le bouton "Ajouter le(s) document(s)", ensuite fermez
simplement le document VBTextFinder.ini qui s'est affiché : c'est prêt : vous
pouvez commencez une recherche : tapez par exemple temps dans la zone de
recherche : vous obtenez les proverbes contenant le mot temps dans le proverbe
ou bien son explication.
Ces fichiers doivent tous figurer dans un dossier unique. Dans ce cas, il suffit de sélectionner le filtre *.txt (il est déjà sélectionné par défaut, sinon faire un double-clic dans la zone "Chemin des documents à indexer"), puis de cliquer sur le bouton Ajouter le(s) document(s).
La procédure est la même avec les filtres *.doc ou *.htm?.
VBTextFinder ne peut pas le faire directement, mais si les noms des fichiers sont uniques, il est possible de lancer une recherche sur ces fichiers, puis de les copier/coller dans un seul dossier.
VBTextFinder peut fonctionner via l'ajout de menus contextuel. Pour cela, vous pouvez les ajouter via le bouton +, le menu "Indexer pour une recherche (VBTF)" est alors ajouté pour les clés suivantes (HKCR) de la base de registre :
Fichier texte : .txt : txtfile
Fichier MS-Word : .doc : Word.Document.8
Fichier Html : .htm ou .html : htmlfile
Dossier : Directory
Ces menus permettent d'indexer directement les types de document via le menu contextuel qui apparaît lorsque l'on clique avec le bouton droit de la souris sur un de ces types de fichier dans l'explorateur de fichiers. Ces menus fonctionnent également pour des raccourcis vers un de ces types de fichier. Ces menus ne sont pas adaptés pour une utilisation avec plusieurs fichiers sélectionnés (car cela ouvre plusieurs instances de VBTextFinder, utilisez plutôt un filtre *.txt dans ce cas).
Une clé pour les fichiers .idx est également créée pour ouvrir les index VBTextFinder dans le logiciel.
Le bouton - permet de retirer proprement ces clés ajoutées (désinstallation du logiciel, ou bien en cas de déplacement du logiciel).
Pour la version DotNet, vous pouvez passer un chemin complet d'un dossier ou fichier à indexer (1 et 1 seul). Vous pouvez aussi passer un chemin complet vers un fichier index .idx : dans ce cas, VBTextFinder s'ouvre directement sans poser de question, prêt à utiliser (idéal pour un moteur de recherche déjà configuré sur un corpus préalablement indexé).
Pour la version VBA/VB6, c'est pareil sauf que l'indexation d'un dossier n'est pas traitée.
Nombre
de mots distincts indexés : 1238
spam courriel vbspamcheck com faux courriels antispam positifs www spams outlook fr html fichier express réception id free domaines clé boîte base logiciel légitimes exemple domaine cas patrice message dossier dbx dargenton
Nombre
de mots distincts indexés : 1504
html oeuvre votant imdb dvdclass classement www films com
film votants votes champ single dvd version fr long type voté null text50
oeuvres interdit données code scores calcul titre notes web moyenne identifiant
table mnémonique index cas affinités 2 unique partir exemple critiques base
auteur access 1 0
Nombre
de mots distincts indexés : 1016
1 odbc excel
fichier dsn version données 2007 pilote 11 source
exemple via microsoft 0 type requêtes access 8 nombre fonction champs base windows
requête valeurs sql http driver défaut passe décimal
Nombre
de mots distincts indexés : 547
www com vb
code 2 version html vb2html aspx 2005 vbfrance projet id codeproject asp fichier useritems mode
fichiers bricomix 2007 vbtohtml
projets mots génération convertir clés 2008
Nombre
de mots distincts indexés : 1865
logique vbbrainbox base faits
règles données 1 règle expert 0 net fr 2 turbo
exemple application fiabilité version système ordre html floue chaînage access variable complexité cas www variables méta x valeur ia problème expertise dbtofile
http com systèmes voir régime problèmes np monotone mdb
Nombre
de mots distincts indexés : 1549
0 1 audio db 2 g compression www
kbps spectre com gd 10 signal fréquence 11 fréquences
cd fichier wav qualité tfr
media 5 3 version vbwavecomp log khz
fichiers 12 wma2 wma perte calcul bits 96 windows énergie rapport 13 logiciel aspx
50
Nombre
de mots distincts indexés : 1077
com
logiciel www code version licence aspx 2 clé asp net codeproject vblocker client activation versions vb6 protection microsoft cryptage 0
- Sélectionner les mots trouvés, ou bien les mettre en gras : utiliser une zone RTF/RichEdit ou bien Html, tout en conservant le mode hypertexte par défaut sur chaque mot affiché (en html, cf. le dictionnaire en ligne ultime : www.tv5.fr/TV5Site/alexandria/definition.php) ; Paginer les résultats de recherche comme dans Google (pour afficher plus rapidement les premiers résultats) ;
- Interface avec onglets : Rechercher, Indexer et Outils ;
- Trouver une autre ergonomie pour pouvoir agrandir uniquement le paragraphe sur lequel on est, puis le rétrécir, sans perdre le mot sélectionné (tout en conservant le mode hypertexte sur double clic) ;
- Boutons suivant et précédant, comme dans un navigateur : recherche suivante ou précédente (lorsque l'on revient en arrière, bien se repositionner sur le dernier mot cliqué, comme une navigation hypertexte) ; autres boutons utiles : occurrence suivante ou précédente du mot en cours, comme dans la barre d'outils Google (laquelle contient un bouton pour chaque mot, chaque nouveau clic passe à l'occurrence suivante du mot) ;
- Bouton pour effacer l'index en RAM, sans avoir à quitter ;
- Sélection des fichiers à indexer : pouvoir sélectionner plusieurs fichiers (sans avoir à faire *.txt) ;
- ComboBox avec auto-complétion pour la saisie d'un mot à rechercher, fonctionnant comme la barre d'outil Google : compléter avec une précédente recherche (grâce à l'historique des recherches), et compléter aussi avec les mots existants (comme Google Suggest). Les précédentes recherches sont affichées dans la première moitié de la zone, tandis que les suggestions sont affichées dans la seconde : pourquoi choisir quand on peut tout avoir !
- Comptage du nombre de mots indexés par document (oDoc.iNbMotsIndexes), et calcul des autres statistiques concernant les documents indexés : nombre de paragraphes, phrases... ;
- Séparateur de phrase : il faudrait considérer 2 caractères successifs au lieu d'un seul caractère ; par exemple le point ne délimite pas toujours une phrase, il peut s'agir d'un point décimal ou bien d'un séparateur de nom de domaine dans un lien hypertexte. Considérer donc un point suivi d'un espace ou bien d'un retour à la ligne pour séparer les phrases ;
- Possibilité de lire les fichiers de configuration externes au logiciel, tel que la liste des mots fréquents, les séparateurs de phrases et mots (sauf les caractères invisibles tels que tabulation ou retour à la ligne, à moins de coder en xml).
- Ignorer les mots courants pour réduire la taille de l'index, soit en limitant le nombre d'occurrences dans les phrases d'un mot (cela ne fonctionnera qu'à partir de gros document), soit en se basant sur une liste de mot courant (définition assez floue : mot très fréquents et non signifiant : et, est, dans, le, ...). Compter quand même toutes les occurrences mais sans conserver les numéros de phrases ; Ignorer les mots courant pourrait être une option d'indexation ;
- Charger l'index des phrases indépendamment de celui des mots afin de lancer plus rapidement le logiciel (on n'a besoin des phrases que pour les afficher, pas pour savoir si un mot est présent). Tout l'index est chargé en RAM, si l'index est vraiment trop gros, c'est-à-dire plus gros que la RAM physique disponible, il faudra probablement dans ce cas stocker les phrases dans une base de données (l'index devrait tenir en RAM dans tous les cas, à moins de faire un moteur de recherche généraliste sur le web par exemple) ;
- Compression des phrases et les mots de l'index du dictionnaire suivant une arborescence : construire un arbre des débuts et fins de mot et de phrase possibles à partir des documents indexés. Voir les liens.
- Mots contenant des chiffres : option pour n'indexer que les lettres, en ignorant les nombres, et chaque chiffre devient un séparateur de mot ;
- Ignorer ou pas les accents (mais cela pose le problème de la compatibilité d'un index avec une recherche : sauver l'état des options dans l'index, et ensuite ces options ne peuvent plus être modifiées ; autre problème : mélange de documents indexés avec ou sans accent : comment traiter ce cas ?) ;
- Gestion des caractères doubles : oe ae... on pourrait les indexer deux fois (collés ou pas) pour être sûr de les trouver dans tous les cas (utile seulement si on indexe les accents en DotNet, car sinon on a déjà cette fonctionnalité) ;
- Gérer les options d'indexation en ligne de commande : liste des fichiers à indexer, fichier ini (pour les codes document), fichier index à utiliser, ... cela permettrait de faire des batchs de mise à jour automatique d'un index en fonction du contenu d'un dossier ;
- Gestion automatique des codes document : dans la fenêtre résultat, on a la place pour indiquer le nom du fichier complet, mais pour l'affichage des statistiques c'est utile d'avoir un code document (à moins que les noms de fichiers soient assez courts : option automatique dans ce cas) ; idée : insérer le code document directement dans le fichier Word, de façon à l'associer automatiquement au document lors de son indexation ; option pour ignorer les codes document : ne plus afficher le fichier .ini ;
- Inclure la date et l'heure de chaque document indexé (pour pouvoir détecter les mises à jour requises) ; autre idée : l'URL du document en option afin de pouvoir produire un lien vers ce document (il faudrait pouvoir pointer directement sur le mot trouvé du document) ;
- Inclure la version du logiciel d'indexation (en particulier VBA, VB6 ou DotNet), et inclure les options d'indexation : avec accents, ... ;
- Indexation des documents Excel : voir XL2Csv ;
- Mots clés : exclure les verbes conjugués, ou alors comptabiliser leur fréquence avec le verbe à l'infinitif (mais comment reconnaître un verbe conjugué ? via une liste complète ?) ;
- Extraire toutes les citations entre << ou " ;
- Comparer la fréquence des mots d'un texte (sans les mots courants) par rapport à leur fréquence en général, pour donner une idée de l'importance donnée à ces mots dans ce texte ;
- Suggérer une orthographe différente en cas d'échec (comme Google) : utiliser une distance d'édition lors de l'indexation ? (comment éviter ce calcul sur l'ensemble des mots de l'index ?).
Il suffit de croiser des recherches simples de mot, en calculant leur intersection, afin de retrouver les documents indexés qui contiennent chacun de ces mots. On peut définir un vecteur comme étant un résultat de recherche sous forme d'une suite de 0 et de 1 de longueur égale au nombre de document indexés : lorsque le produit de deux vecteurs n'est pas nul, cela signifie qu'il contient l'ensemble des documents contenant l'ensemble des mots recherchés ; on peut envisager de créer à la volée les vecteurs lors d'une recherche (il n'est pas nécessaire de créer et stocker les vecteurs à l'avance) ; on peut envisager aussi la même recherche au niveau des phrases cette fois (les vecteurs seront alors de très grande taille).
Dans ce cas, il faut ajouter une information lors de l'index : la position du mot (numéro du mot dans le document, ou bien n° du mot dans la phrase, mais cela compliquera les calculs). On peut envisager de calculer une sorte de distance entre les résultats, basée sur la position des mots, phrases, paragraphes : on pourrait ainsi détecter les mots proches, donc faire des recherches capable de tenir compte des expressions ainsi que des opérateurs évolués (par exemple tel que NEAR : mot "près de").
Les requêtes Linq semblent tout à fait adaptées à leur exploitation dans VBTextFinder, par exemple la construction de l'index fréquentiel ou alphabétique ne requiert qu'une seule ligne de code !
' Pour compiler ce code sous VB9/2008, ajouter la
référence System.Core 3.5,
' puis
cocher System.Linq (et Option Infer : On)
Dim
aMots(m_htMots.Count - 1) As clsMot
m_htMots.Values.CopyTo(aMots, 0)
Dim indexFreq = From mot In aMots _
Order By mot.iNbOccurences Descending, mot.sMot _
Select mot.sMot, mot.iNbOccurences
Dim indexAlphab = From mot In aMots _
Order By mot.sMot _
Select mot.sMot, mot.iNbOccurences
Pour construire ces index sans les mots du dictionnaire, cela se complique : il y a bien une instruction Except, mais elle ne fonctionne que par valeur :
Dim indexDico =
index.Except(dico)
Pas de problème pour afficher les index des mots hors dictionnaire, mais dès que l'on veut afficher le nombre d'occurrences correspondantes, je n'ai pas réussi à obtenir un code qui fonctionne dans tous les cas : ou bien ce sont les occurrences qui posent problème, ou bien ce sont les accents, ou bien les performances sont rédhibitoires... la suite au prochain épisode !
Dès que j'aurai trouvé la solution, j'envisage également de programmer des recherches de plusieurs mots, ainsi que des recherches d'expression, car toutes les fonctions membres des chaînes de caractères (String) sont permises dans les requêtes Linq.
Voici 101 exemples de programmation Linq :
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
- Version VBA Excel : VBTextFinder.xls : pas de pré-requis hormis Excel à partir de la version 97 ;
- Version VBA Word : VBTextFinder.doc : pas de pré-requis hormis Word à partir de la version 97 ;
- Version en VB6 : Le logiciel runtime (gratuit) de Visual Basic 6 (VB6) doit être installé : C:\WINDOWS\system32\msvbvm60.dll (pour cela, installez n'importe quel logiciel packagé capable d'installer le runtime VB6, par exemple : http://patrice.dargenton.free.fr/gravity/gravityinst.zip : 1.6 Mo).
- Version DotNet : Si la plateforme .Net n'est pas déjà installée sur votre machine (vous recevrez l'erreur 0xc0000135), vous pouvez l'installer en la téléchargeant via Windows Update, ou bien ici :
Microsoft .NET Framework 2.0 Service Pack 1 (x86)
Voir ici pour plus de détail.
- Corrections mineures (info-bulle du bouton "Ajouter le(s) document(s)", documentation, ...).
- Gestion d'un dictionnaire.
- Full Text Search Tool
(n'affiche pas les occurrences trouvées)
www.codeproject.com/KB/cs/Text_Search.aspx
- Full-Text
Search: Fast, Damn Fast and DotLucene By Dan Letecky
Search
3.5 GB of text in 0.1 second! (pour site web internet ou intranet)
www.codeproject.com/useritems/damnfastsearch.asp
- Seekafile Server 1.0 - Flexible open-source search server
By Dan Letecky
Windows
Service that indexes DOC, PDF, XLS, PPT, RTF, HTML, TXT, XML, and other file
formats
Desktop
and ASP.NET search samples included
(il faut installer le serveur, construire l'index, puis installer le client : pas complètement trivial à tester)
www.codeproject.com/KB/IP/seekafile.aspx
- Populating
a Search Engine with a C# Spider
How-to build an ASP.NET search engine link-spider
using C# (Pour site web)
www.codeproject.com/article.asp?tag=11786751643738175
- Word Search Engine (ne semble pas fonctionner en français)
www.codeproject.com/KB/string/wse1.aspx
- Permet de retrouver des fichiers Word contenant un groupe de mots (pas super fiable)
www.vbfrance.com/code.aspx?ID=39560
- Indexation des documents pdf (code source en C++ MFC)
Code
to extract plain text from a PDF file : source code that shows how to
decompress and extract text from PDF documents
www.codeproject.com/KB/cpp/ExtractPDFText.aspx
- Using
the IFilter interface to extract text from various
document types (dont pdf)
www.codeproject.com/KB/cs/IFilter.aspx
- Using
DocxToText to Extract Text from DOCX Files (Word
2007)
www.codeproject.com/office/ExtractTextFromDOCXs.asp
Pour utiliser ces logiciels, il faudra soit incorporer le code source, soit gérer les arguments en ligne de commande, sinon la procédure d'indexation ne sera pas automatique :
- VB2Html : Créer un rapport Html d'un projet Visual Basic 6, 7, 8 et 9 : Pour indexer le code source (VB2Txt)
- Dbx2Txt : Convertir un fichier Dbx (Outlook Express) en Txt : Limitation : Le contenu texte des courriels html n'est pas extrait
- XL2Csv : Convertir un fichier Excel en fichiers Csv (ou en 1 fichier txt) : Limitation : le type de donnée doit être unique par colonne Excel
- DBComp : le comparateur de structure de base de données Access
- Dictionnaire optimisé
www.csharpfr.com/code.aspx?ID=46038
- Dictionnaires,
anagrammes : algos efficaces
www.vbfrance.com/code.aspx?ID=30125
- Stormpedia : Analyser le sens des mots via une analyse de leurs fréquences
www.csharpfr.com/code.aspx?ID=44950
- WordCloud
- A Squarified Treemap of
Word Frequency
www.codeproject.com/csharp/wordcloud.asp
- A generic
frequency table in C#
www.codeproject.com/useritems/FrequencyTable.asp
- Correction
orthographique : Super Fast Spell
Checking in C#
Use a Binary Search Tree
to perform super fast spell checking. Support for
custom dictionaries
www.codeproject.com/useritems/SuperFastSpellCheck.asp
- A
simple soundex implementation in C# and VB.NET to
recognize phonetically similar words based on basic soundex
algorithms
www.codeproject.com/useritems/Soundex.asp
- Implement
Phonetic ("Sounds-like")
Name Searches with Double Metaphone Part V:
.NET Implementation
www.codeproject.com/cs/algorithms/dmetaphone5.asp
- Algorithme Soundex
www.csharpfr.com/code.aspx?ID=39423
- VBDico : Faire un glossaire des mots hors dictionnaire en parcourant un document Word (assez lent)
www.vbfrance.com/code.aspx?ID=20449
- GoogleFight : Mon correcteur orthographique favori !
Comparer la fréquence de deux orthographes d'un mot sur Google
www.vbfrance.com/code.aspx?ID=20641
- Corpus de texte
www.revue-texto.net/Liens/Liens_index.html#corp
- Extraire les informations d'un fichier Word sans l'ouvrir en VBA
www.vbfrance.com/code.aspx?ID=45781
- Microsoft Indexing Service and OLE DB By Ali Hamdar
How we can access Windows Indexing Service using OLE DB
www.codeproject.com/KB/database/indexingservice.aspx
- Liste des mots
conjugués et dérivés du dictionnaire
(4 doublons
rencontrés : Esquimaude, Esquimaudes, Internet et Napoléon)
www.pallier.org/ressources/dicofr/liste.de.mots.francais.frgut.txt
Autre liste : http://brunews.free.fr/Dico.zip
- Autres logiciels de Brunews : http://brunews.com/brunews/index.html
VERBEUR 74
Ko: Conjugaison complète de 6287 verbes français, un genre Bescherelle (les
verbes sont intégrés dans le logiciel).
http://brunews.com/brunews/download/Verbeur.zip
CHERCHER 5
Ko: Recherche les fichiers contenant le texte indiqué, dans DLL et EXE sur
demande, ultra rapide.
http://brunews.com/brunews/download/FindInFile.zip
LESMOTS
768 Ko: Aide pour mots croisés ou Scrabble, sa base modifiable comporte déjà
290027 mots.
http://brunews.com/brunews/download/LesMots.rar
- Le dictionnaire en ligne ultime
www.tv5.fr/TV5Site/alexandria/definition.php
- Proverbes, sentences
et maximes
www.vbfrance.com/code.aspx?ID=31830
- Jouer au Literati, TextExpress, le mot le
plus long, etc!
(contient une liste des mots du dico sans accent, accès à un
dico en ligne)
www.vbfrance.com/code.aspx?ID=36617
- Instantor
et sanzereur : nombreux outils d'analyse et de
traitement de la langue
www.areopage.net/instantor.html
www.areopage.net/sanzereur.html