hanLP的分词的使用

您所在的位置:网站首页 正体中文是什么 hanLP的分词的使用

hanLP的分词的使用

2023-09-14 12:46| 来源: 网络整理| 查看: 265

HanLP: Han Language Processing

汉语言处理包 Maven Central GitHub release License Docker Stars

HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

HanLP提供下列功能:

中文分词 HMM-Bigram(速度与精度最佳平衡;一百兆内存) 最短路分词、N-最短路分词 由字构词(侧重精度,全世界最大语料库,可识别新词;适合NLP任务) 感知机分词、CRF分词 词典分词(侧重速度,每秒数千万字符;省内存) 极速词典分词 所有分词器都支持: 索引全切分模式用户自定义词典兼容繁体中文训练用户自己的领域模型 词性标注 HMM词性标注(速度快)感知机词性标注、CRF词性标注(精度高) 命名实体识别 基于HMM角色标注的命名实体识别 (速度快) 中国人名识别、音译人名识别、日本人名识别、地名识别、实体机构名识别 基于线性模型的命名实体识别(精度高) 感知机命名实体识别、CRF命名实体识别 关键词提取 TextRank关键词提取 自动摘要 TextRank自动摘要 短语提取 基于互信息和左右信息熵的短语提取 拼音转换 多音字、声母、韵母、声调 简繁转换 简繁分歧词(简体、繁体、臺灣正體、香港繁體) 文本推荐 语义推荐、拼音推荐、字词推荐 依存句法分析 基于神经网络的高性能依存句法分析器基于ArcEager转移系统的柱搜索依存句法分析器 文本分类 情感分析 文本聚类 KMeans、Repeated Bisection、自动推断聚类数目k word2vec 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类文档语义相似度计算 语料库工具 部分默认模型训练自小型语料库,鼓励用户自行训练。所有模块提供训练接口,语料可参考98年人民日报语料库。

在提供丰富功能的同时,HanLP内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便。默认模型训练自全世界最大规模的中文语料库,同时自带一些语料处理工具,帮助用户训练自己的模型。

项目主页

在线演示、Python调用、Solr及Lucene插件、论文引用、更多信息。

下载与配置 方式一、Maven 我还没学方式二、下载jar、data、hanlp.properties 1. 下载:data.zip

下载后解压到任意目录,接下来通过配置文件告诉HanLP数据包的位置。

HanLP中的数据分为词典和模型,其中词典是词法分析必需的,模型是句法分析必需的。

data │ ├─dictionary └─model

用户可以自行增删替换,如果不需要句法分析等功能的话,随时可以删除model文件夹。

模型跟词典没有绝对的区别,隐马模型被做成人人都可以编辑的词典形式,不代表它不是模型。GitHub代码库中已经包含了data.zip中的词典,直接编译运行自动缓存即可;模型则需要额外下载。 2. 下载jar和配置文件:hanlp-release.zip

解压后如图: 在这里插入图片描述 配置文件的作用是告诉HanLP数据包的位置,只需修改第一行

root=D:/JavaProjects/HanLP/

为data的父目录即可,比如data目录是/Users/hankcs/Documents/data,那么root=/Users/hankcs/Documents/ 。

最后将hanlp.properties放入classpath即可,对于多数项目,都可以放到src或resources目录下,编译时IDE会自动将其复制到classpath中。除了配置文件外,还可以使用环境变量HANLP_ROOT来设置root。安卓项目请参考demo。

如果放置不当,HanLP会提示当前环境下的合适路径,并且尝试从项目根目录读取数据集。 注意:在lib文件夹中也要放配置文件,不然编译错误。 配置完成项目如图: 在这里插入图片描述

调用方法

HanLP几乎所有的功能都可以通过工具类HanLP快捷调用,当你想不起来调用方法时,只需键入HanLP.,IDE应当会给出提示,并展示HanLP完善的文档。

所有Demo都位于com.hankcs.demo下,比文档覆盖了更多细节,更新更及时,强烈建议运行一遍。此处仅列举部分常用接口。

1. 第一个Demo System.out.println(HanLP.segment("你好,欢迎使用HanLP汉语处理包!"));

运行成功如下:

[你好/vl, ,/w, 欢迎/v, 使用/v, HanLP/nx, 汉语/gi, 处理/vn, 包/v, !/w] 内存要求 内存120MB以上(-Xms120m -Xmx120m -Xmn64m),标准数据包(35万核心词库+默认用户词典),分词测试正常。全部词典和模型都是惰性加载的,不使用的模型相当于不存在,可以自由删除。HanLP对词典的数据结构进行了长期的优化,可以应对绝大多数场景。哪怕HanLP的词典上百兆也无需担心,因为在内存中被精心压缩过。如果内存非常有限,请使用小词典。HanLP默认使用大词典,同时提供小词典,请参考配置文件章节。 2. 标准分词 List termList = StandardTokenizer.segment("商品和服务"); System.out.println(termList); 说明 HanLP中有一系列“开箱即用”的静态分词器,以Tokenizer结尾,在接下来的例子中会继续介绍。HanLP.segment其实是对StandardTokenizer.segment的包装。分词结果包含词性,每个词性的意思请查阅《HanLP词性标注集》。 算法详解 《词图的生成》 3. NLP分词 System.out.println(NLPTokenizer.segment("我新造一个词叫幻想乡你能识别并标注正确词性吗?")); // 注意观察下面两个“希望”的词性、两个“晚霞”的词性 System.out.println(NLPTokenizer.analyze("我的希望是希望张晚霞的背影被晚霞映红").translateLabels()); System.out.println(NLPTokenizer.analyze("支援臺灣正體香港繁體:微软公司於1975年由比爾·蓋茲和保羅·艾倫創立。")); 说明 NLP分词NLPTokenizer会执行词性标注和命名实体识别,由结构化感知机序列标注框架支撑。默认模型训练自9970万字的大型综合语料库,是已知范围内全世界最大的中文分词语料库。语料库规模决定实际效果,面向生产环境的语料库应当在千万字量级。欢迎用户在自己的语料上训练新模型以适应新领域、识别新的命名实体。 4. 索引分词 List termList = IndexTokenizer.segment("主副食品"); for (Term term : termList) { System.out.println(term + " [" + term.offset + ":" + (term.offset + term.word.length()) + "]"); } 说明 索引分词IndexTokenizer是面向搜索引擎的分词器,能够对长词全切分,另外通过term.offset可以获取单词在文本中的偏移量。任何分词器都可以通过基类Segment的enableIndexMode方法激活索引模式。 5. N-最短路径分词 Segment nShortSegment = new NShortSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true); Segment shortestSegment = new DijkstraSegment().enableCustomDictionary(false).enablePlaceRecognize(true).enableOrganizationRecognize(true); String[] testCase = new String[]{ "今天,刘志军案的关键人物,山西女商人丁书苗在市二中院出庭受审。", "刘喜杰石国祥会见吴亚琴先进事迹报告团成员", }; for (String sentence : testCase) { System.out.println("N-最短分词:" + nShortSegment.seg(sentence) + "\n最短路分词:" + shortestSegment.seg(sentence)); } 说明 N最短路分词器NShortSegment比最短路分词器慢,但是效果稍微好一些,对命名实体识别能力更强。一般场景下最短路分词的精度已经足够,而且速度比N最短路分词器快几倍,请酌情选择。 算法详解 《N最短路径的Java实现与分词应用》 6. CRF分词 CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer(); String[] tests = new String[]{ "商品和服务", "上海华安工业(集团)公司董事长谭旭光和秘书胡花蕊来到美国纽约现代艺术博物馆参观", "微软公司於1975年由比爾·蓋茲和保羅·艾倫創立,18年啟動以智慧雲端、前端為導向的大改組。" // 支持繁体中文 }; for (String sentence : tests) { System.out.println(analyzer.analyze(sentence)); } 说明 CRF对新词有很好的识别能力,但是开销较大。 算法详解 《CRF中文分词、词性标注与命名实体识别》 7. 极速词典分词 /** * 演示极速分词,基于AhoCorasickDoubleArrayTrie实现的词典分词,适用于“高吞吐量”“精度一般”的场合 * @author hankcs */ public class DemoHighSpeedSegment { public static void main(String[] args) { String text = "江西鄱阳湖干枯,中国最大淡水湖变成大草原"; System.out.println(SpeedTokenizer.segment(text)); long start = System.currentTimeMillis(); int pressure = 1000000; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3