2012-01-23 14 views
5

Ahora bien, este es un problema complicado para el que no puedo encontrar una buena solución. Supongamos que tenemos un String en Java: - "Comió 3 manzanas hoy". Ahora el dígito 3 se puede identificar fácilmente en Java usando la función isNumeric o usando expresiones regulares. Pero, ¿y si tengo un String como: "Comió tres manzanas hoy"? ¿Cómo puedo identificar que tres es en realidad un número? Utilicé OpenNlp y usé su rotulador POS, ¡pero el tiempo que lleva hacerlo realmente es demasiado! ¿Alguien puede sugerir una mejor solución para esto? También entre ".bin" de OpenNlp, hay un archivo - "num.bin", pero no sé cómo usar este archivo. La documentación de OpenNlp tampoco dice nada al respecto. ¿Alguien puede decirme si esto es exactamente lo que he estado buscando, y si es así, cómo usarlo?Procesamiento de texto en Java

/* ** * ** * ** * ** * ** * ** * ** * ** * * * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **/ realidad estoy corto de tiempo su e, así que me he decidido por una solución temporal aquí. Haga un archivo/diccionario y tome todas las entradas en una tabla hash. Luego voy a poner en simbología mi oración y verificar palabra por palabra los números, similar a lo que ustedes sugirieron. Seguiré actualizando el archivo cuando sea necesario. Gracias por sus valiosas sugerencias, muchachos, y si tienen algo mejor que esto, estaría muy contento. OpenNlp implementa esto de una manera muy buena, el único problema es la complejidad del tiempo y quiero hacerlo en el mínimo tiempo posible.

+0

¿Necesita solo detectar números y solo en inglés? Si es así, no creo que necesites una biblioteca para eso. Será mucho más fácil escribir eso manualmente. – bezmax

+0

sí ... solo números ... pero cualquier tipo de números, decimales, fracciones, porcentaje, puntaje de fútbol como 3-1 también se debe detectar ...... para el idioma inglés solamente ... –

Respuesta

0

Tienes que mantener todas esas palabras en matrices y luego usarlas.Here es un ejemplo de cómo convertir un número en una cadena. Puede ser útil ... Creo que debe dividir el texto en palabras y verificar si una palabra es un número (tres). En caso afirmativo, marque la siguiente palabra porque puede decir "millón", luego verifique la siguiente palabra y así sucesivamente. No es fácil y parece una pequeña biblioteca. Creo que pasarás mucho tiempo escribiendo esto. O intenta buscar en Google una biblioteca como esta. Tal vez alguien ya ha tenido este problema, escribió una biblioteca y lo comparte gratis)) Buena suerte.

1

Crear un diccionario de números. Busque elementos de ese diccionario en el texto.

Comprueba la complejidad asintótica, puede ser más económico ordenar primero el texto.

+0

sí, eso es posible , pero ¿qué tan grande se convertirá el diccionario? texto como cien, cuarenta y tres, cincuenta, y así sucesivamente ... Tendré que agregar todo tipo de esas palabras posibles en el diccionario ... –

+0

No es un diccionario, entonces, utilice un gráfico direccional ponderado. –

Cuestiones relacionadas