Colección de citas famosas - Frases elegantes - Algoritmo de segmentación de palabras Pinyin lenguaje C

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

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;

}