HanLP-实词分词器详解
在进行文本分类(非情感分类)时,我们经常只保留实词(名、动、形)等词,为了文本分类的分词方便,HanLP专门提供了实词分词器类NotionalTokenizer,同时在分类数据集加载处理时,默认使用了NotionalTokenizer分词器。
在HanLPJava版代码库中可以查看下边的文件中的函数
1、AbstractDataSet.java文件中的AbstractDataSet方法
2、HanLPTokenizer.java文件中的segment方法
3、NotionalTokenizer.java文件中的segment方法
简单说明一下NotionalTokenizer类实现
1、初始化了一个维特比分词器实例(最短路径方法,用viterbi思想实现)
2、用CoreStopWordDictionary类的shouldInclude方法对维特比分词结果进行过滤,该方法只保留属于名词、动词、副词、形容词并且不在停用词表中的词。详见CoreStopWordDictionary.java文件中的shouldInclude(Term)方法。
对于PyHanLP的调用方法可以参考
-- coding:utf-8 --
Author:wancong
Date: 2018-04-30
from pyhanlp import *
def demo_notional_tokenizer():
""" 演示自动去除停用词、自动断句的分词器 >>> demo_notional_tokenizer() [小区/n, 居民/n, 反对/v, 喂养/v, 流浪猫/nz, 居民/n, 赞成/v, 喂养/v, 小宝贝/nz] [小区/n, 居民/n, 反对/v, 喂养/v, 流浪猫/nz] [居民/n, 赞成/v, 喂养/v, 小宝贝/nz] """ Term =JClass("com.hankcs.hanlp.seg.common.Term") NotionalTokenizer = JClass("com.hankcs.hanlp.tokenizer.NotionalTokenizer") text = "小区居民有的反对喂养流浪猫,而有的居民却赞成喂养这些小宝贝" print(NotionalTokenizer.segment(text)) for sentence in NotionalTokenizer.seg2sentence(text): print(sentence)
if name == "__main__":
import doctest
doctest.testmod(verbose=True)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
免费开源cms自助建站系统大全,不会编程也可以自己建网站
想自己建网站又没有网站编程基础的小伙伴有福啦,本期小熊seo整理了国内一些知名的,并且可以开源免费下载的cms自助建站系统程序,我们都知道,cms可以让我们不需要熟悉任何网站开发基础编程,只需要下载下来,配置好运行环境就可以安装使用,然后通过后台轻轻松松就可以修改成自己的网站了,稍微熟悉基础电脑操作就能自己制作网站,下面小熊seo就给大家整理一下,希望对大家有所帮助。 1、PageAdmin PageAdmin是基于asp.net开发,采用mvc框架的网站管理系统,功能强大,扩展灵活,系统是完全独立开发,功能成熟,安全性高,可以免费下载使用,目前是国内使用最多的网站系统,主要应用在企业,学校和政府网站。 2、Discuz 一个以社区为基础的专业论坛建站平台,让论坛(BBS)、社交网络(SNS)、门户(Portal)、群组(Group)、开放平台(Open Platform)应用充分融合于一体。这个是一款很知名的论坛系统,在国内占据绝对垄断地位。 3、织梦CMS 织梦CMS是集简单、健壮、灵活、开源几大特点的开源内容管理系统,是国内开源CMS的最早的系统,可以免费下载使用,很个人站长使用...
- 下一篇
数据结构七:递归+动规+分治+回溯
Datawhale 系列数据结构 本文参考链接:01背包问题:https://blog.csdn.net/chanmufeng/article/details/82955730 Task7.1 递归 7.1.1爬楼梯 //爬楼梯: //假设你正在爬楼梯。需要 n 阶你才能到达楼顶 //每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? class Solution { public int climbStairs(int n) { int [] ways = new int[n+1]; ways[0] = 0; for (int i = 1;i<ways.length;i++){ if (i < 3 ){ ways[i] = i; }else { ways[i] = ways[i-1] + ways[i-2]; } } return ways[n]; } } //使用最小花费爬楼梯 //数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。 //每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果