岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 核心技术 >> 高级编程 >> Java正文
搜索引擎之中文分词实现(java版)
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 17:01:40

前几天读到google研究员吴军的数学之美系列篇,颇有感触。而恰好自己前段时间做了个基于统计语言模型的中文切分系统的课程项目,于是乎,帖出来与大家共同学习。

分词技术在搜索引擎,信息提取,机器翻译等领域的重要地位与应用就不敖述了。步入正题:)

 一、  项目概述

本切分系统的统计语料是用我们学校自己开放的那部分,大家可以在 这里 下载,中文字符约184万,当然这都是已切分好了的,可以用此建立一个比较小的语料库。本系统我主要分下面四个步骤完成:

1、  语料预处理

2、  建立 2-gram(统计二元模型)

3、  实现全切分

4、  评估测试

下面我分别对这四个方面一一道来。

 1、  语料预处理

  下载的已切分的语料都是形如“19980131-04-012-001/m  现实/n  的/u  顿悟/vn  却/d  被/p  描/v  出/v  形/Ng  来/v  。/w ” ,有的前面还保留了日期编号,因为这些切分语料的来源是人民日报。预处理主要是按标点符号分句,句子简单定义为( 。?! : ;)这五种标点符号结尾的词串,句子首尾分别添加<BOS>和<EOS>这两个表示句子开始和结束的标记,这在2-gram建模时要用的,后面会提到。处理过程中,忽略词类信息和前面的日期信息,因为我这个切分系统不考虑词类标注。如前面这句预处理后应该为下面形式 “<BOS>现实 的 顿悟 却 被 描 出 形 来 。<EOS>” ,当然切分词之间你可以用你想用的符号标记,而不必是空格。因为考虑到所有的英文字符和数字的ASCII,我用了下面方法实现之:

     out ; //输出流      

in;  //输入流

StringBuffer s1 = new StringBuffer();     //缓冲

char a = in.read();

while (a != -1)             //判断是否已到流的终点

{                 

      if ((a == '。' || a == '?' || a == '!' || a == ':' || a == ';' ))  //一句结束

{            

             String s2 = new String(s1);

             out.write("<BOS>");                //在句子前加 <BOS>

             out.write(s2);

             out.write("<EOS>");  

[1] [2] [3] [4] [5] [6] [7] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    传世私服 传奇世界私服 天龙八部私服 bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365