pongo poner para palabras nbsp lineas letras espacio entre como codigo blanco agregar php full-text-search tokenize cjk wordbreaker

php - poner - ¿Rompe palabras en idiomas sin espacios entre palabras(p. Ej., Asiático)?



espacio html &nbsp (2)

La ruptura de palabras para los idiomas mencionados requiere un enfoque lingüístico , por ejemplo, uno que use un diccionario junto con una comprensión de las reglas básicas básicas .

He oído hablar de aplicaciones de búsqueda de texto completo relativamente exitosas que simplemente dividen cada carácter en una palabra separada, en chino, simplemente aplicando la misma "tokenización" de los criterios de búsqueda proporcionados por los usuarios finales. El motor de búsqueda proporciona una mejor clasificación para los documentos que suministran las palabras de los caracteres en el mismo orden que los criterios de búsqueda. No estoy seguro de que esto pueda extenderse a un idioma como el japonés, ya que los juegos de caracteres Hirakana y Katagana hacen que el texto sea más parecido a los idiomas europeos con un abecedario corto.

EDITAR :
Recursos
Este problema de ruptura de palabras, así como otros temas relacionados, es tan no trivial que se escriben libros completos al respecto. Véase, por ejemplo, CJKV Information Processing ( CJKV Information Processing) (CJKV significa chino, japonés, coreano y vietnamita; también puede utilizar la palabra clave CJK, ya que en muchos textos, vietnamita no se discute). Ver también La ruptura de palabras en japonés es difícil para un paginador sobre este tema.
Comprensivamente, la mayoría del material que cubre este tema está escrito en uno de los idiomas nativos subyacentes y, por lo tanto, es de uso limitado para personas sin una fluidez relativa en estos idiomas. Por ese motivo, y también para ayudarlo a validar el motor de búsqueda, una vez que comience a implementar la lógica del separador de palabras, debe buscar la ayuda de uno o dos hablantes nativos.

Varias ideas
Su idea de identificar caracteres que impliquen sistemáticamente una separación de palabras (por ejemplo, comillas, paréntesis, caracteres similares a guiones) es buena, y esa es probablemente una heurística utilizada por algunos de los separadores de palabras de grado profesional. Sin embargo, debe buscar una fuente autorizada para dicha lista, en lugar de reunirla desde cero, basándose en hallazgos anecdóticos.
Una idea relacionada es romper palabras en las transiciones de Kana a Kanji (pero supongo que no al revés), y posiblemente en las transiciones de Hiragana a Katakana o viceversa.
Sin relación con la ruptura de palabras propiamente dicha, el índice puede [-o puede que no- ;-)] beneficiarse de la conversión sistemática de cada carácter hiragana, por ejemplo, al carácter katakana correspondiente. Sólo una idea sin educación! No sé lo suficiente sobre el idioma japonés para saber si eso ayudaría; intuitivamente, sería ligeramente similar a la conversión sistemática de letras acentuadas y tal a la letra correspondiente no acentuada, como se practica en varios idiomas europeos.

Tal vez la idea que mencioné anteriormente, de indexar sistemáticamente los caracteres individuales (y de clasificar los resultados de la búsqueda según su proximidad según el criterio de búsqueda) pueda modificarse ligeramente, por ejemplo, manteniendo juntos los caracteres kana consecutivos, y luego algunas otras reglas ... y producir un motor de búsqueda imperfecto pero bastante práctico.

No se desanime si este no es el caso ... Como se dijo, esto dista mucho de ser trivial, y puede ahorrarle tiempo y dinero, a largo plazo, haciendo una pausa y leyendo un libro o dos. Otra razón para tratar de aprender más sobre la "teoría" y las mejores prácticas es que, en este momento, parece que está centrado en separar palabras, pero pronto, el motor de búsqueda también puede beneficiarse de la sensibilización . de hecho, estos dos problemas están, al menos, lingüísticamente, relacionados y pueden beneficiarse de ser manejados en conjunto.

Buena suerte en este fastidioso pero digno esfuerzo.

Me gustaría que la búsqueda de texto completo de MySQL funcione con el texto en japonés y chino, así como en cualquier otro idioma. El problema es que estos idiomas y probablemente otros no tienen normalmente espacios en blanco entre las palabras. La búsqueda no es útil cuando debe escribir la misma oración que aparece en el texto.

No puedo simplemente poner un espacio entre cada personaje porque el inglés también debe funcionar. Me gustaría resolver este problema con PHP o MySQL.

¿Puedo configurar MySQL para reconocer caracteres que deberían ser sus propias unidades de indexación? ¿Hay un módulo de PHP que pueda reconocer estos caracteres para que yo pueda tirar espacios alrededor de ellos para el índice?

Actualizar

Una solución parcial:

$string_with_spaces = preg_replace( "/[".json_decode(''"/u4e00"'')."-".json_decode(''"/uface"'')."]/", " $0 ", $string_without_spaces );

Esto hace que una clase de personaje esté al menos en algunos de los personajes que necesito tratar especialmente. Probablemente debería mencionar, es aceptable munge el texto indexado.

¿Alguien sabe todos los rangos de caracteres que necesitaría para insertar espacios?

Además, ¿debe haber una forma mejor y portátil de representar a esos personajes en PHP? El código fuente en Unicode Literal no es ideal; No reconoceré a todos los personajes; Es posible que no se reproduzcan en todas las máquinas que tengo que usar.


Un año más tarde, y probablemente ya no necesite esto, pero el código de la página siguiente puede tener algunas sugerencias para lo que quiere (ed) hacer:

http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/spamfilter/japanese-tokenizer.el.txt

Si hizo algún progreso después de las publicaciones anteriores en su propia búsqueda, estoy seguro de que a otros les interesará saberlo.

(Editado para decir que hay una mejor respuesta aquí: ¿Cómo clasificar los caracteres japoneses como kanji o kana? )