文章中需要的Apache openNlp jar包:openNlp下载:https://opennlp.apache.org/cgi-bin/download.cgi

其他涉及的jar都是java基础类包

package com.npl.demo.utils;import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.regex.Pattern;import opennlp.tools.tokenize.SimpleTokenizer;
import opennlp.tools.tokenize.WhitespaceTokenizer;/**  * Filename:    NlpTokenization.java  * Description:   * Copyright:   Copyright (c) 2019 All Rights Reserved.* @author:     wangk* @version:    1.0* Create at:   2019年5月5日 下午4:28:56  *  * Modification History:  * Date         Author      Version     Description  * ------------------------------------------------------------------  * 2019年5月5日      wangk      1.0         1.0 Version  *
*/
public class NlpTokenization {static String paragraph =  "Let's The first sentence. The second sentence. Let's ";static String[] sentences = {"Tim was agood neighbor. Perhaps not as good Bob "+"Haywood, but stille pretty good. Of course Mr. Adam "+"took the cake!"};static String chineseLanguage = "时代的碰撞|中国古典民乐与流行的相遇"; //中文可以进行正则匹配每隔字中间加一个空格,就可以进行分词了//代码如下/*String regex = "(.{1})";text = text.replaceAll (regex, "$1 ");*/public static void main(String[] args) {NlpTokenization to = new NlpTokenization();//to.scanner(paragraph);//to.split(chineseLanguage);//to.breakIterator(paragraph);//to.streamTokenizer(paragraph);//to.stringTokenizer(chineseLanguage);//to.textSplit();   //测试分词 性能to.openNlpSimpleTokenizer(chineseLanguage);}/*** @Description: /默认使用空格作为分隔符   java类 Scanner方法  * @author wangk* @param text* @return * @date: 2019年5月5日 下午1:51:38  */public List scanner(String text) {Scanner scanner = new Scanner(text);scanner.useDelimiter("[ ,.]");//设置基于字符串或模式的分隔符  --设置分隔符为空格,逗号,句号  使用正则设置//scanner.reset();//分隔符复位为空格List<String> list = new ArrayList<>();while(scanner.hasNext()) {String token = scanner.next();list.add(token);}for(String token : list) {System.out.println(token);}return null;}/*** @Description: 文本分词   java类 split方法  * @author wangk* @param text* @return * @date: 2019年5月5日 下午1:51:30  */public List split(String text) {String tokens[] = text.split("\\s+");for (String token : tokens) {System.out.println(token);}return null;}/*** @Description: 文本分词   java类 BreakIterator方法   该类可以获取各种边界* @author wangk* @param text* @return * @date: 2019年5月5日 下午1:51:19  */public List breakIterator(String text) {BreakIterator wordIterator =   BreakIterator.getWordInstance();wordIterator.setText(text);int boundary = wordIterator.first();while(boundary != BreakIterator.DONE) {//done为最后一个边界int begin = boundary;System.out.print(boundary+"-");boundary = wordIterator.next();int end = boundary;if(end == BreakIterator.DONE) break;System.out.println(boundary+"["+ text.substring(begin, end)+"]");}return null;}/*** @Description: 文本分词   java类 StreamTokenizer方法  通常基于一个文件创建,对文件中的文本分词* @author wangk* @param text* @return * @date: 2019年5月5日 下午1:50:37  */public List streamTokenizer(String text) {StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(text));//对于分词器会将单引号字符和双引号字符表示引用文本,由于没有对应的引号,故字符串的其他部分被忽略了//使用ordinaryChar方法制定那些字符串应为普通字符tokenizer.ordinaryChar('\'');tokenizer.ordinaryChar(',');boolean isEOF = false;  //用来终止循环 while(!isEOF) {try {int token = tokenizer.nextToken(); //返回词项的类型switch(token) {case StreamTokenizer.TT_EOF:   //static int  流结束的一个常数isEOF = true;break;case StreamTokenizer.TT_EOL:   //static int  行结束的一个常数break;case StreamTokenizer.TT_NUMBER:  //static int   读取词项的数量System.out.println(tokenizer.nval);   //double 如果当前词项是一个单词则存有一个数字break;case StreamTokenizer.TT_WORD:  //static int   指明一个单词词项的常数System.out.println(tokenizer.sval);  //String 如果当前词项是一个单词则存有这个词项break;default:System.out.println((char) token);}} catch (IOException e) {e.printStackTrace();}}return null;}/*** @Description: 文本分词   java类 stringTokenizer方法   可以处理热恩和来源的字符串  * @author wangk* @param text* @return * @date: 2019年5月5日 下午3:05:36  */public List stringTokenizer(String text) {StringTokenizer st = new StringTokenizer(text);while(st.hasMoreTokens()) {System.out.println(st.nextToken());}return null;}/*** @Description: 测试分词 性能* @author wangk * @date: 2019年5月5日 下午4:28:59  */public void textSplit() {StringBuilder sb = new StringBuilder();for (int i = 100000; i < 100000 + 60; i++)sb.append(i).append(' ');String sample = sb.toString();int runs = 100000;for (int i = 0; i < 5; i++) {{long start = System.nanoTime();for (int r = 0; r < runs; r++) {StringTokenizer st = new StringTokenizer(sample);List<String> list = new ArrayList<String>();while (st.hasMoreTokens())list.add(st.nextToken());}long time = System.nanoTime() - start;System.out.printf("StringTokenizer took an average of %.1f us%n", time / runs / 1000.0);}{long start = System.nanoTime();Pattern spacePattern = Pattern.compile(" ");for (int r = 0; r < runs; r++) {List<String> list = Arrays.asList(spacePattern.split(sample, 0));}long time = System.nanoTime() - start;System.out.printf("Pattern.split took an average of %.1f us%n", time / runs / 1000.0);}{long start = System.nanoTime();for (int r = 0; r < runs; r++) {List<String> list = new ArrayList<String>();int pos = 0, end;while ((end = sample.indexOf(' ', pos)) >= 0) {list.add(sample.substring(pos, end));pos = end + 1;}}long time = System.nanoTime() - start;System.out.printf("indexOf loop took an average of %.1f us%n", time / runs / 1000.0);}}}/*** @Description: 英文标点也被作为单独项   openNlp  方法SimpleTokenizer* @author wangk* @param text* @return * @date: 2019年5月6日 上午10:36:38  */public List openNlpSimpleTokenizer(String text) {SimpleTokenizer simpleTokenizer = SimpleTokenizer.INSTANCE;String regex = "(.{1})";text = text.replaceAll (regex, "$1 ");String tokens[] = simpleTokenizer.tokenize(text);for(String token : tokens) {System.out.println(token);}return null;}/*** @Description: 空格作为分隔符   openNlp  方法 WhitespaceTokenizer* @author wangk* @param text* @return * @date: 2019年5月6日 上午10:36:38  */public List openNlpWhitespaceTokenizer(String text) {WhitespaceTokenizer simpleTokenizer = WhitespaceTokenizer.INSTANCE;String tokens[] = simpleTokenizer.tokenize(text);for(String token : tokens) {System.out.println(token);}return null;}}

NLP 文本分词 java类方法,及opennlp 示例相关推荐

  1. 自然语言处理NLP中文分词,词性标注,关键词提取和文本摘要

    NLP相关工具包的介绍 1.1 jieba "结巴"中文分词,理念是做最好的 Python 中文分词组件. 支持三种分词模式: (1)精确模式,试图将句子最精确地切开,适合文本分析 ...

  2. NLP文本预处理:步骤、示例 | 附github源码

    点击关注我哦 一篇文章带你了解NLP文本预处理:步骤.示例 | 附github源码 注:关注[小白玩转Python]公众号,后台回复[NLP文本预处理],可以获取完整源码以及项目所需数据集. 文本数据 ...

  3. NLP实现文本分词+在线词云实现工具

    实现文本分词+在线词云实现工具 词云是NLP中比较简单而且效果较好的一种表达方式,说到可视化,R语言当仍不让,可见R语言︱文本挖掘--词云wordcloud2包 当然用代码写词云还是比较费劲的,网上也 ...

  4. NLP之文本分词综述

    文本分词综述 文本分词 介绍 应用场景 常见算法 常用的分词库 代码demo jieba分词: 特点 流程 demo NLTK分词: 特点 流程 demo spaCy分词: 特点 流程 demo St ...

  5. mysql使用结巴语句_结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

    Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现. 创作目的 分词是做 NLP 相关工作,非常基础的一项功能. jieba-analysis 作为一款非常 ...

  6. 斯坦福NLP名课带学详解 | CS224n 第15讲 - NLP文本生成任务(NLP通关指南·完结)

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...

  7. NLP - 文本向量化

    文章目录 本质 词袋模型 原理 特点 词空间模型 NNLM 模型 RNNLM C&W 模型 C&W & NNLM CBOW 和 Skip-gram 模型 CBOW 模型 改进: ...

  8. 【数据挖掘】NLP中文分词概述

    在大数据时代,信息量越来越大,给你一篇百万文字的文章,你保证你有耐心慢慢看完吗?如果是热点新闻,我们当然会希望通过一段简洁明了的文字来概述整个文章,这时候就需要提取文章的关键字:每当我们遇到不会的问题 ...

  9. nlp文本数据增强_如何使用Texthero为您的NLP项目准备基于文本的数据集

    nlp文本数据增强 Natural Language Processing (NLP) is one of the most important fields of study and researc ...

  10. 第六课.NLP文本分类任务

    第六课目录 NLP文本分类简介 IMDB数据集准备 设置随机种子 下载IMDB并划分数据集 构建词汇表 使用torchtext生成batch WordAveraging 模型定义 加载由glove.6 ...

最新文章

  1. 任务调度器leetcode621
  2. build muduo网络库undefined reference to问题
  3. Scala函数的可变参数和参数默认值及带名参数
  4. MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?...
  5. reserve和resize - 力为的技术博客 - C++博客
  6. COM_TEXT_GET_SWITCH
  7. 转 C#对多个集合和数组的操作(合并,去重,判断)
  8. Android在子线程里使用Toast报错Can't toast on a thread that has not called Looper.prepare()
  9. 学java要算法吗_学习java不可不知的几种算法
  10. 窗口,视图,视图控制器和UIKit基础-IOS开发
  11. 海量数据下的存储技术,哪些模式靠得住?
  12. centos7 开机启动文件路径_centos7定时运行python脚本
  13. 设计模式原则之五:里氏置换原则
  14. 一次历时两周的实习生笔试
  15. mysql 核对_mysql索引 (校验规则引发的血案)
  16. 快解析 : 管家婆A8远程访问解决方案
  17. 如何把google日历添加到桌面
  18. 微信小程序 图片上传预览删除
  19. win10 office提示‘VBE6EXT.OLB不能被加载‘怎么办
  20. Python实现四子棋(四连环)游戏

热门文章

  1. 实现高效的英文单词前缀匹配
  2. 等额本息房贷月供计算
  3. 《醉翁亭记》古文鉴赏
  4. Pytorch基础知识(7)单目标检测
  5. O2OO是一个汽车故障诊断工具
  6. [硬件]_ELVE_VS2015下opencv3.3的配置问题
  7. 主流跨境电商平台有哪些-扬帆牧哲
  8. Python基础练习-每日一题-大家来找茬!
  9. 本地运行Flink-DIMAPP出现问题
  10. 小生不才,真实记录爬取链家网2584条租房信息,聊一聊框架爬取大量数据防止被ban的事