Algoritmo de segmentación de palabras Pinyin lenguaje C
#include lt;stdio.hgt;
#define M_JUZI 200
// Estructura de verificación de lista vinculada del diagrama de árbol
/ / Utilice el almacenamiento en cadena del gráfico para construir un árbol, y todos los subárboles registran la posición estática (índice) de la cadena
typedef struct ST_FenCi{
int LeiBie; ¿Qué categoría está conectada? 1: final, 2: consonante inicial
int SuoYin; // El índice final después de la consonante inicial o el índice de consonante inicial de la palabra después de la estructura final de la palabra
ST_FenCi *pN; // Hermano
} FenCi;
typedef struct ST_Ci{
int SuoYin // Índice de subcadena (palabra) dentro de la cadena original p>
int Chang; // Longitud de la subcadena
} Ci; // Estructura de los resultados de grabación
typedef struct ST_ShengMu {
char Pin[3 ]; // Cadena de consonantes iniciales
FenCi *pLian; // Subárbol del árbol de segmentación de palabras
} ShengMu // Colección estática utilizada para definir consonantes iniciales
typedef struct ST_YunMu {
char Yin[5]; // Cadena final, diferente de las consonantes iniciales
FenCi *pLian // Subárbol del árbol de segmentación de palabras
<; p>} YunMu ; // Colección estática utilizada para definir finales//Consonantes iniciales
ShengMu smJiHe[29] = {{""}, {"b"}, { " c"}, {"d"}, {""}, {"f"}, {"g"},
{"h"}, {""}, {"j" } , {"k"}, {"l"}, {"m"}, {"n"},
{""}, {"p"}, {"q"}, { "r"}, {"s"}, {"t"}, {""},
{""}, {"w"}, {"x"}, {"y " }, {"z"}, {"ch"}, {"sh"}, {"zh"}};
// Finales que terminan en palabras
YunMu ymJiHe [ 24] = {{"a"}, {"o"}, {"e"}, {"i"}, {"u"}, {"v"},
{" ai "}, {"ei"}, {"ui"}, {"ao"}, {"ou"},
{"iu"}, {"ie"}, {"ue " },
{"er"},
{"an"}, {"en"}, {"in"}, {"un"}, {"vn " },
{"ang"}, {"eng"}, {"ing"}, {"ong"}};
// Con respecto al árbol de segmentación de palabras, es absolutamente posible Construido de acuerdo con la tabla de sílabas del "Diccionario chino moderno"
//Construcción de un determinado subárbol de palabras
void En
itFenZiShu0() {
}
int main() {
char JuZi[M_JUZI];
//scanf("s ", JuZi);
// Algoritmo 1. Búsqueda hash de la primera palabra, ligadura de lista vinculada, ligadura de lista vinculada
// Si la tabla a buscar es limitada, puede usar si, de lo contrario, también puedes usar la búsqueda hash
// Problemas a resolver:
// 1.1 Confusión entre consonantes iniciales y consonantes iniciales, la diferencia entre los dos prefijos es. al menos tres Posición
// 1.2. Confusión entre consonante final final e inicial, contexto, retroceso
// 1.3 Busque hacia adelante, primero, si la final se puede extender a. otra más larga Finales,
// 1.3.1 Al recopilar palabras de las finales,
// No sólo debemos intentar "ampliar" las finales, sino que también debemos juzgar las sufijo de las nuevas finales después de la expansión,
// Si este sufijo es una consonante inicial, ¿existe una final adecuada después de la consonante inicial para formar un nuevo carácter?
// Si existe, debes registrar esta posibilidad y estar preparado para ponerle fin con anticipación
// Si no, es natural continuar "expandiendo" la nueva finales
p>// Tales finales son como: e-gt; er, a-gt; an-gt; ang, e-gt; eng, i-gt; gt; ing, u- gt; un,
// Tales consonantes iniciales son: e, r, g
// 1.3.2 Al buscar palabras a partir de consonantes iniciales,
// Si no se pueden encontrar todas las finales en la lista de consonantes iniciales más adelante, puede expandir y hacer coincidir consonantes iniciales más largas
// Algoritmo 2. Encuentre gradualmente todos los puntos de consonantes iniciales, contextual análisis, corrección y análisis a la estructura. Mostrar
// Algoritmo 2.1 Relaciona cada palabra del texto original con consonantes iniciales conocidas una a una
// Algoritmo 2.2 Con inicial conocida consonantes, recopila cada palabra que aparece en el texto original dentro de un cierto rango de punto de consonante inicial
getchar() // enter
return 1;
}