import java.io.EOFException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;/** 文件格式:已分词的文本,词语之间用空格,换行等空白符分割。* 到了文件末尾就结束* 适合读取一行很大的文本,因为这里的缓冲不是一行,而是若干个词语(比一行少)。* 代码实现方式:每次读若干个词语作为一个句子,逐个字节读,以空白符区分词语的开始和结束。* */
public class WordReader
{RandomAccessFile raf = null;ArrayList<String> sentence = null;int senSize = 1000;int senPos =0 ;public WordReader(String fileName) throws IOException{File file=new File(fileName);   raf = new RandomAccessFile(file,"r") ; sentence = new ArrayList<String>();}public String[] getNextWords(int count) throws IOException{if(senPos+count >= sentence.size())//到了段落末尾,读取新的段落{if(readSentence())return getNextWords(count);else return null;}String[] words = new String[count];for(int i=0;i<count;i++){words[i] = sentence.get(senPos+i);}senPos++;return words;}private boolean readSentence(){try{sentence.clear();for(int i=0;i<senSize;i++){//System.out.println(i);int len = 0;while(true){int b = raf.read();if(b == -1) return false;if(b == ' ' || b == '\n'|| b == '\r'|| b=='\t'){break;}len++;}raf.seek(raf.getFilePointer() -len-1);byte[] buffer = new byte[len];raf.read(buffer, 0, len);//byte[] sub = new byte[len];//for(int k=0;k<len;k++) sub[k] = buffer[k];String word = new String(buffer,"utf-8");//这里有坑,不会根据结束符0截断字符串,必须手动处理//System.out.println(word);sentence.add(word);while(true){int b = raf.read();if(b == -1) return false;if(b == ' ' || b == '\n' || b == '\r' || b=='\t'){continue;}else break;}raf.seek(raf.getFilePointer() -1);}  senPos = 0;return true;}catch(EOFException ex){ex.printStackTrace();return false;}catch(IOException ex){ex.printStackTrace();return false;}}public static void main(String[] args) throws IOException {// TODO Auto-generated method stub//WordReader wr = new WordReader("/home/linger/sources/ParaModel/electronic_seg.txt");WordReader wr = new WordReader("/home/linger/sources/resultbig.txt");wr.readSentence();//System.out.println("-------------------------");//wr.readSentence();//int i=0;//while(true)//614005行//{//String[] words = wr.getNextWords(5);//if(words == null) break;//System.out.println(i++);//System.out.println(words.length);//System.out.printf("%s,%s,%s,%s,%s \n",words[0],words[1],words[2],words[3],words[4]);//}}}

本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/38337483

java读取中文分词工具(三)相关推荐

  1. 基于java的中文分词工具ANSJ

    ANSJ 这是一个基于n-Gram+CRF+HMM的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. 中文姓名识别 ...

  2. 中文分词工具 java_java读取中文分词工具(一)

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  3. Java实现敏感词过滤 - IKAnalyzer中文分词工具

    IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包. 官网: https://code.google.com/archive/p/ik-analyzer/ 本用例借助 I ...

  4. 常用的开源中文分词工具

    转载自:  http://www.scholat.com/vpost.html?pid=4477 常用的开源中文分词工具 由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及 ...

  5. 11大Java开源中文分词器的使用方法和分词效果对比,当前几个主要的Lucene中文分词器的比较...

    本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...

  6. jieba库 python2.7 安装_Python中文分词工具大合集:安装、使用和测试

    这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AI ...

  7. 零基础入门NLP之搭建中文分词工具

    1 文本分析的基本过程 分词就是中学学的断句: 举个例子来说明:假设我们输入一句话:北京欢迎你.则有可能的断句为: 北,京,欢,迎,你 北京,欢,迎,你 北京,欢迎,你  等等如果没有语料库的话就是这 ...

  8. Java分布式中文分词组件 - word分词

    Java分布式中文分词组件 - word分词 word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义.能准确识别英文.数字,以及日期.时间等 ...

  9. Java分布式中文分词组件 - word分词(转自 https //github com/ysc/word)

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

最新文章

  1. (二)spring cloud微服务分布式云架构 - 整合企业架构的技术点
  2. 入门HTML的回顾,小总结
  3. 2018python培训-2018python深度学习核心技术培训班
  4. git cherry-pick用法
  5. Zabbix实战之客户端自动注册
  6. R语言应用实战-基于R语言的综合评价(层次分析法AHP为例)
  7. Spring框架集成mybatis框架的配置(笔记)
  8. python文件操作实验总结,[干货分享]Python文件操作技巧总结
  9. PyTorch框架学习十九——模型加载与保存
  10. IDC报告:中国公有云服务市场同比增长49.7%,领跑全球
  11. python pandas n行求和,Python 的 Pandas 对矩阵的行进行求和
  12. HashMap,,ConcurrentHashMap------------------浅谈!!
  13. Android透明状态栏或者渐变色状态栏
  14. nginx配置实现代理多个内网地址
  15. iOS 跑马灯带图片可点击
  16. mysql怎么在查询_Mysql查询操作
  17. 易语言群控雷电_安卓群控系统雷电模拟器安卓多开模拟器多开群控系统企业自动化的营销系统软件-资源下载随便下源码网...
  18. 怎么将小程序添加到我的小程序?
  19. 【转】VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(上)
  20. 《数据库系统应用程序开发》考试

热门文章

  1. 美菜网一面面经(成都——后端研发工程师(Java))
  2. vue项目打包-图片
  3. 没有工业软件 谈什么智能制造转型
  4. 瑞星2008主动防御技术分析
  5. 豆瓣评分9分+,这6部经典趣味数学纪录片堪称神作!
  6. 【OpenFOAM】snappyHexMesh
  7. Android 环信即时通讯集成
  8. 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)
  9. STM32CubeMX关于ADC采集DMA传输
  10. 飞凌嵌入式Android测试