学习内容

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

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

实验:使用HanLP分词[1][2]

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分词结果

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

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

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

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

文章来源于gladosAI的博客

转载于:https://www.cnblogs.com/tiantiankong/p/10280676.html

NLP学习------HanLP使用实验相关推荐

  1. python 分词nlp,学习NLP的第四天——hanlp字典分词的Python实现,4,HanLP,词典

    通过<自然语言处理入门>(何晗)的第2章来学习HanLP词典分词的Python实现.这里主要记录我在学习过程中整理的知识.调试的代码和心得理解,以供其他学习的朋友参考. 首先,我们导入Ha ...

  2. 曝!BAT大厂NLP学习进阶之法~

    "语言理解是人工智能领域皇冠上的明珠." --比尔盖茨 自然语言处理是一门综合性的学问,它远远不止机器学习算法.相比图像或语音,文本的变化更加复杂,例如从预处理来看,NLP 就要求 ...

  3. 记录重要的NLP学习资源链接

    整理一些NLP学习资源(不止NLP,本人主要关注NLP),如果有更好的,欢迎分享_ NLP 中文自然语言处理相关资料 https://github.com/crownpku/Awesome-Chine ...

  4. NLP学习难在哪里?这份最全NLP学习路线图帮你解决难题!

    作为一名人工智能之自然语言处理的技术小享,最常被问到的莫过于「如何入门NLP」了? 今天小享就整理了保姆级NLP学习路线图(思维导图),非常的全面和清晰,分享给大家. 希望这个指南会伴随你们一起成长哟 ...

  5. NLP学习实践天池新人赛打卡第一天

    NLP学习实践天池新人赛打卡第一天 Task1 赛题理解 学习目标 赛题数据 数据标签 评测指标 数据读取 解题思路 Task1 赛题理解 赛题名称:零基础入门NLP之新闻文本分类 赛题目标:通过这道 ...

  6. NLP学习-Task 3: 子词模型Subword Models

    NLP学习 更新流程↓ Task 1: 简介和词向量Word Vectors Task 2: 词向量和词义Word Senses Task 3: 子词模型Subword Models Task 4: ...

  7. NLP学习————实现一个BERT(简记)

    NLP学习-实现一个BERT(简记) 本文主要内容是介绍了BERT的代码结构.具体实现与原理,对BERT的一些简记 内容包括以下几个部分: BERT Tokenization 分词模型(BertTok ...

  8. 天池NLP学习赛(1)赛题理解

    天池NLP学习赛(1)赛题理解 题目 题目类型:新闻文本分类(字符识别问题)链接 数据: 赛题数据为新闻文本,并按照字符级别进行匿名处理,数字编码形式呈现.整合划分出14个候选分类类别:财经.彩票.房 ...

  9. nlp学习--专家系统总结-专家系统基础

    nlp学习–专家系统总结-专家系统基础 专家系统发展 : 人工智能系统的四个时代:第一个时代50年代人工智能的兴起和冷落:第二个时代60年代末到70年代初 专家系统的出现 人工智能出现了一次高潮:第三 ...

  10. 从文章「A Field Guide to Federated Optimization」整理的联邦学习科研入门实验

    A Field Guide to Federated Optimization 本文是我从文章「A Field Guide to Federated Optimization」整理的联邦学习科研入门实 ...

最新文章

  1. windows/linux计算文件 MD5值
  2. dropblock torch
  3. Android7.0适配方案
  4. MTM:matlab实现1
  5. ih5长图如何滑动_长图怎么一键截取?这样做很简单
  6. POJ 2808 校门外的树
  7. Spring MVC控制器的单元测试:配置
  8. bd3.1 Python 高级
  9. 查看vnc端口_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
  10. bzoj 1029 贪心
  11. 计算机存储信息的单位
  12. 用Java实现文本编辑器
  13. Linux快捷键的使用
  14. java便利店库存管理系统_便利店库存管理系统可以做什么?
  15. 洛雪音乐助手lx music desktop 1.2.2正式版
  16. Yate for mac(标记和管理音频文件工具)
  17. java刮刮乐_大众学开发——59秒学习编写刮刮乐游戏
  18. 【无标题】学习浩辰CAD软件的心得
  19. PermissionError: [Errno 13] Permission denied: ‘label.csv‘
  20. Pandoc下载安装教程

热门文章

  1. tcl之变量-简单变量
  2. Django中Settings中Templates的路径设置
  3. 粉丝关注数据库表的设计
  4. 【语言学习】Java
  5. Cesium Terrain Builder 非压缩瓦片
  6. MySQL 命令行帮助的使用
  7. 短信平台建设方案_五大垂直行业工业互联网平台建设方案
  8. java byte转十六进制_Python 十六进制hexbytesstr之间的转换和Bcc码的生成
  9. 西安后宰门小学_【云端论坛】走向未来的墙中老校 ——后宰门小学“名校+”教育集团云论坛精彩绽放...
  10. git rm -r --cached_程序员一定能用到的git命令:分支+暂存+回退+标签+创建项目仓库...