med System; med System.Collections.Generic; med System.Linq; med System.Text; använda System.Threading.Tasks; med hjälp av PanGu.Dict; med PanGu.Framework; med PanGu.Match; med PanGu.Setting; med PanGu.HighLight; med hjälp av Lucene.Net.Analysis; med hjälp av System.IO; med PanGu; med System.Configuration;
namnrymden Pangu.Helper
{ offentlig klass PanguHelper {
privat flyktig statisk PanguHelper _instance = null; privat statisk readonly-objekt lockHelper = nytt objekt(); privat PanguHelper() { }
/// <summary> [Standard använder pangu.xml profil under samma sökväg] /// </summary> /// <returns></returns> offentlig statisk PanguHelper DelaHjälpare { Hämta { om (_instance == null) { lås (lockHelper) { om (_instance == null) { _instance = ny PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
återvända _instance; } }
/// <summary> Initiera den specificerade konfigurationsfilen /// </summary> <param name="configFile"> pangu konfigurationsfil</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Få en ordklassbeskrivning /// </summary> <param name="pos"> ordklassuppräkning</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { Switch (POS) { Fallet POS. POS_UNK: returnera "okänd ordklass;" Fallet POS. POS_D_K: returnera "trailing component"; Fallet POS. POS_D_H: returnera "föregående komponent"; Fallet POS. POS_A_NZ: returnera "annat egennamn"; Fallet POS. POS_A_NX: återlämna "utländsk karaktär"; Fallet POS. POS_A_NR: returnera "personens namn"; Fallet POS. POS_D_Z: returnera "statusord"; Fallet POS. POS_A_NT: återlämna "institution corps"; Fallet POS. POS_A_NS: återlämna "ortsnamn"; Fallet POS. POS_D_Y: återvänder till "humörsordet humörmorfem"; Fallet POS. POS_D_X: returnera "icke-morfemiskt ord"; Fallet POS. POS_D_W: returnera "interpunktion"; Fallet POS. POS_D_T: returnera "word of time"; Fallet POS. POS_D_S: returnera "platsord"; Fallet POS. POS_D_V: återger "verbmorfem"; Fallet POS. POS_D_U: returnera "partikelpartikelmorfem"; Fallet POS. POS_D_R: återvända "pronomenmorfem"; Fallet POS. POS_A_Q: returnera "quantifier quantifier quantifier morphem"; Fallet POS. POS_D_P: återvänd "preposition"; Fallet POS. POS_D_MQ: returnera "kvantifierare"; Fallet POS. POS_A_M: returnera "numeral, numeral, numeral"; Fallet POS. POS_D_O: återger "onomatopoeia"; Fallet POS. POS_D_N: återlämna "substantivmorfem"; Fallet POS. POS_D_F: returnera "azimutordet azimutmorfem"; Fallet POS. POS_D_E: returnera "interjektionsmorfem"; Fallet POS. POS_D_L: returnera "idiom"; Fallet POS. POS_D_I: returnera "idiom"; Fallet POS. POS_D_D: återger "adverb adverb morfem"; Fallet POS. POS_D_C: returnera "konjunktiv konjunktionsmorfem"; Fallet POS. POS_D_B: returnera "för att särskilja ord för att skilja morfem"; Fallet POS. POS_D_A: återger "adjektivmorfem"; } returnera "okänd ordklass"; }
/// <summary> Få participet [Original Wordinfo] /// </summary> <param name="content"> innehållet i ordet som ska separeras</param> <param name="matchOptions"> använd matchningsalternativen</param> <param name="matchParameter"> använd matchparametern</param> /// <returns></returns> publik ICollection<WordInfo> GetSegmentWords (stränginnehåll, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmentsegment = nytt segment(); <WordInfo> ICollektionsord = segment. DoSegment (innehåll, matchOptions, matchParameter); återge ord; }
/// <summary> Få particip /// </summary> <param name="content"> innehållet i ordet som ska separeras</param> <param name="matchOptions"> Matchningsalternativ används inte som standard</param> <param name="matchParameter" > använd matchande parameter, inte som standard</param> publik lista<string> GetSplitWords (stränginnehåll, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmentsegment = nytt segment(); <WordInfo> ICollektionsord = segment. DoSegment(innehåll, matchOptions, matchparameter); Listlista<string> = ny Lista<string>(); foreach (WordInfo-ord i ord) { lista. Add(word. Word); } återvändolista; }
/// <summary> Erhåll participet för den angivna ordfrekvensen /// </summary> <param name="content"> innehållet i ordet som ska separeras</param> <param name="frequency"> ordets frekvens</param> <param name="matchOptions"> Matchningsalternativ används inte som standard</param> <param name="matchParameter" > använd matchande parameter, inte som standard</param> /// <returns></returns> publik lista<string> GetSplitWordsByFrequency(stränginnehåll, dubbel frekvens, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmentsegment = nytt segment(); <WordInfo> ICollektionsord = segment. DoSegment (innehåll, matchOptions, matchParameter);
Listlista<string> = ny Lista<string>(); foreach (WordInfo-ord i ord) { om (frekvens == ord. Frekvens) { lista. Add(word. Word); } } återvändolista; }
/// <summary> Sätt ett particip med en viss vikt /// </summary> <param name="content"> innehållet i ordet som ska separeras</param> <param name="rank"> vikt</param> <param name="matchOptions"> Matchningsalternativ används inte som standard</param> <param name="matchParameter" > använd matchande parameter, inte som standard</param> /// <returns></returns> publik lista<string> GetSplitWordsByRank(stränginnehåll, int-rankning, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segmentsegment = nytt segment(); <WordInfo> ICollektionsord = segment. DoSegment (innehåll, matchOptions, matchParameter);
Listlista<string> = ny Lista<string>(); foreach (WordInfo-ord i ord) { om (rang == ord. Rang) { lista. Add(word. Word); } } återvändolista; }
/// <summary> Höjdpunkter /// </summary> <param name="keyword"> strängen för att markera</param> <param name="content">content</param> <param name="fragmentSize"> antalet tecken för varje sammanfattningsfält</param> <returns>Markerat innehåll</returns> publik statisk sträng HighLight (strängnyckelord, stränginnehåll, int fragmentSize) { Skapa en HTML-kod med parametern som markerar söktermen SimpleHTMLFormatter simpleHTMLFormatter = ny SimpleHTMLFormatter("<font color='red'>", "</font>"); Skapa markeringar, ange HTML-kod och Pangu-objekt Semgent Highlighter högre = ny Highlighter(simpleHTMLFormatter, ny Segment()); Sätt antalet tecken för varje sammanfattningsfält högre. FragmentStorlek = FragmentStorlek; sträng highlightStr = högre. GetBestFragment (nyckelord, innehåll);
om (sträng. IsNullOrEmpty(highlightStr)) { returnera innehåll; } återvänd höjdpunktStr; }
}
}
|