usando o 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;
espaço de nomes Pangu.Helper
{ classe pública PanguHelper {
PanguHelper estático volátil privado _instance = nulo; bloqueio privado estático de objeto somente leituraHelper = novo objeto(); privado PanguHelper() { }
/// <summary> [Padrão usa pangu.xml perfil no mesmo caminho] /// </summary> /// <returns></returns> estático público PanguHelper ShareHelper { Obter { if (_instance == null) { Fechadura (Ajudante de Fechadura) { if (_instance == null) { _instance = novo PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
retorno _instance; } }
/// <summary> Inicialize o arquivo de configuração especificado /// </summary> <param name="configFile"> arquivo de configuração pangu</param> public void Use(string configFile) { PanGu.Segment.Init(arquivo de configuração); }
/// <summary> Obtenha uma descrição da classe gramatical /// </summary> <param name="pos"> enumeração de classes gramaticais</param> /// <returns></returns> string publica GetPosDescrip{filter}t(POS pos) { Interruptor (POS) { caso POS. POS_UNK: devolver "parte do discurso desconhecida;" caso POS. POS_D_K: retorno "componente de saída"; caso POS. POS_D_H: retorne "componente anterior"; caso POS. POS_A_NZ: devolver "outro nome próprio"; caso POS. POS_A_NX: devolver "caráter estrangeiro"; caso POS. POS_A_NR: devolver "nome da pessoa"; caso POS. POS_D_Z: devolver "palavra de status"; caso POS. POS_A_NT: devolver o "corpo de instituições"; caso POS. POS_A_NS: devolver "nome do lugar"; caso POS. POS_D_Y: devolver "palavra de humor morfema"; caso POS. POS_D_X: retorne "palavra não morfêmica"; caso POS. POS_D_W: devolver "pontuação"; caso POS. POS_D_T: devolver "palavra do tempo"; caso POS. POS_D_S: devolver "colocar palavra"; caso POS. POS_D_V: devolver "morfema verbal"; caso POS. POS_D_U: devolver "morfema de partícula"; caso POS. POS_D_R: devolver "pronome pronome morfema"; caso POS. POS_A_Q: retorne "quantificador de morfema"; caso POS. POS_D_P: retorno "preposição"; caso POS. POS_D_MQ: retorne "quantificador"; caso POS. POS_A_M: devolver "numeral, numeral, numeral"; caso POS. POS_D_O: devolver "onomatopeias"; caso POS. POS_D_N: devolver "substantivo morfema"; caso POS. POS_D_F: devolver "palavra azimute morfema azimute"; caso POS. POS_D_E: devolver "morfema de interjeição"; caso POS. POS_D_L: devolver "idioma"; caso POS. POS_D_I: devolver "idioma"; caso POS. POS_D_D: devolver "advérbio advérbio morfema"; caso POS. POS_D_C: devolver "morfema de conjunção conjuntiva"; caso POS. POS_D_B: retorne "distinguir palavras para distinguir morfemas"; caso POS. POS_D_A: devolver "morfema adjetivo"; } devolver "Classe Expressiva Desconhecida"; }
/// <summary> Obtenha o particípio [Original Wordinfo] /// </summary> <param name="content"> o conteúdo da palavra a ser separado</param> <param name="matchOptions"> use as opções correspondentes</param> <param name="matchParameter"> use o parâmetro de correspondência</param> /// <returns></returns> public<WordInfo> ICollection GetSegmentWords(string content, MatchOptions matchOptions = null, MatchParameter, matchParameter = null) { Segmento segmento = novo Segmento(); Palavras de colição<WordInfo> = segmento. DoSegment(conteúdo, matchOptions, matchParameter); responder palavras; }
/// <summary> Obtenha particípios /// </summary> <param name="content"> o conteúdo da palavra a ser separado</param> <param name="matchOptions"> Opções de correspondência são usadas, não por padrão</param> <param name="matchParameter" > usar o parâmetro correspondente, não por padrão</param> Lista pública<string> GetSplitWords (conteúdo de string, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmento segmento = novo Segmento(); Palavras de colição<WordInfo> = segmento. DoSegment(conteúdo, matchOptions, matchParameter); <string> Lista lista = nova Lista<string>(); foreach (WordInfo palavra em palavras) { lista. Adicione(palavra). Palavra); } lista de retorno; }
/// <summary> Obtenha o particípio da frequência de palavra especificada /// </summary> <param name="content"> o conteúdo da palavra a ser separado</param> <param name="frequência"> frequência de palavra</param> <param name="matchOptions"> Opções de correspondência são usadas, não por padrão</param> <param name="matchParameter" > usar o parâmetro correspondente, não por padrão</param> /// <returns></returns> Lista pública<string> GetSplitWordsByFrequency(string content, double frequent, MatchOptions matchOptions = null, MatchParameter, matchParameter = null) { Segmento segmento = novo Segmento(); Palavras de colição<WordInfo> = segmento. DoSegment(conteúdo, matchOptions, matchParameter);
<string> Lista lista = nova Lista<string>(); foreach (WordInfo palavra em palavras) { if (frequência == palavra. Frequência) { lista. Adicione(palavra). Palavra); } } lista de retorno; }
/// <summary> Obtenha um particípio com um peso especificado /// </summary> <param name="content"> o conteúdo da palavra a ser separado</param> <param name="rank"> peso</param> <param name="matchOptions"> Opções de correspondência são usadas, não por padrão</param> <param name="matchParameter" > usar o parâmetro correspondente, não por padrão</param> /// <returns></returns> Lista pública<string> GetSplitWordsByRank(string content, int rank, MatchOptions matchOptions = null, MatchParameter, matchParameter = null) { Segmento segmento = novo Segmento(); Palavras de colição<WordInfo> = segmento. DoSegment(conteúdo, matchOptions, matchParameter);
<string> Lista lista = nova Lista<string>(); foreach (WordInfo palavra em palavras) { if (rank == palavra. Classificação) { lista. Adicione(palavra). Palavra); } } lista de retorno; }
/// <summary> Destaque /// </summary> <param name="palavra-chave"> a string para destacar</param> <param name="content">content</param> <param name="fragmentSize"> o número de caracteres para cada campo de resumo</param> <returns>Conteúdo destacado</returns> String estática pública HighLight(palavra-chave de string, conteúdo de string, int fragmentSize) { Crie um código HTML com o parâmetro destacando o termo de busca SimpleHTMLFormatter simpleHTMLFormatter = novo SimpleHTMLFormatter("<font color='red'>", "</font>"); Crie destaques, insira código HTML e o objeto Pangu Semgent Highter do marcador = novo Highlighter(simpleHTMLFormatter, novo Segmento()); Defina o número de caracteres para cada campo de resumo mais alto. TamanhoDeFragmento = TamanhoDeFragmento; destaque da corda Str = mais alto. GetBestFragment (palavra-chave, conteúdo);
se (string. IsNullOrEmpty(highlightStr)) { devolver conteúdo; } voltar destaqueStr; }
}
}
|