pomocou systému; používajúc System.Collections.Generic; pomocou System.Linq; pomocou System.Text; pomocou System.Threading.Tasks; používajúc PanGu.Dict; pomocou PanGu.Framework; pomocou PanGu.Match; pomocou PanGu.Setting; pomocou PanGu.HighLight; pomocou Lucene.Net.Analysis; použitím System.IO; pomocou PanGu; pomocou System.Configuration;
menný priestor Pangu.Helper
{ verejná trieda PanguHelper {
súkromný volatilný statický PanguHelper _instance = null; súkromný statický objekt len na čítanie lockHelper = nový objekt(); private PanguHelper() { }
/// <summary> [Predvolene používa pangu.xml profil pod rovnakou cestou] /// </summary> /// <returns></returns> verejný statický PanguHelper ShareHelper { Získaj { ak (_instance == null) { zámok (lockHelper) { ak (_instance == null) { _instance = nový PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
return _instance; } }
/// <summary> Inicializujte zadaný konfiguračný súbor /// </summary> <param name="configFile"> pangu konfiguračný súbor</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Získajte popis slovných druhov /// </summary> <param name="pos"> enumerácia slovných druhov</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { Switch (pos) { prípadový POS. POS_UNK: vrátiť "neznámy slovný druh;" prípadový POS. POS_D_K: vrátiť "trailing component"; prípadový POS. POS_D_H: vrátiť "predchádzajúci komponent"; prípadový POS. POS_A_NZ: vrátiť "iné vlastné meno"; prípadový POS. POS_A_NX: vrátiť "cudzí znak"; prípadový POS. POS_A_NR: vrátiť "meno osoby"; prípadový POS. POS_D_Z: vrátiť "stavové slovo"; prípadový POS. POS_A_NT: vrátiť sa "súbor inštitúcií"; prípadový POS. POS_A_NS: vrátiť "názov miesta"; prípadový POS. POS_D_Y: vrátiť "morfém nálady, slov spôsobu"; prípadový POS. POS_D_X: vrátiť "nemorfemické slovo"; prípadový POS. POS_D_W: vrátiť "interpunkciu"; prípadový POS. POS_D_T: vrátiť "slovo času"; prípadový POS. POS_D_S: vrátiť "umiestniť slovo"; prípadový POS. POS_D_V: vrátiť "slovesný morfém"; prípadový POS. POS_D_U: vrátiť "časticový časticový morfém"; prípadový POS. POS_D_R: vrátiť "morfém zámeno zámeno"; prípadový POS. POS_A_Q: vrátiť "kvantifikátorový kvantifikátorový morfém"; prípadový POS. POS_D_P: vrátiť "predložku"; prípadový POS. POS_D_MQ: vrátiť "kvantifikátor"; prípadový POS. POS_A_M: vrátiť "numeral, numeral, numeral"; prípadový POS. POS_D_O: návrat "onomatopoeie"; prípadový POS. POS_D_N: vrátiť "morfém podstatného mena"; prípadový POS. POS_D_F: vrátiť "azimutálny azimutový morfém slova"; prípadový POS. POS_D_E: vrátiť "interjekčný morfém"; prípadový POS. POS_D_L: vrátiť "idiom"; prípadový POS. POS_D_I: vrátiť "idiom"; prípadový POS. POS_D_D: vrátiť "príslovkový príslovkový morfém"; prípadový POS. POS_D_C: vrátiť "konjunktívny konjunktívny morfém"; prípadový POS. POS_D_B: return "na rozlíšenie slov na rozlíšenie morfém"; prípadový POS. POS_D_A: vrátiť "prídavný morfém"; } return "neznáma slovná časť"; }
/// <summary> Získajte príčastie [Pôvodné slovné informácie] /// </summary> <názov parametra="obsah"> obsah slova, ktoré sa má oddeliť</param> <param name="matchOptions"> použite možnosti párovania</param> <param name="matchParameter"> použiť parameter match</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(obsah reťazca, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nový Segment(); ICollection<WordInfo> words = segment. DoSegment(content, matchOptions, matchParameter); vrátiť slová; }
/// <summary> Získajte príčastia /// </summary> <názov parametra="obsah"> obsah slova, ktoré sa má oddeliť</param> <param name="matchOptions"> Možnosti zhody sa používajú, nie predvolene</param> <param name="matchParameter" > použiť matching parameter, nie predvolene</param> public List<string> GetSplitWords(obsah reťazca, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nový Segment(); ICollection<WordInfo> words = segment. DoSegment(content,matchOptions,matchParameter); <string> List list = nový List<string>(); foreach (slovo WordInfo v slovách) { zoznam. Pridať (slovo. Word); } zoznam návratov; }
/// <summary> Získame príčastie zadanej frekvencie slova /// </summary> <názov parametra="obsah"> obsah slova, ktoré sa má oddeliť</param> <názov parametra="frekvencia"> frekvencia slov</param> <param name="matchOptions"> Možnosti zhody sa používajú, nie predvolene</param> <param name="matchParameter" > použiť matching parameter, nie predvolene</param> /// <returns></returns> public List<string> GetSplitWordsByFrequency (obsah reťazca, dvojnásobná frekvencia, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nový Segment(); ICollection<WordInfo> words = segment. DoSegment(content, matchOptions, matchParameter);
<string> List list = nový List<string>(); foreach (slovo WordInfo v slovách) { ak (frekvencia == slovo. Frekvencia) { zoznam. Pridať (slovo. Word); } } zoznam návratov; }
/// <summary> Získaj príčastie s určenou váhou /// </summary> <názov parametra="obsah"> obsah slova, ktoré sa má oddeliť</param> <názov parametra="hodnosť"> váha</param> <param name="matchOptions"> Možnosti zhody sa používajú, nie predvolene</param> <param name="matchParameter" > použiť matching parameter, nie predvolene</param> /// <returns></returns> public List<string> GetSplitWordsByRank(obsah reťazca, int rank, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nový Segment(); ICollection<WordInfo> words = segment. DoSegment(content, matchOptions, matchParameter);
<string> List list = nový List<string>(); foreach (slovo WordInfo v slovách) { ak (rank == slovo. Hodnosť) { zoznam. Pridať (slovo. Word); } } zoznam návratov; }
/// <summary> Vrchol /// </summary> <param name="keyword"> reťazec na zvýraznenie</param> <názov parametra="obsah">obsah</param> <param name="fragmentSize"> počet znakov pre každé súhrnné pole</param> <returns>Zvýraznený obsah</returns> public static string HighLight (kľúčové slovo reťazca, obsah reťazca, int fragmentSize) { Vytvorte HTML kód s parametrom zvýrazňujúcim vyhľadávaný výraz SimpleHTMLFormatter simpleHTMLFormatter = nový SimpleHTMLFormatter("<font color='red'>", "</font>"); Vytvorte zvýrazňovanie, zadajte HTML kód a Pangu objekt Semgent Highlighter = nový Highlighter(simpleHTMLFormatter, nový Segment()); Nastavte počet znakov pre každé súhrnné pole vyšší. FragmentSize = fragmentSize; string highlightStr = highter. GetBestFragment (kľúčové slovo, obsah);
ak (reťazec. IsNullOrEmpty(highlightStr)) { vrátiť obsah; } return highlightStr; }
}
}
|