背景:
用户将自己的诉求,通过文字形式,或者语音形式进行描述,描述后,希望系统自动检测出该系统已经存在的 功能,并且对功能进行分组处理,自动展示到前端页面;
例如: 用户提出订单管理系统诉求
描述:
订单管理系统
目的
目的:
将上文中的专业词语,根据分词,和自定义的词性匹配出来。
例子代码
public class CSNDDemoSegment
{
public static void main(String[] args) throws InterruptedException {
String sentence = "订单管理系统的内容如下, 商品系统:在提交订单页面会看到该订单所包含的商品信息,商品系统:在提交订单页面会看到该订单所包含的商品信息,例如商品名称、所购买数量、价格、售后信息等营销系统:会显示商品是否优惠信息,例如满减、优惠券;会员系统:会显示该会员是否有基于会员等级的折扣信息(如淘宝的88会员),或是否有可抵扣扣金额的会员点数(如京豆);会显示该会员下面的收货地址信息、也会显示该会员下面是否有充值卡、运费券等。;仓库系统:基于收货地址信息显示发货仓库,;自提地点等,并且订单最终会流转到该系统进行发货操作。支付系统:显示支付方式(如货到付款、在线支付等)、并且在支付的时候计算该会员实际应付的金额,以及显示银行卡信息等。物流系统:显示配送时间、配送方式、运费等并且在订单发货后会显示实际的配送路径;财务系统:显示开票信息等,在订单完成后会生成发票。;内容系统:显示订单留言等";
Segment segment = HanLP.newSegment();
segment.enableCustomDictionaryForcing(true);
List<Term> termList =segment.seg(sentence);
System.out.println(termList);
}
}
默认词典分词结果
[商品/domain, 系统/n, :/w, 在/p, 提交/v, 订单/domain, 页/q, 面会/n, 看到/v, 该/rz, 订单/domain, 所/usuo, 包含/v, 的/ude1, 商品信息/nz, ,/w, 商品/domain, 系统/n, :/w, 在/p, 提交/v, 订单/domain, 页/q, 面会/n, 看到/v, 该/rz, 订单/domain, 所/usuo, 包含/v, 的/ude1, 商品信息/nz, ,/w, 例如/v, 商品名称/attribute, 、/w, 所/usuo, 购买/v, 数量/n, 、/w, 价格/n, 、/w, 售后/vi, 信息/n, 等/udeng, 营销/vn, 系统/n, :/w, 会/v, 显示/v, 商品/domain, 是否/v, 优惠/vn, 信息/n, ,/w, 例如/v, 满/a, 减/v, 、/w, 优惠券/n, ;/w, 会员/nnt, 系统/n, :/w, 会/v, 显示/v, 该/rz, 会员/nnt, 是否/v, 有/vyou, 基于/p, 会员/nnt, 等级/n, 的/ude1, 折扣/n, 信息/n, (/w, 如/v, 淘宝/n, 的/ude1, 88/m, 会员/nnt, )/w, ,/w, 或/c, 是否/v, 有/vyou, 可/v, 抵/v, 扣扣/nz, 金额/n, 的/ude1, 会员/nnt, 点数/n, (/w, 如/v, 京豆/nr, )/w, ;/w, 会/v, 显示/v, 该/rz, 会员/nnt, 下面/f, 的/ude1, 收货/vn, 地址/n, 信息/n, 、/w, 也/d, 会/v, 显示/v, 该/rz, 会员/nnt, 下面/f, 是否/v, 有/vyou, 充值卡/nz, 、/w, 运费/n, 券/ng, 等/udeng, 。/w, ;/w, 仓库/n, 系统/n, :/w, 基于/p, 收货/vn, 地址/n, 信息/n, 显示/v, 发货/vi, 仓库/n, ,/w, ;/w, 自提/nz, 地点/n, 等/udeng, ,/w, 并且/c, 订单/domain, 最终/d, 会/v, 流/v, 转到/v, 该/rz, 系统/n, 进行/vn, 发货/vi, 操作/vn, 。/w, 支付/v, 系统/n, :/w, 显示/v, 支付/v, 方式/n, (/w, 如/v, 货到付款/nz, 、/w, 在线/vn, 支付/v, 等/udeng, )/w, 、/w, 并且/c, 在/p, 支付/v, 的/ude1, 时候/n, 计算/v, 该/rz, 会员/nnt, 实际/n, 应付/v, 的/ude1, 金额/n, ,/w, 以及/cc, 显示/v, 银行卡/nz, 信息/n, 等/udeng, 。/w, 物流/n, 系统/n, :/w, 显示/v, 配送/vn, 时间/n, 、/w, 配送/vn, 方式/n, 、/w, 运费/n, 等/udeng, 并且/c, 在/p, 订单/domain, 发货/vi, 后会/n, 显示/v, 实际/n, 的/ude1, 配送/vn, 路径/n, ;/w, 财务/n, 系统/n, :/w, 显示/v, 开票/vi, 信息/n, 等/udeng, ,/w, 在/p, 订单/domain, 完成/v, 后会/n, 生成/v, 发票/n, 。/w, ;/w, 内容/n, 系统/n, :/w, 显示/v, 订单/domain, 留言/n, 等/udeng]
词典配置:
#本配置文件中的路径的根目录,根目录+其他路径=完整路径(支持相对路径,请参考:https://github.com/hankcs/HanLP/pull/254)
#Windows用户请注意,路径分隔符统一使用/
root=D:/gaohaicheng-gitee/hanLP1.X/HanLP
#好了,以上为唯一需要修改的部分,以下配置项按需反注释编辑。
#核心词典路径
#CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt
#2元语法词典路径
#BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt
#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。
#所有词典统一使用UTF-8编码,每一行代表一个单词,格式遵从[单词] [词性A] [A的频次] [词性B] [B的频次] ... 如果不填词性则表示采用词典的默认词性。
CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; CSDNCustomeDictionary.txt
#停用词词典路径
#CoreStopWordDictionaryPath=data/dictionary/stopwords.txt
#同义词词典路径
#CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt
#人名词典路径
#PersonDictionaryPath=data/dictionary/person/nr.txt
#人名词典转移矩阵路径
#PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt
#繁简词典根目录
#tcDictionaryRoot=data/dictionary/tc
#HMM分词模型
#HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin
#分词结果是否展示词性
#ShowTermNature=true
#IO适配器,实现com.hankcs.hanlp.corpus.io.IIOAdapter接口以在不同的平台(Hadoop、Redis等)上运行HanLP
#默认的IO适配器如下,该适配器是基于普通文件系统的。
#IOAdapter=com.hankcs.hanlp.corpus.io.FileIOAdapter
#感知机词法分析器
#PerceptronCWSModelPath=data/model/perceptron/pku1998/cws.bin
#PerceptronPOSModelPath=data/model/perceptron/pku1998/pos.bin
#PerceptronNERModelPath=data/model/perceptron/pku1998/ner.bin
#CRF词法分析器
#CRFCWSModelPath=data/model/crf/pku199801/cws.txt
#CRFPOSModelPath=data/model/crf/pku199801/pos.txt
#CRFNERModelPath=data/model/crf/pku199801/ner.txt
#更多配置项请参考 https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/HanLP.java#L59 自行添加
在上述配置文件中配置自定义词典: CSDNCustomeDictionary.txt
格式遵从[单词] [词性A] [A的频次] [词性B] [B的频次] ... 如果不填词性则表示采用词典的默认词性。
订单管理系统 customWord-os 1
购物车 customWord-1 1
商品系统 customWord-1 1
营销系统 customWord-1 1
会员系统 customWord-1 1
仓库系统 customWord-1 1
支付系统 customWord-1 1
物流系统 customWord-1 1
财务系统 customWord-1 1
内容系统 customWord-1 1
自定义词典分词结果
加载好自定义词典后,然后再次运行,看分词效果:
[订单管理系统/customWord-os, 的/ude1, 内容/n, 如下/vi, ,/w, /w, 商品系统/customWord-1, :/w, 在/p, 提交/v, 订单/n, 页/q, 面会/n, 看到/v, 该/rz, 订单/n, 所/usuo, 包含/v, 的/ude1, 商品信息/nz, ,/w, 商品系统/customWord-1, :/w, 在/p, 提交/v, 订单/n, 页/q, 面会/n, 看到/v, 该/rz, 订单/n, 所/usuo, 包含/v, 的/ude1, 商品信息/nz, ,/w, 例如/v, 商品/n, 名称/n, 、/w, 所/usuo, 购买/v, 数量/n, 、/w, 价格/n, 、/w, 售后/vi, 信息/n, 等/udeng, 营销系统/customWord-1, :/w, 会/v, 显示/v, 商品/n, 是否/v, 优惠/vn, 信息/n, ,/w, 例如/v, 满/a, 减/v, 、/w, 优惠券/n, ;/w, 会员系统/customWord-1, :/w, 会/v, 显示/v, 该/rz, 会员/nnt, 是否/v, 有/vyou, 基于/p, 会员/nnt, 等级/n, 的/ude1, 折扣/n, 信息/n, (/w, 如/v, 淘宝/n, 的/ude1, 88/m, 会员/nnt, )/w, ,/w, 或/c, 是否/v, 有/vyou, 可/v, 抵/v, 扣扣/nz, 金额/n, 的/ude1, 会员/nnt, 点数/n, (/w, 如/v, 京豆/nr, )/w, ;/w, 会/v, 显示/v, 该/rz, 会员/nnt, 下面/f, 的/ude1, 收货/vn, 地址/n, 信息/n, 、/w, 也/d, 会/v, 显示/v, 该/rz, 会员/nnt, 下面/f, 是否/v, 有/vyou, 充值卡/nz, 、/w, 运费/n, 券/ng, 等/udeng, 。/w, ;/w, 仓库系统/customWord-1, :/w, 基于/p, 收货/vn, 地址/n, 信息/n, 显示/v, 发货/vi, 仓库/n, ,/w, ;/w, 自提/nz, 地点/n, 等/udeng, ,/w, 并且/c, 订单/n, 最终/d, 会/v, 流/v, 转到/v, 该/rz, 系统/n, 进行/vn, 发货/vi, 操作/vn, 。/w, 支付系统/customWord-1, :/w, 显示/v, 支付/v, 方式/n, (/w, 如/v, 货到付款/nz, 、/w, 在线/vn, 支付/v, 等/udeng, )/w, 、/w, 并且/c, 在/p, 支付/v, 的/ude1, 时候/n, 计算/v, 该/rz, 会员/nnt, 实际/n, 应付/v, 的/ude1, 金额/n, ,/w, 以及/cc, 显示/v, 银行卡/nz, 信息/n, 等/udeng, 。/w, 物流系统/customWord-1, :/w, 显示/v, 配送/vn, 时间/n, 、/w, 配送/vn, 方式/n, 、/w, 运费/n, 等/udeng, 并且/c, 在/p, 订单/n, 发货/vi, 后会/n, 显示/v, 实际/n, 的/ude1, 配送/vn, 路径/n, ;/w, 财务系统/customWord-1, :/w, 显示/v, 开票/vi, 信息/n, 等/udeng, ,/w, 在/p, 订单/n, 完成/v, 后会/n, 生成/v, 发票/n, 。/w, ;/w, 内容系统/customWord-1, :/w, 显示/v, 订单/n, 留言/n, 等/udeng]
这样自定义词典便生效了。
可以根据自己的业务需要做一定的定义,进行分词使用;