Red de conocimiento informático - Aprendizaje de código fuente - Algoritmo de segmentación Pinyin C

Algoritmo de segmentación Pinyin C

#include

#define M_JUZI 200

// Estructura de verificación de lista vinculada del diagrama de árbol

// Construido utilizando almacenamiento vinculado de árboles de gráficos y todos los subárboles registran las posiciones estáticas (índices) de las cadenas

typedef struct ST_ FenCi{

int LeiBie; // ¿Qué categoría está vinculada? 1: Finales, 2: Iniciales

int SuoYin; // El índice final después de la consonante inicial o el índice de consonante inicial de la palabra después de la final en la palabra

struct ST_FenCi * pN; //Hermano

}. FenCi;

typedef struct ST_Ci{

int SuoYin; // El índice de la subcadena (palabra) en la cadena original

int // Sub; Longitud de la cadena

}. Ci; // Estructura de los resultados de grabación

typedef struct ST_ShengMu {

char Pin[3]; // Cadena de consonantes

FenCi *pLian; subárbol de un árbol de partición

}.

ShengMu; // conjunto estático utilizado para definir consonantes

typedef struct ST_YunMu {

char Yin[5] // cadena de rima, distinguiendo de consonantes

FenCi *pLian; // subárbol del árbol de participio

}finales; // Conjunto estático usado para definir rima

Comienzo de consonante

Consonante inicial smJiHe[29] = {{""},{"b"},{"c"},{"d"},{""} {"},{"y"},{"z"},{"ch"} ,{"sh"},{"zh"}};

//Fin de la rima

Mica 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"}};

// En cuanto al subárbol, se puede construir de acuerdo con la tabla de sílabas del "Diccionario chino moderno"

// Construye un subárbol del subárbol de caracteres

void InitFenZiShu0() {

}

int main() {

char JuZi[M_JUZI];

//scanf("%s",JuZi);

// Algoritmo 1. Búsqueda hash de primera palabra, palabras de concatenación de lista vinculada , palabras de concatenación de listas enlazadas

// Si el número de tablas a buscar es limitado, puede usar if, else o hash search

// Problemas a resolver:

// 1.1 .Confusión entre inicio vocálico y final vocálico, existen al menos tres posiciones entre los dos inicios

// 1.2. Confusión entre final vocálico y final vocálico, contexto y retroceso.

p>

// 1.3. Búsqueda sobredirigida, en primer lugar, si la rima se puede ampliar a otra rima más larga,

// 1.3.1 Al recopilar palabras de la rima,

// No sólo intenta "extender" la rima, sino también determinar el sufijo de la nueva rima expandida

// Si el sufijo es final. rima, ¿hay una rima adecuada después de la rima final para formar una nueva palabra que rima?

// Si lo hay, debes rastrear esta posibilidad y prepararte para terminar con esta posibilidad lo antes posible

// Si no, también es lógico continuar "expandiéndote" la nueva rima

// Rimas como: e->er, a->an->ang, e->en->eng, i-> in->ing, i-> and- >.in- >ing, u->un,

// Tales consonantes son: e, r, g

// 1.3.2 Buscar palabras a partir de consonantes

// Si no se pueden encontrar todas las finales en la lista vinculada de cabeza de consonante en el futuro, la coincidencia se puede extender para que coincida con consonantes más largas

// Algoritmo 2.

Encuentra asintóticamente todos los puntos finales, contextualiza, corrige, analiza para estructurar, muestra

// Algoritmo 2.1 Une consonantes conocidas, une cada palabra en el texto original una por una

// Algoritmo 2.2 Comprender las consonantes y recopilar cada punto de consonante que aparece dentro de un rango determinado en el texto original

getchar(); // enter

return 1;

}