Algoritmo de segmentación Pinyin C
#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: p>
// 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;
} p>