Java机械分词

这是我们做的一个小作业,不多说

直接附上我写的代码:

 

    public void Zheng() {
        try {
            BufferedReader bre = null;
            //String file = "d.txt";
            String file = "Dict.txt";
            bre = new BufferedReader(new FileReader(file));
            String line;
            try {
                while ((line = bre.readLine()) != null) // 判断最后一行不存在,为空结束循环
                {
                    temp.add(line);
                    // System.out.println(line);// 原样输出读到的内容
                }

                bre.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        } catch (FileNotFoundException e) {
            System.out.println("未成功读取文件");
            e.printStackTrace();
        }

        String sub_str;
        while (start < total_len) {
            boolean flag = false;
            tmp_len = start + max_len <= total_len ? max_len : total_len - start;
            label: while (tmp_len > 0) {
                // System.out.println(1);
                sub_str = receive.substring(start, start + tmp_len);
                // System.out.println(sub_str);
                for (i = 0; i < temp.size(); i++) {
                    if (sub_str.equals(temp.get(i))) {
                        flag = true;
                    }
                }

                if (flag == true) {
                    words.add(receive.substring(start, start + tmp_len));
                    start = start + tmp_len;
                    break label;
                } else {
                    tmp_len = tmp_len - 1;
                    // System.out.println(tmp_len);
                }

                /*
                 * if sub_str in dict: words.append(setence[start : start +
                 * tmp_len]) start = start + tmp_len break else: tmp_len =
                 * tmp_len -1
                 */
            }
            if (tmp_len == 0) {
                words.add(receive.substring(start, start + 1));
                start = start + 1;
            }

        }

效果就是按照词库中的词将一段语句分割开来。

附上词库的位置:

https://pan.baidu.com/s/1pLBKer5

时间: 2024-08-09 10:19:36

Java机械分词的相关文章

java中文分词算法

我想只要是学过数据库的孩纸,不管是mysql,还是sqlsever,一提到查找,本能的想到的便是like关键字,其实去转盘网(分类模式)之前也是采用这种算法,但我可以告诉大家一个很不幸的事情,like匹配其实会浪费大量的有用资源,原因这里不说了请自己想一想,我们还是直接摆事实验证. 现在用去转盘网搜:hello 找个单词,如下: http://www.quzhuanpan.com/source/search.action?q=hello&currentPage=1 翻页你会发现只要是包含hell

java中科院分词配置(ICTCLAS)

之前零零散散用过几次,配置好了就没管过.后来再用的时候就忘了怎么配置,又找了很多资料(太麻烦了).现总结一下当作笔记: 首先,下载中科院分词项目. github网址:https://github.com/NLPIR-team/NLPIR/tree/master/NLPIR%20SDK/NLPIR-ICTCLAS 使用的时候两种方法 一种直接在eclipse中导入如图所示的项目 在这个java文件中配置两个路径 第一个: // 定义并初始化接口的静态变量 CLibrary Instance = (

【Java】Java中文分词器Ansj的使用

以前都是用C++对中文进行分词,也用过Python的"结巴"分词,最近用了一下Java的Ansj中文分词,感觉还不错. 下面是用Ansj对中文进行分词的一个简单例子,希望能对大家有用. 1.下载Ansj的相关jar包 要用Ansj进行中文分词,必须先下载Ansj的jar包,下载地址可以参考:https://github.com/NLPchina/ansj_seg 2.程序代码 用Ansj进行中文分词的简单代码如下所示: import org.ansj.splitWord.analysi

java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍

pinyin pinyin 是 java 实现的高性能中文拼音转换工具. 变更日志 创作目的 想为 java 设计一款便捷易用的拼音工具. 如何为 java 设计一款高性能的拼音转换工具 pinyin4j 特性 性能是 pinyin4j 的两倍 极简的 api 设计 支持转换长文本 支持多音字 支持多种拼音标注方式 支持中文分词 快速开始 准备 jdk 1.7+ maven 引入 <dependency> <groupId>com.github.houbb</groupId&

[分词]Java开源中文分词器ANSJ_SEG初次试用

近日需要对大众点评网60万+的景点评论进行语义分析,所以必须使用分词工具,刚刚开始时我是选择使用NLPIR汉语分词系统(又名ICTCLAS2014),NLPIR的教程在[分词]NLPIR/ICTCLAS2014分词系统的C++ API 在Windows下初次使用,但是直观上感觉分词效果不怎么理想,所以就选用了另一个工具,同学推荐我用一下ANSJ的中文分词,近来也是在学Java,所以对于java的jar包还是挺能接受的,不像dll的那么烦,在Eclipse直接把包加入classpath是一个很简单

结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现. 变更日志 创作目的 分词是做 NLP 相关工作,非常基础的一项功能. jieba-analysis 作为一款非常受欢迎的分词实现,个人实现的 opencc4j 之前一直使用其作为分词. 但是随着对分词的了解,发现结巴分词对于一些配置上不够灵活. 有很多功能无法指定关闭,比如 HMM 对于繁简体转换是无用的,因为繁体词是固定的,不需要预测. 最新版本的词性等功能好像也被移除了,但是这些都是个人非常需要

几款开源的中文分词系统

中文分词是做好中文内容检索.文本分析的基础,主要应用于搜索引擎与数据挖掘领域.中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Le

NLP︱中文分词技术小结、几大分词引擎的介绍与比较

笔者想说:觉得英文与中文分词有很大的区别,毕竟中文的表达方式跟英语有很大区别,而且语言组合形式丰富,如果把国外的内容强行搬过来用,不一样是最好的.所以这边看到有几家大牛都在中文分词以及NLP上越走越远.哈工大以及北大的张华平教授(NLPIR)的研究成果非常棒! 但是商业应用的过程中存在的以下的问题: 1.是否先利用开源的分词平台进行分词后,再自己写一些算法进行未登录词.歧义词的识别? 2.或者直接调用下文介绍的分词引擎来进行分词呢?缴费使用固然很棒,但是是否值得? ---------------

[转]自然语言分词简介

一.分词软件简介 主流分词软件 挑重要的讲,目前的分词软件很多,也比较杂.这里列举一些效果比较好的分词软件. Stanford Word Segmenter (Java,GPL) 老牌美帝斯坦佛大学NLP小组出品 nlpbamboo (C++, BSD) PostgreSQL的大大们制作的一个基于CRF++库的分词软件 ICTCLAS (闭源但是提供非商业使用lib)中科院出品也是目前比较广泛的分词软件 LTP (主要C++, 很神奇的LTP开源协议) 哈工大的一个自然语言处理平台,已经做到浅层