热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于最大匹配算法的简易分词程序设计与实现

本文介绍了一种基于最大匹配算法的简易分词程序的设计与实现。该程序通过引入哈希集合存储词典,利用前向最大匹配方法对输入文本进行高效分词处理,具有较高的准确率和较快的处理速度,适用于中文文本的快速分词需求。
import java.io.*;
import java.util.HashSet;
import java.util.Set;
public class Test {
 public static Set set;
 public static void readTxt(String filename)
 {
  File f = new File(filename);  
  
  
  try{
   //System.out.println("TRY---BEGIN");
   InputStreamReader read = new InputStreamReader(new FileInputStream(f), "GBK");
   BufferedReader bufferedReader = new BufferedReader(read);
   String line = null;
   int nLine = 0;
   while( (line = bufferedReader.readLine()) != null)
   {
    //System.out.println(line);
    String strArr[] = line.split(" ");
    for(int i = 0; i )
    {
     set.add(strArr[i]);
    // System.out.println(strArr[i]);
    }
    
    if(nLine++ > 3000000)
    {
     break;
    }
   }
   //System.out.println("test");
  }
  catch(Exception e)
  {
   System.out.println("exception");
  }
  //
 }
 
 public static void WriteSetData(String savepath)
 {  
 }
 
 public static void ReadSetData(String savepath)
 {  
 }
 
 public static void test_(String strtest)
 {
  int arr[] = new int[strtest.length()];
  int index = 0;
  for(int i = 0; i )
  {
   String word = "";
   word  += strtest.charAt(i);
   String tmp = word;
   int j = 1;
   boolean flag = false;
   int flagIndex = 0;
   for(; j <4 && i + j )
   {
    tmp += strtest.charAt(i + j);
    if(set.contains(tmp))
    {
     flag = true;
     flagIndex = j;
     //break;     
    }
   }
   
   if(flag)
   {
    //find 
    arr[index] = i + flagIndex;
    //System.out.print(arr[index]);
    System.out.print(strtest.substring(i, arr[index] + 1));
    System.out.print("/");
    index++;
    
    i = i + flagIndex;
   }
   else 
   {
    arr[index] = i;
    //System.out.print(arr[index]);
    System.out.print(strtest.substring(i, arr[index] + 1));
    System.out.print("/");
    index++;
   }
   
  }
  System.out.println();
 }
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String filename = "C:\\mltest6\\RenMinData.txt";
  
  set = new HashSet(); 
  readTxt(filename);
  
  System.out.println("开始----------------------------------------");
  //String strtest = "中共中央政治局委员、中央党的群众路线教育实践活动领导小组副组长赵乐际23日在云南玉溪调研教育实践活动开展情况。他强调,要深入学习贯彻习总书记在指导兰考县委常委班子专题民主生活会时的重要讲话精神,落实“三严三实”要求,严肃认真开展批评和自我批评,切实解决“四风”突出问题,确保教育实践活动取得人民群众满意的成效。";
  String strtest;
  strtest = "赵乐际在红塔区黄草坝村召开基层党员干部座谈会。他指出,要以习总书记和中央政治局常委其他同志联系点专题民主生活会为标杆,坚持高标准、严要求,把专题民主生活会开出好氛围、好效果。听意见要深入基层、深入群众,对照检查要触及思想、触及灵魂,谈心交心要掏心窝子、动真感情,开展批评要真刀真枪、一针见血,真正红红脸、出出汗、排排毒。整改问题要动真格、见实效,即知即改、立行立改、专项整改。要坚持两手抓、两促进,把开展活动与推动中心工作、重点工作有机结合起来,树立正确用人导向,提高党员、干部素质和能力,以转作风的实际成效,使经济社会发展得更好,让老百姓日子越过越红火。赵乐际还深入工业园区和乡村实地调研,走访慰问了生活困难党员群众,听取他们的意见建议。";
  test_(strtest);
  
 }
}

 


推荐阅读
  • 数据压缩与编解码技术优化
    编码的种类  编码(Encoding)在认知上是解释传入的刺激的一种基本知觉的过程。技术上来说,这是一个复杂的、多阶段的转换过程,从较为客观的感觉输入& ... [详细]
  • 本文通过复旦大学自然语言处理课程中的一个具体案例,详细解析了中文词汇分割技术的实现方法。该案例利用Java编程语言,结合词典和算法模型,展示了如何高效地进行中文文本的词汇分割,为相关研究和应用提供了宝贵的参考。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 第五周教学内容回顾与实验成果分析报告
    在第五周的教学内容回顾与实验成果分析报告中,我们重点探讨了String类的应用。实验旨在使学生熟练掌握String类的各种操作方法,并学会利用JDK帮助文档解决实际问题。具体实验内容包括对给定字符串“thisisatestof”进行多种操作,如字符串分割、拼接、查找子字符串等,以加深对String类功能的理解和应用。通过本次实验,学生们不仅巩固了理论知识,还提升了实际编程能力。 ... [详细]
  • 字符串对比竟也暗藏玄机,你是否认同?
    在探讨字符串对比技术时,本文通过两个具体案例深入剖析了其背后的复杂性与技巧。首先,案例一部分详细介绍了需求背景、分析过程及两种不同的代码实现方法,并进行了总结。接着,案例二同样从需求描述出发,逐步解析问题并提供解决方案,旨在揭示字符串处理中容易被忽视的关键细节和技术挑战。 ... [详细]
  • Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • Java新手求助:如何优雅地向心仪女生索要QQ联系方式(附代码示例与技巧)
    在端午节后的闲暇时光中,我无意间在技术社区里发现了一篇关于如何巧妙地向心仪女生索取QQ联系方式的文章,顿时感到精神焕发。这篇文章详细介绍了源自《啊哈!算法》的方法,不仅图文并茂,还提供了实用的代码示例和技巧,非常适合 Java 新手学习和参考。 ... [详细]
  • Java 8 引入了 Stream API,这一新特性极大地增强了集合数据的处理能力。通过 Stream API,开发者可以更加高效、简洁地进行集合数据的遍历、过滤和转换操作。本文将详细解析 Stream API 的核心概念和常见用法,帮助读者更好地理解和应用这一强大的工具。 ... [详细]
  • 本文介绍了一种专为清洁工人设计的自定义文本烟花效果。通过该功能,用户可以输入特定的感谢或祝福语句,系统将生成绚丽的烟花动画,以表达对清洁工人的敬意和感激之情。该特效不仅美观,还能增强用户的互动体验,提升公共场合的氛围。 ... [详细]
  • Spring框架下发送嵌入图片邮件时遇到的技术挑战与解决方案
    在Spring框架中发送嵌入图片的HTML格式邮件时,常遇到技术挑战。一种有效的解决方案是在邮件内容中直接使用``标签来引用图片。此外,还可以通过MimeMessageHelper类的addInline方法将图片作为内联资源添加到邮件中,确保图片能够正确显示。这种方法不仅提高了邮件的可读性,还增强了用户体验。 ... [详细]
author-avatar
hero-laiquwuz_82914c
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有