下载地址:http://pangusegment.codeplex.com/
下载的为主程序,正常使用还需下载词库。
引用PanGu.dll,
初始化:
PanGu.Segment.Init();或
PanGu.Segment.Init(filename);
filename 为pangu.xml 的完整路径名,如 “c:\pangu.xml”
pangu.xml为盘古分词的默认配置文件,其中包含分词时的各种配置属性。
分词:
Segment segment = new Segment(); ICollection<WordInfo> words = segment.DoSegment(text); 或 ICollection<WordInfo> words = segment.DoSegment(text, options); 或 ICollection<WordInfo> words = segment.DoSegment(text, options, parameters);
text 为需要分词的文本
options 为自定义分词选项,默认为pangu.xml 中指定的分词选项
parameters 为分词参数,默认为pangu.xml 中指定的分词参数
words[i].word为分词的结果。
分词选项定义:
public class MatchOptions { /// <summary> /// 中文人名识别 /// </summary> public bool ChineseNameIdentify = false; /// <summary> /// 词频优先 /// </summary> public bool FrequencyFirst = false; /// <summary> /// 多元分词 /// </summary> public bool MultiDimensionality = true; /// <summary> /// 英文多元分词,这个开关,会将英文中的字母和数字分开。 /// </summary> public bool EnglishMultiDimensionality = false; /// <summary> /// 过滤停用词 /// </summary> public bool FilterStopWords = true; /// <summary> /// 忽略空格、回车、Tab /// </summary> public bool IgnoreSpace = true; /// <summary> /// 强制一元分词 /// </summary> public bool ForceSingleWord = false; /// <summary> /// 繁体中文开关 /// </summary> public bool TraditionalChineseEnabled = false; /// <summary> /// 同时输出简体和繁体 /// </summary> public bool OutputSimplifiedTraditional = false; /// <summary> /// 未登录词识别 /// </summary> public bool UnknownWordIdentify = true; /// <summary> /// 过滤英文,这个选项只有在过滤停用词选项生效时才有效 /// </summary> public bool FilterEnglish = false; /// <summary> /// 过滤数字,这个选项只有在过滤停用词选项生效时才有效 /// </summary> public bool FilterNumeric = false; /// <summary> /// 忽略英文大小写 /// </summary> public bool IgnoreCapital = false; /// <summary> /// 英文分词 /// </summary> public bool EnglishSegment = false; /// <summary> /// 同义词输出 /// </summary> /// <remarks> /// 同义词输出功能一般用于对搜索字符串的分词,不建议在索引时使用 /// </remarks> public bool SynonymOutput = false; /// <summary> /// 通配符匹配输出 /// </summary> /// <remarks> /// 同义词输出功能一般用于对搜索字符串的分词,不建议在索引时使用 /// </remarks> public bool WildcardOutput = false; /// <summary> /// 对通配符匹配的结果分词 /// </summary> public bool WildcardSegment = false; /// <summary> /// 是否进行用户自定义规则匹配 /// </summary> public bool CustomRule = false; }
分词参数定义:
[Serializable] public class MatchParameter { /// <summary> /// 多元分词冗余度 /// </summary> public int Redundancy = 0; /// <summary> /// 未登录词权值 /// </summary> public int UnknowRank = 1; /// <summary> /// 最匹配词权值 /// </summary> public int BestRank = 5; /// <summary> /// 次匹配词权值 /// </summary> public int SecRank = 3; /// <summary> /// 再次匹配词权值 /// </summary> public int ThirdRank = 2; /// <summary> /// 强行输出的单字的权值 /// </summary> public int SingleRank = 1; /// <summary> /// 数字的权值 /// </summary> public int NumericRank = 1; /// <summary> /// 英文词汇权值 /// </summary> public int EnglishRank = 5; /// <summary> /// 符号的权值 /// </summary> public int SymbolRank = 1; /// <summary> /// 强制同时输出简繁汉字时,非原来文本的汉字输出权值。 /// 比如原来文本是简体,这里就是输出的繁体字的权值,反之亦然。 /// </summary> public int SimplifiedTraditionalRank = 1; /// <summary> /// 同义词权值 /// </summary> public int SynonymRank = 1; /// <summary> /// 通配符匹配结果的权值 /// </summary> public int WildcardRank = 1; /// <summary> /// 过滤英文选项生效时,过滤大于这个长度的英文。 /// </summary> public int FilterEnglishLength = 0; /// <summary> /// 过滤数字选项生效时,过滤大于这个长度的数字。 /// </summary> public int FilterNumericLength = 0; /// <summary> /// 用户自定义规则的配件文件名 /// </summary> public string CustomRuleAssemblyFileName = ""; /// <summary> /// 用户自定义规则的类的完整名,即带名字空间的名称 /// </summary> public string CustomRuleFullClassName = ""; }
返回的WordInfo:
public class WordInfo : WordAttribute, IComparable<WordInfo> { /// <summary> /// 当前单词类型 /// </summary> public WordType WordType; /// <summary> /// 原始的单词类型 /// </summary> public WordType OriginalWordType; /// <summary> /// 单词在text 中的起始位置 /// </summary> public int Position; /// <summary> /// Rank for this word /// 单词权重 /// </summary> public int Rank; /// <summary> /// 单词 /// </summary> public String Word; /// <summary> /// 词性 /// </summary> public POS Pos; /// <summary> /// 词频 /// </summary> public double Frequency; }
配置文件pangu.xml中,
其中DictionaryPath 指明字典所在目录,可以为相对路径也可以为绝对路径;
MatchOptions 对应分词选项;
Parameters 对于分词参数。
具体请见文档:http://files.cnblogs.com/dc-lancer/%E7%9B%98%E5%8F%A4%E5%88%86%E8%AF%8DAPI.rar