pomocí System; pomocí System.Collections.Generic; pomocí System.Linq; pomocí System.Text; pomocí System.Threading.Tasks; pomocí PanGu.Dict; pomocí PanGu.Framework; pomocí PanGu.Match; pomocí PanGu.Setting; pomocí PanGu.HighLight; pomocí Lucene.Net.Analysis; pomocí System.IO; pomocí PanGu; pomocí System.Configuration;
jmenný prostor Pangu.Helper
{ veřejná třída PanguHelper {
soukromý volatilní statický PanguHelper _instance = null; soukromý statický objekt pouze pro čtení lockHelper = nový objekt(); private PanguHelper() { }
/// <summary> [Výchozí používá pangu.xml profil pod stejnou cestou] /// </summary> /// <returns></returns> veřejný statický PanguHelper ShareHelper { Dostaň { pokud (_instance == null) { zámek (lockHelper) { pokud (_instance == null) { _instance = nový PanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if (configFile != "") { _instance. Use(configFile); } } } }
návrat _instance; } }
/// <summary> Inicializace specifikovaného konfiguračního souboru /// </summary> <param name="configFile"> konfigurační soubor pangu</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> Získejte popis slovních druhů /// </summary> <název paramu="pos"> enumerace slovních druhů</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { Switch (POS) { případový POS. POS_UNK: vrátit "neznámou slovní část;" případový POS. POS_D_K: vraťte "sledující komponentu"; případový POS. POS_D_H: vrátit "předcházející komponentu"; případový POS. POS_A_NZ: vrátit "jiné vlastní jméno"; případový POS. POS_A_NX: vrátit "cizí znak"; případový POS. POS_A_NR: vrátit "jméno osoby"; případový POS. POS_D_Z: vrátit "stavové slovo"; případový POS. POS_A_NT: vrátit se "soubor institucí"; případový POS. POS_A_NS: vrátit "název místa"; případový POS. POS_D_Y: vrátit "morfém nálady slov"; případový POS. POS_D_X: vrátit "nemorfemické slovo"; případový POS. POS_D_W: vrátit "interpunkci"; případový POS. POS_D_T: návrat "slova času"; případový POS. POS_D_S: vrátit "umístit slovo"; případový POS. POS_D_V: vrátit "slovesný morfém"; případový POS. POS_D_U: vrátit "částicový částicový morfém"; případový POS. POS_D_R: vrátit "morfém zájmen a zájmen"; případový POS. POS_A_Q: vrátit "kvantifikátorový kvantifikátorový morfém"; případový POS. POS_D_P: vrátit "předložku"; případový POS. POS_D_MQ: vrátit "kvantifikátor"; případový POS. POS_A_M: vrátit "číslo, číslici, číslici"; případový POS. POS_D_O: vrátit "onomatopoeii"; případový POS. POS_D_N: vrátit "podstatný morfém"; případový POS. POS_D_F: vrátit "azimutální azimutní morfém slova"; případový POS. POS_D_E: vrátit "interjekční morfém"; případový POS. POS_D_L: vrátit "idiom"; případový POS. POS_D_I: vrátit "idiom"; případový POS. POS_D_D: vrátit "příslovkový příslovkový morfém"; případový POS. POS_D_C: vrátit "konjunktivní konjunkční morfém"; případový POS. POS_D_B: return "rozlišovat slova pro rozlišení morfémů"; případový POS. POS_D_A: vrátit "přídavný morfém"; } return "neznámá slovní část"; }
/// <summary> Získejte příčestí [Původní Wordinfo] /// </summary> <název parametru="obsah"> obsah slova, které má být odděleno</param> <název parametru="matchOptions"> použijte možnosti párování</param> <param name="matchParameter"> použijte parametr match</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(obsah řetězce, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { Segment = nový Segment(); ICollection<WordInfo> words = segment. DoSegment(content, matchOptions, matchParameter); vracet slova; }
/// <summary> Získejte participace /// </summary> <název parametru="obsah"> obsah slova, které má být odděleno</param> <název parametru="matchOptions"> Možnosti párování se používají, ne ve výchozím nastavení</param> <název parametru="matchParameter" > použít parametr shody, ne ve výchozím nastavení</param> public List<string> GetSplitWords(obsah řetězce, 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 ve slovech z WordInfo) { seznam. Přidat (slovo. Word); } seznam návratů; }
/// <summary> Získejte příčestí určené frekvence slov /// </summary> <název parametru="obsah"> obsah slova, které má být odděleno</param> <název parametru="frekvence"> frekvence slov</param> <název parametru="matchOptions"> Možnosti párování se používají, ne ve výchozím nastavení</param> <název parametru="matchParameter" > použít parametr shody, ne ve výchozím nastavení</param> /// <returns></returns> public List<string> GetSplitWordsByFrequency (obsah řetězce, dvojnásobná frekvence, 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 ve slovech z WordInfo) { pokud (frekvence == slovo. Frekvence) { seznam. Přidat (slovo. Word); } } seznam návratů; }
/// <summary> Získejte příčestí s určenou váhou /// </summary> <název parametru="obsah"> obsah slova, které má být odděleno</param> <název parametru="hodnost"> váha</param> <název parametru="matchOptions"> Možnosti párování se používají, ne ve výchozím nastavení</param> <název parametru="matchParameter" > použít parametr shody, ne ve výchozím nastavení</param> /// <returns></returns> public List<string> GetSplitWordsByRank(obsah řetězce, 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 ve slovech z WordInfo) { if (rank == slovo. Hodnost) { seznam. Přidat (slovo. Word); } } seznam návratů; }
/// <summary> Hlavní body /// </summary> <název parametru="klíčové slovo"> řetězec zvýraznit</param> <název parametru="obsah">obsah</param> <název parametru="fragmentSize"> počet znaků pro každé souhrnné pole</param> <returns>Zvýrazněný obsah</returns> public static string HighLight (klíčové slovo řetězce, obsah řetězce, int fragmentSize) { Vytvořte HTML kód s parametrem zvýrazňujícím vyhledávací termín SimpleHTMLFormatter simpleHTMLFormatter = nový SimpleHTMLFormatter("<font color='red'>", "</font>"); Vytvořte zvýrazňování, zadejte HTML kód a Pangu objekt Semgent Highlighter = nový Highlighter(simpleHTMLFormatter, nový Segment()); Nastavte počet znaků pro každé souhrnné pole vyšší. FragmentSize = fragmentSize; string highlightStr = highter. GetBestFragment (klíčové slovo, obsah);
pokud (řetězec. IsNullOrEmpty(highlightStr)) { vrátit obsah; } return highlightStr; }
}
}
|