que tiene una gran cantidad de cadenas que contienen texto en un montón de diferentes grafías. Estoy tokenizando estas cadenas buscando palabras clave y, si se encuentra una palabra clave, utilizo un texto asociado para esa palabra clave.algoritmo eficiente para encontrar todas las palabras clave en un texto
Digamos que la cadena de búsqueda puede contener el texto "Schw.", "Schwa". y "schwarz". Tengo tres palabras clave que todas resuelven el texto "schwarz".
Ahora estoy en busca de una forma efectiva para encontrar todas las palabras clave sin hacer un string.Contains (palabra clave) para cada palabra clave.
datos de la muestra:
H-Fuss ahorn 15 cm/SH48cm
Metall-Fuss chrom 9 cm/SH42cm
Metall-Kufe alufbg.12 cm/SH45c
Metall-Kufe verchr.12 cm/SH45c
Metall-Zylind.aluf.12cm/SH45cm
Kufe alufarbig
Metall-Zylinder hoch alufarbig
Kunststoffgl.schw. - hoch
Kunststoffgl.schw. - Standard
Kunststoffgleiter - schwarz für Sitzhoehe 42 cm
Ejemplos de palabras clave (clave, valor): resultado
h-fuss, Holz
ahorn, Ahorn
metall, Metall
chrom, Chrom
verchr, Chrom
alum, Aluminium
aluf, Aluminium
kufe, Kufe
zylind, Zylinder
hoch, Hoch
kunststoffgl, Gleiter
gleiter, Gleiter
schwarz, Schwarz
schw., Schwarz
muestra:
Holz, Ahorn
Metall, Chrom
Metall, Kufe, Aluminium
Metall, Kufe, Chrom
Metall, Zylinder, Aluminium
Kufe, Aluminium
Metall, Zylinder, Hoch, Aluminium
Gleiter, Schwarz, Hoch
Gleiter, Schwarz
Gleiter, Schwarz
1 cosas grandes. Gracias. – Aliostad
El algoritmo de Aho-Crasick parece realmente prometedor. Actualmente estoy buscando un proyecto de CodeProject que implemente el algoritmo: http://www.codeproject.com/KB/recipes/ahocorasick.aspx – VVS
Aho-Corasick es exactamente lo que quieres. Otra solución que sugeriría es usar una biblioteca de expresiones regulares que también construye un DFA, como algo basado en re2 http://code.google.com/p/re2/ –