盘古分词的使用

下载地址: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

 

 

 

你可能感兴趣的:(使用)