HanLPTokenizer HanLP分词器

本文介绍了HanLP分词器的不同分词模式,包括标准分词、NLP分词、索引分词、极速词典分词等,并提供了具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

anlp在功能上的扩展主要体现在以下几个方面:
•关键词提取 
•自动摘要
•短语提取 
•拼音转换
•简繁转换

•文本推荐


下面是 hanLP分词器的代码

注:使用maven依赖 

<dependency>  
   <groupId>com.hankcs</groupId>  
   <artifactId>hanlp</artifactId>  
   <version>portable-1.3.4</version>  
</dependency> 

使用了java8进行处理

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;


import org.apache.commons.lang3.StringUtils;


import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.Dijkstra.DijkstraSegment;
import com.hankcs.hanlp.seg.NShort.NShortSegment;
import com.hankcs.hanlp.tokenizer.IndexTokenizer;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.hankcs.hanlp.tokenizer.SpeedTokenizer;
import com.hankcs.hanlp.tokenizer.StandardTokenizer;
public class HanLPTokenizer {


private static final Segment N_SHORT_SEGMENT = new NShortSegment().enableCustomDictionary(false)
.enablePlaceRecognize(true).enableOrganizationRecognize(true);
private static final Segment DIJKSTRA_SEGMENT = new DijkstraSegment().enableCustomDictionary(false)
.enablePlaceRecognize(true).enableOrganizationRecognize(true);


/**
* 标准分词
* @param text
* @return
*/
public static List<String> standard(String text) {
List<String> list = new ArrayList<String>();
StandardTokenizer.segment(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list.stream().distinct().collect(Collectors.toList());
}

/**
* NLP分词
* @param text
* @return
*/
public static List<String> nlp(String text) {
List<String> list = new ArrayList<String>();
NLPTokenizer.segment(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list.stream().distinct().collect(Collectors.toList());
}


/**
* 索引分词
* @param text
* @return
*/
public static List<String> index(String text) {
List<String> list = new ArrayList<String>();
IndexTokenizer.segment(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list.stream().distinct().collect(Collectors.toList());
}


/**
* 极速词典分词
* @param text
* @return
*/
public static List<String> speed(String text) {
List<String> list = new ArrayList<String>();
SpeedTokenizer.segment(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list;
}


/**
* N-最短路径分词
* @param text
* @return
*/
public static List<String> nShort(String text) {
List<String> list = new ArrayList<String>();
N_SHORT_SEGMENT.seg(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list.stream().distinct().collect(Collectors.toList());
}


/**
* 最短路径分词
* @param text
* @return
*/
public static List<String> shortest(String text) {
List<String> list = new ArrayList<String>();
DIJKSTRA_SEGMENT.seg(text).forEach(term -> {
if (StringUtils.isNotBlank(term.word)) {
list.add(term.word);
}
});

return list.stream().distinct().collect(Collectors.toList());
}


public static void main(String[] args) {


String text = "测试勿动12";
System.out.println("标准分词:" + standard(text));
System.out.println("NLP分词:" + nlp(text));
System.out.println("索引分词:" + index(text));
System.out.println("N-最短路径分词:" + nShort(text));
System.out.println("最短路径分词分词:" + shortest(text));
System.out.println("极速词典分词:" + speed(text));
}


}


### HanLP 分词器使用教程与 API 文档 #### 1. 官方文档地址 HanLP 的官方文档提供了详细的 API 和使用说明,可以访问以下链接获取最新版本的文档信息: [HanLP Documentation](https://hanlp.hankcs.com/docs/api/hanlp/pretrained/index.html)[^1] --- #### 2. Python 调用 HanLP 分词器 如果希望在 Python 环境中调用 HanLP 进行分词操作,可以通过安装 `pyhanlp` 库实现。以下是具体步骤: ##### (a) 安装依赖库 运行以下命令来安装必要的库: ```bash pip install pyhanlp ``` ##### (b) 基础分词示例代码 下面是一个简单的分词示例代码: ```python from pyhanlp import * text = "自然语言处理是一门充满挑战性的学科" segmenter = HanLP.newSegment("crf") # 使用 CRF 模型进行分词 result = segmenter.seg(text) print(" ".join(term.word for term in result)) ``` 上述代码会输出如下结果: ``` 自然语言 处理 是 一门 充满 挑战 性 的 学科 ``` 此部分展示了如何利用预训练模型完成基础分词任务[^2]。 --- #### 3. Java 环境下的 HanLP 分词器 对于 Java 开发者而言,可以直接引入 HanLP 工具包并集成到项目中。以下是基本配置方法: ##### (a) Maven 配置 在项目的 `pom.xml` 文件中添加以下依赖项: ```xml <dependency> <groupId>com.hankcs</groupId> <artifactId>hanlp</artifactId> <version>portable-1.8.2</version> </dependency> ``` ##### (b) 基础分词代码 以下是在 Java 中执行分词的一个简单例子: ```java import com.hankcs.hanlp.HanLP; import com.hankcs.hanlp.segmenter.Segment; public class Main { public static void main(String[] args) { String text = "自然语言处理是一门充满挑战性的学科"; Segment segment = HanLP.newSegment(); System.out.println(segment.seg(text)); } } ``` 程序输出的结果类似于: ``` 自然语言处理/s 是/v 一门/q 充满/v 挑战性/n 的/u 学科/n ``` 这部分介绍了基于 Java 平台的基础分词流程[^3]。 --- #### 4. Elasticsearch 插件支持 HanLP 提供了针对 Elasticsearch 的插件支持,允许开发者轻松将其嵌入搜索引擎中用于中文分词。例如,在创建索引时可定义自定义分词器: ```json PUT /test_index { "settings": { "analysis": { "analyzer": { "hanlp_pinyin_analyzer": { "type": "custom", "tokenizer": "hanlp", "filter": [ "my_pinyin", "word_delimiter" ] } }, "filter": { "my_pinyin": { "type": "pinyin", "first_letter": "prefix", "padding_char": " " } } } } } ``` 该配置文件描述了一个带有拼音过滤功能的定制化分词器设置[^5]。 --- #### 5. 特性和性能优势 HanLP 不仅提供高效的分词能力,还具备多种高级特性,如命名实体识别、依存句法分析等。其底层算法经过高度优化,能够达到每秒约 **2,000万汉字** 的极速分词效果,同时占用内存仅为 **120MB** 左右。这些特点使得它非常适合大规模数据处理场景[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值