Systemを使い、 System.Collections.Genericを使い、 System.Linqを使い、 System.Textを使い、 System.Threading.Tasksを使い、 PanGu.Dictを使い、 PanGu.Frameworkを使い、 PanGu.Matchを使い、 PanGu.Setting; PanGu.HighLight; Lucene.Net.Analysisを使い、 System.IO を用いる; 盤古(PanGu)を使い、 System.Configurationを使い、
名前空間 Pangu.Helper
{ パブリッククラスPanguHelper {
プライベートボラタイル静的PanguHelper _instance = null; プライベート静的読み取り専用オブジェクトlockHelper = new object(); private PanguHelper() { }
/// <summary> [デフォルトでは同じパス内でpangu.xmlプロファイルを使用します] /// </summary> /// <returns></returns> パブリックスタティック PanguHelper シェアヘルパー { 取得 { もし (_instance == null) { lock(lockHelper) { もし (_instance == null) { _instance = 新しいPanguHelper(); string configFile = ConfigurationManager.AppSettings["PANGU_CONFIG"] + ""; if(configFile != "") { _instance。 Use(configFile); } } } }
_instance返事; } }
/// <summary> 指定された構成ファイルを初期化します /// </summary> <param name="configFile"> pangu config file</param> public void Use(string configFile) { PanGu.Segment.Init(configFile); }
/// <summary> 品詞の説明を入手しましょう /// </summary> <param name="pos">品詞列挙</param> /// <returns></returns> public string GetPosDescrip{filter}t(POS pos) { スイッチ(POS) { 事件のクソ。 POS_UNK:「unknown of 品詞」を返す。 事件のクソ。 POS_D_K:「後遺成分」を返します。 事件のクソ。 POS_D_H:「前のコンポーネント」を返す; 事件のクソ。 POS_A_NZ:「他の固有名」を返す; 事件のクソ。 POS_A_NX:「外国語」を返す; 事件のクソ。 POS_A_NR:「person's name」を返す; 事件のクソ。 POS_D_Z:「status word」を返す; 事件のクソ。 POS_A_NT:「機関の体」を返す; 事件のクソ。 POS_A_NS:「地名」を返す; 事件のクソ。 POS_D_Y: 「ムードワード モード モフェーム」を返す; 事件のクソ。 POS_D_X:「非形態素語」を返す; 事件のクソ。 POS_D_W:「句読点」を返す; 事件のクソ。 POS_D_T:「時の言葉」を返す; 事件のクソ。 POS_D_S: 「place word」を返す; 事件のクソ。 POS_D_V: return 「動詞形態素」; 事件のクソ。 POS_D_U:「particle particle morpheme」を返します。 事件のクソ。 POS_D_R: 「代名詞 代名詞形態素」を返す; 事件のクソ。 POS_A_Q:「量化子、量化詞、形態素」を返す; 事件のクソ。 POS_D_P:「前置詞」を返す; 事件のクソ。 POS_D_MQ:「量化子」を返す; 事件のクソ。 POS_A_M: 「numeral, numeral, numeral」を返す; 事件のクソ。 POS_D_O:「擬音語」を返す; 事件のクソ。 POS_D_N:「名詞形態素」を返す; 事件のクソ。 POS_D_F:「方位語の方位素」を返す; 事件のクソ。 POS_D_E: return 「感嘆詞形態素」; 事件のクソ。 POS_D_L: return 「イディオム」; 事件のクソ。 POS_D_I: return 「イディオム」; 事件のクソ。 POS_D_D: 「副詞 副詞形態素」を返す; 事件のクソ。 POS_D_C: 「接続形素」を返す; 事件のクソ。 POS_D_B:戻る「単語を区別して形態素を区別する」; 事件のクソ。 POS_D_A: 「形容詞形態素」を返す; } 「不明品詞」を返す; }
/// <summary> 分詞を入手してください [Original Wordinfo] /// </summary> <param name="content"> 分離する単語の内容</param> <param name="matchOptions"> マッチングオプションを使</param>います <param name="matchParameter"> は match パラメータを使用します</param> /// <returns></returns> public ICollection<WordInfo> GetSegmentWords(文字列 content, MatchOptions matchOptions = null, MatchParameter matchParameter = null) { セグメント = 新しいセグメント(); ICollection<WordInfo> 単語=セグメント。 DoSegment(content, matchOptions, matchParameter); 単語を戻す; }
/// <summary> 分詞を入手してください /// </summary> <param name="content"> 分離する単語の内容</param> <param name="matchOptions"> Match optionsはデフォルトではなく使われます</param> <param name="matchParameter" > マッチングパラメータを使用しますが、デフォルトではありません</param> public List<string> GetSplitWords(文字列内容、MatchOptions matchOptions = null, MatchParameter matchParameter = null) { セグメント = 新しいセグメント(); ICollection<WordInfo> 単語=セグメント。 DoSegment(content, matchOptions, matchParameter); リスト<string>リスト=新しいリスト<string>(); foreach(単語情報の単語) { リスト。 Add(単語)。 言葉); } リターンリスト; }
/// <summary> 指定された語数の分詞を得る /// </summary> <param name="content"> 分離する単語の内容</param> <パラメータ名=「周波数」>単語頻度</param> <param name="matchOptions"> Match optionsはデフォルトではなく使われます</param> <param name="matchParameter" > マッチングパラメータを使用しますが、デフォルトではありません</param> /// <returns></returns> public List<string> GetSplitWordsByFrequency(文字列内容、倍頻度、MatchOptions matchOptions = null, MatchParameter matchParameter = null) { セグメント = 新しいセグメント(); ICollection<WordInfo> 単語=セグメント。 DoSegment(content, matchOptions, matchParameter);
リスト<string>リスト=新しいリスト<string>(); foreach(単語情報の単語) { もし(頻度 == 単語)。 周波数) { リスト。 Add(単語)。 言葉); } } リターンリスト; }
/// <summary> 指定された重みを持つ分詞を用意します /// </summary> <param name="content"> 分離する単語の内容</param> <param name="rank"> weight(重み</param>) <param name="matchOptions"> Match optionsはデフォルトではなく使われます</param> <param name="matchParameter" > マッチングパラメータを使用しますが、デフォルトではありません</param> /// <returns></returns> 公開リスト<string> GetSplitWordsByRank(文字列 content, int rank, MatchOptions matchOptions matchOptions = null, MatchParameter matchParameter = null) { セグメント = 新しいセグメント(); ICollection<WordInfo> 単語=セグメント。 DoSegment(content, matchOptions, matchParameter);
リスト<string>リスト=新しいリスト<string>(); foreach(単語情報の単語) { もし(ランク=単語)ならば。 階級) { リスト。 Add(単語)。 言葉); } } リターンリスト; }
/// <summary> ハイライト /// </summary> <param name="keyword"> ハイライトする文字列</param> <param name="content">content</param> <param name="fragmentSize"> 各要約フィールドの文字数</param> <returns>ハイライトコンテンツ</returns> 公開静的文字列HighLight(string keyword, string content, int fragmentSize) { 検索語を強調するパラメータを使ったHTMLコードを作成します SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>", "</font>"); ハイライトを作成し、HTMLコードを入力し、PanguオブジェクトSemgentを入力します Highlighter highter = new Highlighter(simpleHTMLFormatter, new Segment()); 各要約フィールドの文字数を設定します もっと高く。 FragmentSize = fragmentSize; string highlightStr=highter。 GetBestFragment(キーワード、コンテンツ);
もし(文字列)ならば。 IsNullOrEmpty(highlightStr)) { 内容を返す; } 返却 highlightStr; }
}
}
|