为了账号安全,请及时绑定邮箱和手机立即绑定

智能联动

标签:
Java 算法 数学

今天接到一个需求,大致意思是做一个联动归口,先选择一级归口,根据一级归口选择二级归口。。。要实现,点击智能归口,能根据一段话,来自动生成各级归口;
实现(使用技术):solr,jieba,TextRank,TF-IDF
第一:首先使用solr创建关键词,把归口信息跟关键词放到solr服务器,其中solr分词使用ik;在添加域中,可以使用把一个多个变量配置到另外一个变量中,在solr服务managed-schema此页面中配置


这个配置了businessTypeChildName加入到keyWords中,如果有多个可以依次配置;
这种在查询时,就可以设置权重:
String queryWord = getQueryWord(getAnalysis(contentText));
SolrQuery query=new SolrQuery(queryWord);
query.set(“q”,queryWord);
query.set(“df”, “keyWords”);
query.set(“qf”,“businessTypeFiveName^1 businessTypeFourName^0.6 businessTypeGrandsonName^0.5 businessTypeChildName^0.4 keyWords^0.5”);slor 会根据权重返回查询结果;
这样只能归口就做好了,但是现在又有新的需求了,归口数据是固定的,但是solr存放的表中的数据你去用实现以下?
第二:给我的数据源,归口数据(一级二级三级归口),还有一个工单数据(标题,内容,归口一二三四五级),我要创建一个供solr使用的表(一二三四五级归口数据,keyWords(用户查询时的关键字,用来匹配归口,注册到solr中))
开始干活,呵呵 ,这怎么做?
1.我第一件事,要把内容(一段很长的话分割成一个一个词语),然后就找到jieba,jieba可以自己找找看,这里简单说下我的实现方式,我先用textrank提取关键词,
List contentTextkey= new TextRankKeyword().getKeyword(contentText);这样就把关键字提取出来了,textrank的具体做法就是矩阵方式,如果有ABCD,A跟B有关系,A跟C有关系,A跟D有关系,则A是最关键的那个;
关键词取出来了,但是还是个别不符合情况的词语,对处理后的词汇又调用了https://yq.aliyun.com/articles/602964这个,计算出权重,然后根据权重,进一步过滤;
这样基本就实现了智能归口;

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消