usando Sistema; usando System.Collections.Generic; usando System.Linq; usando System.Text; usando System.Threading.Tasks; usando PanGu.Dict; usando PanGu.Framework; usando PanGu.Match; usando PanGu.Setting; usando PanGu.HighLight; usando Lucene.Net.Analysis; usando System.IO; usando PanGu; usando System.Configuration;
espacio de nombres Pangu.Helper
{ clase pública PanguHelper {
PanguHelper estático volátil privado _instance = nulo; bloqueo de objeto solo de lectura estático privado Helper = nuevo objeto(); privado PanguHelper() { }
/// <summary> [Por defecto usa pangu.xml perfil bajo la misma ruta] /// </summary> /// <returns></returns> público estático PanguHelper ShareHelper { Obtener { if (_instance == null) { Cerradura (LockHelper) { if (_instance == null) { _instance = nuevo PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
regresar _instance; } }
/// <summary> Inicializar el archivo de configuración especificado /// </summary> <param name="configFile"> archivo de configuración pangu</param> empty público Use(string configFile) { PanGu.Segment.Init(archivoConfig); }
/// <summary> Obtén una descripción de la parte del discurso /// </summary> <param name="pos"> enumeración de las partes del discurso</param> /// <returns></returns> cadena pública GetPosDescrip{filter}t(POS pos) { Interruptor (POS) { caso PUT. POS_UNK: devolver "parte del discurso desconocida;" caso PUT. POS_D_K: devolver "componente de seguimiento"; caso PUT. POS_D_H: devolver "componente anterior"; caso PUT. POS_A_NZ: devolver "otro nombre propio"; caso PUT. POS_A_NX: devolver "carácter extranjero"; caso PUT. POS_A_NR: devolver "nombre de la persona"; caso PUT. POS_D_Z: devolver "palabra de estado"; caso PUT. POS_A_NT: devolver el "cuerpo de instituciones"; caso PUT. POS_A_NS: devolver "nombre del lugar"; caso PUT. POS_D_Y: devolver "palabra de modo morfema"; caso PUT. POS_D_X: devolver "palabra no morfémica"; caso PUT. POS_D_W: devolver "puntuación"; caso PUT. POS_D_T: devolver "palabra del tiempo"; caso PUT. POS_D_S: devolver "colocar palabra"; caso PUT. POS_D_V: devolver "morfema verbal"; caso PUT. POS_D_U: devolver "morfema partícula"; caso PUT. POS_D_R: devolver "pronombre pronombre morfema"; caso PUT. POS_A_Q: devolver "cuantificador morfema"; caso PUT. POS_D_P: devolver la "preposición"; caso PUT. POS_D_MQ: devolver "cuantificador"; caso PUT. POS_A_M: devolver "número, número, número"; caso PUT. POS_D_O: devolver "onomatopeyas"; caso PUT. POS_D_N: devolver "morfema"; caso PUT. POS_D_F: devolver "palabra azimutal morfema de azimut"; caso PUT. POS_D_E: devolver "morfema de interjección"; caso PUT. POS_D_L: devolver "modismo"; caso PUT. POS_D_I: devolver "modismo"; caso PUT. POS_D_D: devolver "adverbio adverbio morfema"; caso PUT. POS_D_C: devolver "morfema de conjunción conjuntiva"; caso PUT. POS_D_B: devolver "distinguir palabras para distinguir morfemas"; caso PUT. POS_D_A: devolver "morfema adjetivo"; } devolver "Parte del discurso desconocida"; }
/// <summary> Consigue el participio [Palabra original] /// </summary> <param name="content"> el contenido de la palabra a separar</param> <param name="matchOptions"> usa las opciones correspondientes</param> <param name="matchParameter"> usar el parámetro de coincidencia</param> /// <returns></returns> public<WordInfo> ICollection GetSegmentWords(string content, MatchOptions matchOptions = null, MatchParameter, matchParameter = nulo) { Segmento segmento = nuevo segmento(); <WordInfo> Palabras de ipolarción = segmento. DoSegment (contenido, matchOptions, matchParameter); responder palabras; }
/// <summary> Obtener participios /// </summary> <param name="content"> el contenido de la palabra a separar</param> <param name="matchOptions"> Se usan opciones de coincidencia, no por defecto</param> <param name="matchParameter" > usar el parámetro correspondiente, no por defecto</param> Lista pública<string> GetSplitWords(contenido de cadena, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmento segmento = nuevo segmento(); <WordInfo> Palabras de ipolarción = segmento. DoSegment(contenido, matchOptions, matchParameter); <string> Lista lista = nueva Lista<string>(); foreach (WordInfo palabra en palabras) { lista. Añade (palabra. Palabra); } lista de retorno; }
/// <summary> Obtener el participio de la frecuencia de palabra especificada /// </summary> <param name="content"> el contenido de la palabra a separar</param> <param name="frecuencia"> palabra frecuencia</param> <param name="matchOptions"> Se usan opciones de coincidencia, no por defecto</param> <param name="matchParameter" > usar el parámetro correspondiente, no por defecto</param> /// <returns></returns> Public<string> List GetSplitWordsByFrequency(string content, double frequenty, MatchOptions matchOptions = null, MatchParameter, matchParameter = nulo) { Segmento segmento = nuevo segmento(); <WordInfo> Palabras de ipolarción = segmento. DoSegment (contenido, matchOptions, matchParameter);
<string> Lista lista = nueva Lista<string>(); foreach (WordInfo palabra en palabras) { if (frecuencia == palabra. Frecuencia) { lista. Añade (palabra. Palabra); } } lista de retorno; }
/// <summary> Consigue un participio con un peso especificado /// </summary> <param name="content"> el contenido de la palabra a separar</param> <param name="rank"> peso</param> <param name="matchOptions"> Se usan opciones de coincidencia, no por defecto</param> <param name="matchParameter" > usar el parámetro correspondiente, no por defecto</param> /// <returns></returns> Public List<string> GetSplitWordsByRank(string content, int rank, MatchOptions matchOptions = null, MatchParameter, matchParameter = nulo) { Segmento segmento = nuevo segmento(); <WordInfo> Palabras de ipolarción = segmento. DoSegment (contenido, matchOptions, matchParameter);
<string> Lista lista = nueva Lista<string>(); foreach (WordInfo palabra en palabras) { si (rango == palabra. Rango) { lista. Añade (palabra. Palabra); } } lista de retorno; }
/// <summary> Aspectos destacados /// </summary> <param name="palabra clave"> la cadena para resaltar</param> <param name="content">content</param> <param name="fragmentSize"> el número de caracteres de cada campo resumen</param> <returns>Contenido destacado</returns> cadena estática pública HighLight(palabra clave de cadena, contenido de cadena, int fragmentSize) { Crea un código HTML con el parámetro que resalte el término de búsqueda SimpleHTMLFormatter simpleHTMLFormatter = nuevo SimpleHTMLFormatter("<color de la fuente='red'>", "</font>"); Crea resaltados, introduce código HTML y objeto Pangu Semgent Destacado del resaltador = nuevo resaltador(simpleHTMLFormatter, nuevo Segmento()); Establece el número de caracteres para cada campo de resumen más alto. FragmentTamaño = FragmentTamaño; resaltado de la cuerda Str = más alto. GetBestFragment(palabra clave, contenido);
si (cadena. IsNullOrEmpty(highlightStr)) { devolver contenido; } volver a destacarStr; }
}
}
|