z wykorzystaniem System; używając System.Collections.Generic; używając System.Linq; używając System.Text; używając System.Threading.Tasks; używając PanGu.Dict; używając PanGu.Framework; używając PanGu.Match; używając PanGu.Setting; używając PanGu.HighLight; używając Lucene.Net.Analysis; używając System.IO; używając PanGu; używając System.Configuration;
przestrzeń nazw Pangu.Helper
{ Publiczna klasa PanguHelper {
prywatny statyczny ulotny PanguHelper _instance = null; prywatny statyczny obiekt tylko do odczytu lockHelper = nowy obiekt(); prywatny PanguHelper() { }
/// <summary> [Domyślnie używa pangu.xml profilu na tej samej ścieżce] /// </summary> /// <returns></returns> publiczny statyczny PanguHelper ShareHelper { Pobierz { jeśli (_instance == null) { lock (lockHelper) { jeśli (_instance == null) { _instance = nowy PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Użyj(configFile); } } } }
powrót _instance; } }
/// <summary> Zainicjalizuj określony plik konfiguracyjny /// </summary> <param name="configFile"> pliku konfiguracyjnego pangu</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Uzyskaj opis części mowy /// </summary> <nazwa paramu="pos"> wyliczanie części mowy</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { Przełącznik (pos) { POS. w sprawie POS. POS_UNK: powrót "nieznana część mowy;" POS. w sprawie POS. POS_D_K: przywróć "komponent końcowy"; POS. w sprawie POS. POS_D_H: zwróć "poprzedzający komponent"; POS. w sprawie POS. POS_A_NZ: przywróć "inne imię własne"; POS. w sprawie POS. POS_A_NX: powrót "obcy znak"; POS. w sprawie POS. POS_A_NR: zwróć "imię osoby"; POS. w sprawie POS. POS_D_Z: zwróć "słowo statusu"; POS. w sprawie POS. POS_A_NT: powrót "ciało instytucji"; POS. w sprawie POS. POS_A_NS: przywrócić "nazwę miejsca"; POS. w sprawie POS. POS_D_Y: przywróć "morfem nastroju"; POS. w sprawie POS. POS_D_X: przywróć "słowo niemorfemiczne"; POS. w sprawie POS. POS_D_W: zwróć "interpunkcję"; POS. w sprawie POS. POS_D_T: powrót "word of time"; POS. w sprawie POS. POS_D_S: zwróć "postać słowo"; POS. w sprawie POS. POS_D_V: przywróć "morfem czasownikowy"; POS. w sprawie POS. POS_D_U: zwróć "morfem cząstek cząstek"; POS. w sprawie POS. POS_D_R: powrót "morfem zaimków zaimków"; POS. w sprawie POS. POS_A_Q: przywróć "morfem kwantyfikatora kwantyfikatora"; POS. w sprawie POS. POS_D_P: powrót "przyimek"; POS. w sprawie POS. POS_D_MQ: zwróć "kwantyfikator"; POS. w sprawie POS. POS_A_M: zwróć "numeral, numeral, numeral"; POS. w sprawie POS. POS_D_O: powrót "onomatopeja"; POS. w sprawie POS. POS_D_N: przywróć "morfem rzeczownikowy"; POS. w sprawie POS. POS_D_F: przywróć "morfem azimutowy słowa azymutalny"; POS. w sprawie POS. POS_D_E: przywróć "morfem wykrzykowania"; POS. w sprawie POS. POS_D_L: przywrócić "idiom"; POS. w sprawie POS. POS_D_I: powrót "idiom"; POS. w sprawie POS. POS_D_D: return "morfem przysłówkowy przysłówek"; POS. w sprawie POS. POS_D_C: przywróć "morfem konjunkcji koniunktywnej"; POS. w sprawie POS. POS_D_B: return "aby rozróżnić słowa i rozróżnić morfemy"; POS. w sprawie POS. POS_D_A: przywróć "morfem przymiotnikowy"; } return "nieznana część mowy"; }
/// <summary> Pobierz imiesłów [Oryginalne informacje o słowie] /// </summary> <nazwa parametru="treść"> treść słowa do oddzielenia</param> <nazwa parametru="matchOptions"> użyj opcji dopasowania</param> <param name="matchParameter"> użyj parametru match</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(zawartość ciągu ciągów, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nowy Segment(); Słowa ICollection<WordInfo> = segment. DoSegment(content, matchOptions, matchParameter); oddać słowa; }
/// <summary> Otrzymaj imiesłów /// </summary> <nazwa parametru="treść"> treść słowa do oddzielenia</param> <param name="matchOptions"> Opcje dopasowania są używane, a nie domyślnie</param> <param name="matchParameter" > używać parametru dopasowania, nie domyślnie</param> public List<string> GetSplitWords(zawartość ciągu tekstu, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nowy Segment(); Słowa ICollection<WordInfo> = segment. DoSegment(content,matchOptions,matchParameter); <string> List List = nowa List<string>(); foreach (słowo WordInfo w słowach) { listę. Dodaj(word). Word); } lista zwrotów; }
/// <summary> Uzyskaj imiesłów o określonej częstotliwości słowa /// </summary> <nazwa parametru="treść"> treść słowa do oddzielenia</param> <nazwa parametru="częstotliwość"> częstotliwość słów</param> <param name="matchOptions"> Opcje dopasowania są używane, a nie domyślnie</param> <param name="matchParameter" > używać parametru dopasowania, nie domyślnie</param> /// <returns></returns> public List<string> GetSplitWordsByFrequency (zawartość ciągu ciągów, podwójna częstotliwość, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nowy Segment(); Słowa ICollection<WordInfo> = segment. DoSegment(content, matchOptions, matchParameter);
<string> List List = nowa List<string>(); foreach (słowo WordInfo w słowach) { jeśli (częstotliwość == słowo. Częstotliwość) { listę. Dodaj(word). Word); } } lista zwrotów; }
/// <summary> Uzyskaj imiesłów o określonej wadze /// </summary> <nazwa parametru="treść"> treść słowa do oddzielenia</param> <nazwa="stopień"> waga</param> <param name="matchOptions"> Opcje dopasowania są używane, a nie domyślnie</param> <param name="matchParameter" > używać parametru dopasowania, nie domyślnie</param> /// <returns></returns> publiczna lista<string> GetSplitWordsByRank(zawartość ciągu ciągów, int rank, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nowy Segment(); Słowa ICollection<WordInfo> = segment. DoSegment(content, matchOptions, matchParameter);
<string> List List = nowa List<string>(); foreach (słowo WordInfo w słowach) { if (rang == słowo. Stopień) { listę. Dodaj(word). Word); } } lista zwrotów; }
/// <summary> Najważniejsze momenty /// </summary> <nazwa parametru="słowo kluczowe"> ciąg do podświetlenia</param> <nazwa parametru="content">treść</param> <nazwa parametru="fragmentSize"> liczba znaków dla każdego pola podsumowania</param> <returns>Wyróżnione treści</returns> publiczny statyczny ciąg HighLight (słowo kluczowe w ciągu ciągu, zawartość ciągu znaków, int fragmentSize) { Stwórz kod HTML z parametrem podkreślającym hasło wyszukiwania SimpleHTMLFormatter simpleHTMLFormatter = nowy SimpleHTMLFormatter("<font color='red'>", "</font>"); Utwórz podświetlenie, wprowadź kod HTML i Pangu Semgent Highlighter highter = nowy Highlighter(simpleHTMLFormatter, nowy Segment()); Ustaw liczbę znaków dla każdego pola podsumowania Wyższy. FragmentSize = fragmentSize; string highlightStr = highter. GetBestFragment (słowo kluczowe, treść);
jeśli (ciąg ciągu. IsNullOrEmpty(highlightStr)) { powrót zawartości; } return highlightStr; }
}
}
|