博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
盘古分词,记灵一下
阅读量:4362 次
发布时间:2019-06-07

本文共 5588 字,大约阅读时间需要 18 分钟。

PanGu.dll 调用方法

初始化

在进程启动时,我们需要对盘古分词进行初始化,初始化的调用代码如下:

默认方式初始化

PanGu.Segment.Init();

 

这个调用将使用和 PanGu.dll 同路径下的 pangu.xml 配置文件 

 

指定配置文件方式初始化

 

PanGu.Segment.Init(filename);

filename 为pangu.xml 的完整路径名,如“c:\pangu.xml”

在某些应用中,pangu.xml 不一定在pangu.dll相同的路径下,或者无法获取pangu.dll的当前路径,这时需要通过这种方式调用来让调用者指定盘古分词所用的配置文件的绝对路径。

 

分词

 

Segment segment = new Segment();ICollection
words = segment.DoSegment(text);

 

ICollection
words = segment.DoSegment(text, options);

ICollection
words = segment.DoSegment(text, options, parameters);

 

其中

· text 为需要分词的文本
· options 为自定义分词选项,默认为pangu.xml 中指定的分词选项
· parameters 为分词参数,默认为pangu.xml 中指定的分词参数

分词选项定义:

 

public class MatchOptions{/// /// 中文人名识别/// public bool ChineseNameIdentify = false;/// /// 词频优先/// public bool FrequencyFirst = false;/// /// 多元分词/// public bool MultiDimensionality = true;/// /// 英文多元分词,这个开关,会将英文中的字母和数字分开。/// public bool EnglishMultiDimensionality = false;/// /// 过滤停用词/// public bool FilterStopWords = true;/// /// 忽略空格、回车、Tab/// public bool IgnoreSpace = true;/// /// 强制一元分词/// public bool ForceSingleWord = false;/// /// 繁体中文开关/// public bool TraditionalChineseEnabled = false;/// /// 同时输出简体和繁体/// public bool OutputSimplifiedTraditional = false;/// /// 未登录词识别/// public bool UnknownWordIdentify = true;/// /// 过滤英文,这个选项只有在过滤停用词选项生效时才有效/// public bool FilterEnglish = false;/// /// 过滤数字,这个选项只有在过滤停用词选项生效时才有效/// public bool FilterNumeric = false;/// /// 忽略英文大小写/// public bool IgnoreCapital = false;/// /// 英文分词/// public bool EnglishSegment = false;/// /// 同义词输出/// /// 
/// 同义词输出功能一般用于对搜索字符串的分词,不建议在索引时使用///
public bool SynonymOutput = false;/// /// 通配符匹配输出/// ///
/// 同义词输出功能一般用于对搜索字符串的分词,不建议在索引时使用///
public bool WildcardOutput = false;/// /// 对通配符匹配的结果分词/// public bool WildcardSegment = false;/// /// 是否进行用户自定义规则匹配/// public bool CustomRule = false;}

 

 

分词参数定义

[Serializable]public class MatchParameter{/// /// 多元分词冗余度/// public int Redundancy = 0;/// /// 未登录词权值/// public int UnknowRank = 1;/// /// 最匹配词权值/// public int BestRank = 5;/// /// 次匹配词权值/// public int SecRank = 3;/// /// 再次匹配词权值/// public int ThirdRank = 2;/// /// 强行输出的单字的权值/// public int SingleRank = 1;/// /// 数字的权值/// public int NumericRank = 1;/// /// 英文词汇权值/// public int EnglishRank = 5;/// /// 符号的权值/// public int SymbolRank = 1;/// /// 强制同时输出简繁汉字时,非原来文本的汉字输出权值。/// 比如原来文本是简体,这里就是输出的繁体字的权值,反之亦然。/// public int SimplifiedTraditionalRank = 1;/// /// 同义词权值/// public int SynonymRank = 1;/// /// 通配符匹配结果的权值/// public int WildcardRank = 1;/// /// 过滤英文选项生效时,过滤大于这个长度的英文。/// public int FilterEnglishLength = 0;/// /// 过滤数字选项生效时,过滤大于这个长度的数字。/// public int FilterNumericLength = 0;/// /// 用户自定义规则的配件文件名/// public string CustomRuleAssemblyFileName = "";/// /// 用户自定义规则的类的完整名,即带名字空间的名称/// public string CustomRuleFullClassName = "";}

 

返回为WordInfo 的集合

 

 

public class WordInfo : WordAttribute, IComparable
{///
/// 当前单词类型/// public WordType WordType;///
/// 原始的单词类型/// public WordType OriginalWordType;///
/// 单词在text 中的起始位置/// public int Position;///
/// Rank for this word/// 单词权重/// public int Rank;///
/// 单词/// public String Word;///
/// 词性/// public POS Pos;///
/// 词频/// public double Frequency;}

 

配置文件PanGu.xml

 

..\Dictionaries
true
false
false
true
true
false
false
false
true
false
false
false
false
false
false
false
false
1
5
3
2
1
1
5
3
2
1
1
1
1
0
0
CustomRuleExample.dll
CustomRuleExample.PickupNokia
0

 

 

其中DictionaryPath 指明字典所在目录,可以为相对路径也可以为绝对路径。

MatchOptions 对应分词选项
Parameters 对于分词参数

高亮组件PanGu.HighLight.dll 调用方法

//创建HTMLFormatter,参数为高亮单词的前后缀PanGu.HighLight.SimpleHTMLFormatter simpleHTMLFormatter =new PanGu.HighLight.SimpleHTMLFormatter("", "");//创建Highlighter ,输入HTMLFormatter 和盘古分词对象SemgentPanGu.HighLight.Highlighter highlighter =new PanGu.HighLight.Highlighter(simpleHTMLFormatter,new Segment());//设置每个摘要段的字符数highlighter.FragmentSize = 50;//获取最匹配的摘要段String abstract = highlighter.GetBestFragment(keywords, news.Content);

 

 

 

转载于:https://www.cnblogs.com/hantianwei/archive/2012/06/28/2567787.html

你可能感兴趣的文章
js的键盘事件监控回车,然后禁用当前input编辑,创建的input,但是如下代码只能监控到一次,第二次不能监控到。...
查看>>
【转帖】4412ARM开发板学习笔记(一)
查看>>
数据库中的事务控制语句
查看>>
课堂作业——找1
查看>>
Mac下安装与配置Go语言开发环境
查看>>
组件化网页开发 3步骤 / 20门课
查看>>
LeetCode 896. 单调数列(Monotonic Array)
查看>>
HDU 6318 - Swaps and Inversions [2018杭电多校联赛第二场 J](离散化+逆序对)
查看>>
千万级高性能长连接网关揭秘
查看>>
shell编程基础(5)---循环指令
查看>>
团队贡献分分配
查看>>
dumpsys, traceView调试命令
查看>>
Linux自己主动挂载第二块硬盘分区
查看>>
<html>
查看>>
Ajax请求设置csrf_token
查看>>
用VMware 8安装Ubuntu 12.04详细过程(图解)
查看>>
在浏览器输入网址,Enter之后发生的事情
查看>>
js和jquery修改背景颜色的区别
查看>>
使用AD画PCB的技能总结(纯属个人笔记,请大神多多指导)
查看>>
HDU 1232 畅通工程(最小生成树+并查集)
查看>>