`

NLP自然语言处理中的hanlp分词实例

阅读更多

 

本篇分享的依然是关于hanlp的分词使用,文章内容分享自 gladosAI 的博客,本篇文章中提出了一个问题,hanlp分词影响了实验判断结果。为何会如此,不妨一起学习一下 gladosAI 的这篇文章。

 

学习内容

 

在之前的实验中得到了不在词向量里的词与分词结果,结果有500多个词不在词向量里,解决方案就是重新分词,或再追加训练这些词到词向量里。但后者相对麻烦且目前样本量不大。我跟据词向量的作者[6]所使用的分词工具来分词,会比不同工具(jieba)的效果要好,因为都是同模式的分词,分出来的词应该都会存在于大型语料库中。实验证明思路是对的,最后结果是只有60几个词不在词向量里,其中大部分为名词,还有些为因语音翻译问题所造成的出错连词,所有这些词也只出现一次,这部分可以考虑最后删去也不会影响结果。改善未出现词是个关键步骤,因为此后模型会用到词向量,如果未出现词过多,会影响词向量效果。

问题:不过最后HANLP分词影响了实验判断结果,准确率从93%(jieba分词,同模型同参数)下降到90%。

实验:使用HanLP分词

1,前期准备,(环境ubuntu,python3)安装JAVA-10[3](hanlp是JAVA开发的,即使使用python调用pyhanlp需要借助java), jpype(python中虚拟java环境),hanlp(开源中文处理工具,不只是分词还有各种工具),hanlp的root路径配置及data数据包放置[4]

2,主要程序[5]

w2v_model = KeyedVectors.load_word2vec_format(w2vpath, binary=False, unicode_errors='ignore') # 加载词向量

hanlppath=\"-Djava.class.path=/media/glados/Learning/project/NLP/hanlp/hanlp-1.6.4.jar:/media/glados/Learning/project/NLP/hanlp/"

jp.startJVM(jp.getDefaultJVMPath(), hanlppath)  # , "-Xms1g", "-Xmx1g")  # 启动JVM, Xmx1g分配1g内存

jp.JClass('com.hankcs.hanlp.HanLP$Config').ShowTermNature = False  # 关闭分词属性显示

HanLP = jp.JClass('com.hankcs.hanlp.HanLP') #普通分词模式

words = str(HanLP.segment(sentence)) #分词将结果转为str

words = re.sub('[反斜杠[反斜杠],\n]', ' ', words) # 这里注意实际程序是单\,在blog里会出问题,所以用反斜杠替代

words = words.split()

words = del_stopword(words)

...

jp.shutdownJVM() # 最后关闭java虚拟环境

使用的是HANLP的普通分词功能,另外需注意,hanlp.segment()不能直接输出或赋值给python,因为其是java环境中数据,所以只有转为str()后,再进行处理,否则会报错#A fatal error。(另外还有其他java与python数据对应问题,在这里没遇到,请参考其他)

 

词向量选用的是“Mixed-large综合”[6],其包括百度wiki百科、人民日报等,总共1293214个词。

 

Hanlp的中部份功能没法使用,例如精确分词CRF。另外,要先加载词向量再加载java虚拟环境。#A fatal error has been detected by the Java Runtime Environment

 

3,实验结果



 

(模型使用的是特征为tfidf的lsi模型, 参数:num_topics=3, 判断是否相似阀值为0.45,即大于0.45为true相似 )

 

同模型同参数下,jieba分词结



 

jiebaba分词未出现在词向量的约500多,有些词出现了好几次,而hanlp分词只有60几个未出现,且多数为名词,只出现过一次。

4,分析

在样本中,所有样本分词结果jieba比hanlp要多分出100个词左右。所以推测因hanlp分词细粒度大,分出词少,导致较少的共现词出现(也可能是hanlp分词精度更高,分出很多虚词被停止词表过滤造成),也就是说,lsi+tfidf模型对词细粒度大、分词少的分词器不友好,所以最后hanlp出错率更大。

jieba与hanlp都是很不错的分词器,结巴使用更方便。hanlp准确度要高一些(感觉),而且与文中提到的词向量相匹配。

(我免贵姓AI,jieba:我免/贵姓/AI,hanlp:我/免/贵姓/AI,实际:我/免贵/姓AI)

 

  • 大小: 16.2 KB
  • 大小: 12.6 KB
分享到:
评论

相关推荐

    Hanlp分词实现从网络片段中提取省份和城市

    在IT领域,实体提取是一项重要的自然语言处理任务,主要用于从文本中识别出具有特定意义的信息,如人名、地点、时间等。在这个场景中,我们关注的是如何利用Java语言和HanLP分词库来实现从网络片段中抽取省份和城市...

    Java中通过HanLP实现文本分词、提取关键词、聚类(工具资源+实例)

    HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法...

    基于HanLP分词和Bayes分类器实现的问答机器人.zip

    《基于HanLP分词和Bayes分类器实现的问答机器人》是一个典型的自然语言处理(NLP)项目,主要应用于Python编程环境下。这个课程设计旨在帮助学生掌握如何利用现代的NLP工具和技术构建一个智能问答系统。下面将详细...

    HanLP实现文本分词、提取关键词、聚类(工具资源+实例)

    HanLP是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法...

    lucene.NET 中文分词

    中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备...

    hanlp-1.7.2-release.zip

    在自然语言处理(NLP)领域,高效的分词工具是必不可少的。HanLP,全称High-performance Natural Language Processing,是由北京大学计算机科学技术研究所开发的一款多语种、高性能的自然语言处理工具包。本文将围绕...

    hanlp在Python环境中的安装

    HanLP,全称“Harvard NLP Library”,是由Java编写的,提供了丰富的自然语言处理功能,包括分词、词性标注、命名实体识别、依存句法分析等。它由北京大学的周明教授团队研发,旨在提升自然语言处理技术在实际生产...

    elasticsearch的hanlp中文插件

    为了更好地支持中文处理,社区开发了各种中文分词插件,其中HanLP(全称:High-performance Natural Language Processing)是来自科大讯飞的一款高性能的自然语言处理工具包,它在中文分词、词性标注、命名实体识别...

    hanlp1.7jar包下载

    汉语文本处理库HanLP是Java开发的一个高效、易用的自然语言处理工具包,主要用于中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等任务。标题“hanlp1.7jar包下载”表明我们要讨论的是HanLP的1.7版本...

    中文分词java实现

    中文分词是自然语言处理(NLP)领域中的基础任务,尤其在中文信息处理中扮演着至关重要的角色。Java作为一种广泛使用的编程语言,提供了多种实现中文分词的库和工具,使得开发者能够轻松地处理中文文本。 首先,...

    hanlp 1.7.7.zip

    在Java开发领域,自然语言处理(NLP)是一项重要的技术,而HanLP(由哈工大讯飞联合创始人韩松开发)作为一款优秀的开源Java NLP库,为开发者提供了丰富的中文处理功能,如分词、词性标注、命名实体识别等。...

    C# .Net 写的中文分词

    在IT行业中,中文分词是自然语言处理(NLP)领域的一个重要环节,尤其是在文本分析、搜索引擎优化、情感分析等领域有着广泛的应用。本项目聚焦于使用C# .Net框架实现中文分词,这是一种针对中文文本进行预处理的关键...

    eclipse上配置hanlp完整包 已安装成功

    HanLP是一款强大的自然语言处理工具,由Java编写,适用于中文分词、词性标注、命名实体识别、依存句法分析等多种任务。以下是对配置过程的详细步骤及知识点的解析: 首先,你需要下载HanLP的完整包,其中包含了`...

    下载hanlp.jar包和data数据

    汉语言处理库(HanLP)是由北京大学计算机科学技术研究所开发的一款开源的自然语言处理工具包,主要应用于中文分词、词性标注、命名实体识别、依存句法分析等多个任务。在本主题中,我们将深入探讨如何下载并使用...

    Lucene中文分词器组件

    3. **HanLP**:由百度开源的自然语言处理库,不仅提供分词功能,还包含词性标注、命名实体识别等高级功能。其分词效果优秀,但相对于其他分词器,可能会有更高的资源消耗。 4. **jieba分词**:jieba是一款流行的...

    Android 中文分词 2.2以上真机测试成功!

    中文分词是自然语言处理的基础步骤,因为中文没有像英文那样的空格来划分单词,所以需要通过特定算法将连续的汉字序列切分成有意义的词语。例如,“我爱你”会被分词为“我”,“爱”,“你”。在Android系统中,...

    PHP实例开发源码—HTTPCWS PHP中文分词扩展.zip

    在PHP编程领域,分词是处理中文文本时的一项关键技术,尤其在搜索引擎、数据分析或自然语言处理等场景下。HTTPCWS PHP中文分词扩展是一个专为PHP设计的库,用于高效地对中文文本进行分词处理。这个压缩包包含了一个...

    java文本相似度对比

    接着,我们来看看**HanLP**,这是一款由福州汉鼎信息科技有限公司开发的开源中文自然语言处理库。HanLP提供了一系列强大的NLP功能,包括分词、词性标注、命名实体识别、依存句法分析等。在文本相似度对比中,分词是...

    hanlp的模型输出(中文)的详细内容分析

    汉语文本处理是人工智能领域中的一个重要分支,其中HanLP是一个广泛应用的开源自然语言处理库,由北京大学计算机科学技术研究所开发。HanLP提供了丰富的模型和功能,包括分词、词性标注、命名实体识别、依存句法分析...

    C# 中文分词 词性标注

    在IT领域,中文分词和词性标注是自然语言处理(NLP)的重要组成部分,尤其在文本分析、信息检索、机器翻译等领域具有广泛的应用。在C#编程环境下,开发这样的功能可以帮助开发者处理和理解中文文本数据。下面我们将...

Global site tag (gtag.js) - Google Analytics