当前位置: 首页 > news >正文

飞行时代网站建设免费源码资源站

飞行时代网站建设,免费源码资源站,c 网站开发框架,长沙百家号seo本文实例讲述了java实现的最大匹配分词算法。分享给大家供大家参考#xff0c;具体如下#xff1a;全文检索有两个重要的过程#xff1a;1分词2倒排索引我们先看分词算法目前对中文分词有两个方向#xff0c;其中一个是利用概率的思想对文章分词。 也就是如果两个字#x…本文实例讲述了java实现的最大匹配分词算法。分享给大家供大家参考具体如下全文检索有两个重要的过程1分词2倒排索引我们先看分词算法目前对中文分词有两个方向其中一个是利用概率的思想对文章分词。 也就是如果两个字一起出现的频率很高的话我们可以假设这两个字是一个词。这里可以用一个公式衡量m(a,b)p(ab)/p(a)p(b)其中 a表示一个字b表示一个字p(ab)表示ab相邻出现的概率p(a)表示a在这篇文章中的频度p(b)表示b在这篇文章中的频度。用概率分词的好 处是不需要借助词典的帮助坏处是算法比较麻烦效率不高也存在一定的出错率。另外的一个方向是使用词典分词。就是事先为程序准备一个词典然后通过这个词典对文章分词。目前较流行的方式有正向最大匹配算法和逆向最大匹配算法。逆向最大匹配算法在准确性上要更好一些。以 “我是一个坏人” 为例并最大词长为词库包含有 我、是、一、个、一个、坏人、大坏人正向的顺序为我是一我是我 得到一个词是一个是一是 得到一个词一个坏一个 得到一个词坏人得到一个词结果 我、是、一个、坏人反向算法个坏人坏人 坏人是一个一个 一个我是是 是我 我结果 我、是、一个、坏人java代码如下package data;import java.util.arrays;import java.util.hashset;import java.util.set;/*** 最大匹配分词算法** author jyc506**/public class splitstring {private set set new hashset();private int positiveover 0;private int reverseover 0;/*** 正向最大匹配** param str 要分词的句子* param num 词的最大长度* return*/public string[] positivesplit(string str, int maxsize) {int tem 0;int length str.length();string[] ss new string[length];char[] cc str.tochararray();for (int i 0; i length; i) {positiveover 0;string sb this.tostr(cc, i, maxsize);ss[tem] sb;i i positiveover;}string[] ss2 new string[tem];system.arraycopy(ss, 0, ss2, 0, tem);return ss2;}/*** 添加词库** param words*/public void addword(string[] words) {for (string st : words) {this.set.add(st);}}/*** 逆向最大匹配** param str* param num* return*/public string[] reversesplit(string str, int num) {int tem 0;int length str.length();string[] ss new string[length];char[] cc str.tochararray();for (int i str.length() - 1; i -1; i--) {reverseover 0;string sb this.tostr2(cc, i, num);tem;ss[--length] sb;i i - reverseover;}string[] ss2 new string[tem];system.arraycopy(ss, str.length() - tem, ss2, 0, tem);return ss2;}private string tostr(char[] cs, int start, int num) {int num2 num;out: for (int j 0; j num; j) {stringbuffer sb new stringbuffer();for (int i 0; i num2; i) {if (start i cs.length) {sb.append(cs[start i]);} else {num2--;j--;continue out;}}if (set.contains(sb.tostring())) {positiveover num2 - 1;return sb.tostring();}num2--;}return string.valueof(cs[start]);}private string tostr2(char[] cs, int start, int num) {int num2 num;for (int j 0; j num; j) {stringbuffer sb new stringbuffer();for (int i 0; i num2; i) {int index start - num2 i 1;if (index -1) {sb.append(cs[index]);} else {num2--;}}if (set.contains(sb.tostring())) {reverseover num2 - 1;return sb.tostring();}num2--;}return string.valueof(cs[start]);}public static void main(string[] args) {string[] words new string[] { 我们, 我们五人, 五人一组, 一组 };splitstring ss new splitstring();/*添加词到词库*/ss.addword(words);string st 我们五人一组;system.out.println(萬仟网测试结果);system.out.println(要分词的句子 st);/*使用两种方式分词下面我指定最大词长度为4*/string[] ss2 ss.reversesplit(st, 4);string[] ss1 ss.positivesplit(st, 4);system.out.println(正向最大匹配分词算法分词结果 arrays.tostring(ss1));system.out.println(逆向最大匹配分词算法分词结果 arrays.tostring(ss2));}}希望本文所述对大家java程序设计有所帮助。希望与广大网友互动点此进行留言吧
http://wiki.neutronadmin.com/news/288631/

相关文章:

  • 免费如何创建网站平台创网址
  • 网站建设行业动态网站推广策略和效果评价
  • 深圳手机端网站建设收费二室一厅60平米装修案例
  • 洞口网站开发公司推荐房地产集团网站建设
  • 网站怎么做支付宝接口网站维护服务合同
  • 广告网站留电话整人网站建设费用5万入账
  • 中国建设银行网站特色wordpress教程文档
  • 基于ssh框架的网站开发流程做手机版网站和做app差别
  • 关注网站制作河北保定网站建设
  • 做网站哪个地方需要钱海安建设局网站
  • 营销型网站规划建设的七大要素淄博手机网站建设
  • 北京网站建设策划解决方案防疫大数据平台
  • 源码可以做网站吗建筑设计网站issuu
  • 昆山网站建设推广斗鱼网站开发是用什么语言
  • 怎样搭建属于自己的网站如何查看网站的外链
  • 怎么做一个公司网站济南建设工程交易网官网
  • vs做的网站如何做微信商城设计网站
  • 泰安创意网络公司北京度seo排名
  • 论文网站建设与运营合肥制作小程序
  • 怎么做跳转不影响原网站排名图们市建设局网站
  • 火币网站怎么做空前端网页设计招聘
  • 广汉网站分销系统平台有哪些
  • 淘宝客推广网站建设建筑公司logo设计大全
  • 广西建设厅网站地址室内设计培训学费多少
  • 大型网站开发的书网站开发招聘职位
  • ps怎么做网站的广告条改革开放40周年网站发展建设
  • 安平网站建设莱芜高新区
  • 怎么创网站赚钱吗建设银行个人
  • 番禺大石做网站陕西交通建设集团网站
  • 照片做视频的软件 模板下载网站漳州网站建设多少钱