OVH Cloud OVH Cloud

expressions régulières

3 réponses
Avatar
Pif
Bonjour, j'ai un dictionnaire avec environ 2,5 millions de chaines de
caractères, et j'ai un corpus de plusieurs centaines de milliers de
documents.

Je souhaite parcourir ces documents pour repérer s'il une chaine est
présente, et indexer alors le "mot clef" avec l'identifiant du document.

Le problème est le suivant : je peux pas faire un parsage pour chaque
terme, ou pour chaque document, ca serait visiblement trop long !

J'ai donc pensé aux expressions régulières, mais on ne sait que l'index
d'un élément, et il ne désigne pas l'élément lui même, ce qui alourdit
fortement le traitement, et de plus je n'ai aucune idées du nombre max
d'éléments qu'on peut mettre dans un moteur regex (en supposant que je
fasse un (chien|chat|chant|...)

quelqu'un a t'il une suggestion qui soit efficace et qui tienne
facilement en mémoire ?

merci !

3 réponses

Avatar
Johann Burkard
Pif wrote:
Bonjour, j'ai un dictionnaire avec environ 2,5 millions de chaines de
caractères, et j'ai un corpus de plusieurs centaines de milliers de
documents.

Je souhaite parcourir ces documents pour repérer s'il une chaine est
présente, et indexer alors le "mot clef" avec l'identifiant du document.

Le problème est le suivant : je peux pas faire un parsage pour chaque
terme, ou pour chaque document, ca serait visiblement trop long !


Il y'a un algorithme de Sun Wu et Udi Manber qui s'appelle "A FAST
ALGORITHM FOR MULTI-PATTERN SEARCHING", peut-être ca t'aide:

-- 8< --
A new algorithm to search for multiple patterns at the same time is
presented. The algorithm is faster than previous algorithms and can
support a very large number - tens of thousands - of patterns. Several
applications of the multi-pattern matching problem are discussed. We
argue that, in addition to previous applications that required such
search, multi-pattern matching can be used in lieu of indexed or sorted
data in some applications involving small to medium size datasets. Its
advantage, of course, is that no additional search structure is needed.
-- >8

Johann
--
Oliver lebt auch in seiner 'RN-Welt' wo ihn keiner mehr erreichen kann.
Das hat nichts mehr mit Empfehlungen zu tun, sondern das ist
Fetischismus und gestoertes Netzdenken.
(*Tönnes in <aj3phq$m80$)

Avatar
Hervé AGNOUX
Pif wrote:


quelqu'un a t'il une suggestion qui soit efficace et qui tienne
facilement en mémoire ?



Je ne crois pas que les regexp puissent te servir. Elles sont utiles pour
des... expressions régulières, comme des motifs qui se répètent, et pas
pour repérer une grande liste, potentiellement infinie, de mots clefs.

Si tes fichiers sont stables, ou ne varie que peu dans le temps, peut être
peux-tu essayer un moteur de recherche style Lucene ?

http://lucene.apache.org/

Cordialement.


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
Pif
mon problème est pas tant la rapidité que l'optimisation en taille du
dico. Je pense que je vais directement implémenter mon automate, ce sera
plus simple !

Merci !


Pif wrote:

Bonjour, j'ai un dictionnaire avec environ 2,5 millions de chaines de
caractères, et j'ai un corpus de plusieurs centaines de milliers de
documents.

Je souhaite parcourir ces documents pour repérer s'il une chaine est
présente, et indexer alors le "mot clef" avec l'identifiant du document.

Le problème est le suivant : je peux pas faire un parsage pour chaque
terme, ou pour chaque document, ca serait visiblement trop long !



Il y'a un algorithme de Sun Wu et Udi Manber qui s'appelle "A FAST
ALGORITHM FOR MULTI-PATTERN SEARCHING", peut-être ca t'aide:

-- 8< --
A new algorithm to search for multiple patterns at the same time is
presented. The algorithm is faster than previous algorithms and can
support a very large number - tens of thousands - of patterns. Several
applications of the multi-pattern matching problem are discussed. We
argue that, in addition to previous applications that required such
search, multi-pattern matching can be used in lieu of indexed or sorted
data in some applications involving small to medium size datasets. Its
advantage, of course, is that no additional search structure is needed.
-- >8

Johann