基于NLP处理中国企业家文档

1. 实验环境

本次技术采用Python编程,Python可以从官网https://www.python.org/下载,选出适合用户操作系统的二进制发行版后,按提示一步一步进行安装。

一般而言,在用Python做数据分析与挖掘时,选择Anaconda。Anaconda是一个用Python做数据分析与挖掘的环境,包含了数百个最主流的数据科学程序包,使得用户能够快速简便的安装、运行和升级数据分析与挖掘环境。其架构如下图所示。可以从官网https://www.anaconda.com/下载并安装。

Anaconda环境中默认包含了Jupyter组件。Jupyter是一个开源的网页应用,用户可以创建和分享包含代码、公式、可视化图表和叙述性文字的文档。双击启动Jupyter,可以在文本框中输入Python代码进行交互式编程

2. 实验程序包的安装以及应用

在Anaconda环境中安装Python程序包非常方便。在联网情况下,在控制台键入命令pip install <程序包名>。

需要使用Python程序包时,用户键入命令import <程序包名> as <别名>。

本次进行文档数据处理时主要采用的程序包有:

  • BeautifulSoup4,该程序包是一个可以从HTML或XML文件中提取数据的Python库。它能够通过喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。

  • jieba,对中文语料进行分词处理

  • gensim,gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口,在本次文档数据处理就应用到了word2vec进行词向量的获取。

  • pandas,这款基于NumPy 的一种工具,该工具是为了解决本次数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。另外,pandas提供了大量能使我们快速便捷地处理数据的函数和方法,是款强大而高效的数据分析工具包之一。

  • codecs,该模块进行自然语言编码转换。字符的编码是按照某种规则在单字节字符和多字节字符之间进行转换的某种方法。在Python中,codecs模块提供了实现这些规则的方法,通过模块公开的方法能方便地获取某种编码方式的工厂函数以及StreamReader、StreamWriter和StreamReaderWriter类。

  • math,该模块提供了一系列函数完成特殊的数学运算。

  • Matplotlib,Python的2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

  • Kmeans,该程序包可以用于文本的聚类。

3. 实验过程

在本次的NLP对中文传记文档进行处理时,实验过程如下:

  1. 对30位企业家的传记、期刊以及网页文献进行获取。在进行网页文献获取时,在凤凰网,澎湃新闻,腾讯财经,新浪财经和网易财经这五大新闻网址分别对30个人的资料、文献报道进行爬取,主要采用的框架为:BS4,即BeautifulSoup4。

  2. 对汇总的传记进行jieba分词处理并去停用词去重。在进行分词时,结巴支持三种分词模式:精确模式,试图将句子最精确的切开;全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。在本次试验中,分词采用的精确模式,停用词采用哈工大停用词表,处理后生成的传记文档作为最终的语料词典。

  3. 使用word2Vec技术,对语料词典获取词向量。

  4. 获取每个企业家的特征词词向量处理,本步骤采用的仍旧为gensim模块提供的word2vec技术。

  5. 用余弦相似度计算获取到的特征词词向量和传记语料词典的相关度,以获取语料库中和特征词相关相似的词,最终得到每个企业家特征词的扩展词。

  6. 对每个企业家的扩展词进行筛选,过滤,抽取7136个特征词以统计词频,并再次对总的传记以及每个企业家的传记进行分词去停用词,此次处理不需要进行去重,编码以获取每个特征词在总的和每个人的传记中分别出现的次数,运行代码,得到特征词和特征词词频的.txt文档。

  7. 对词频较高的特征词进行聚类分析,本次实验选用的K-means聚类算法,并使用matplotlib绘图,算法聚类效果图是散点图,为了更直观的看到聚类效果,使用tagul可视化,更加直观、具体。

4. 实验总结

在进行编程实现各种需求时,遇到以下了各种问题:

  • 传记汇总时,文档编码问题。由于python中默认的编码是Ascii,如果直接使用open方法得到文件对象然后进行文件的读写,都将无法使用包含中文字符(以及其他非ascii码字符),因此分词前使用文档编码格式要进行统一,转换为utf-8编码。否则提醒编码解码错误在进行文档处理时遇到了问题,提示的错误是:

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 5394-5395: invalid continuation byte

谷歌查询了一下,原来是文件中包含非utf-8字符,又用iconv处理了一下这个问题,这样基本上就没问题了,命令码如下:

iconv -c -t UTF-8 < file > file.utf-8

  • 编程实现对汇总后的传记进行去重问题。生成新的xxxzhuanji.txt文档,去重尝试了很多种方法,最有效而简洁的方式,就是使用列表进行去重,如下:
    seg_article = list(set(seg_article))

  • 特征词获取词向量生成新的tzcvector.txt之前,直接对文档特征词进行处理,程序会报错,因此特征词文档需要预处理,否则Excel中的特征词语c复制到.txt文档,出现空格以及编码问题,需要转化为行,写入文档时将空格和换行,才能获取特征词词向量,生成新的tezhengxi.txt文档。

    list.append(line_clist[0].strip('\r\n'))
    w.write(line_clist[0].strip('\r\n')+ ' ')

  • 计算传记词向量和特征词向量之间相关度时的方法选择问题。在计算相关度有多种方法,如:pearman correlation,wordsim-240,余弦相似度等。最终选取了最为常用的余弦相似值进行计算,生成了新扩充的特征词的.txt文档。

  • 运行结果、扩充词和平均相似度的保存问题。为将运行结果统一保存在newcos-num.txt文档,方便于观察,保证可信度。

  • 数据量过大,程序运行时间较长的优化问题。在编程实现词频统计时,由于不仅要在每个人物的传记资料和文献中,获取7138个特征词的词频,还要在三十位企业家的传记资料和文献汇总中获取词频,编程统计汇总的文献总字数为8239485,内码存储8239485个汉字,需要 1647970个字节,对于有限的计算机配置来说,数据量可以说是相对较大的,所以采用将汇总资料和特征词取出来放进列表中进行读取的方式,速度和效率有了显著的提升。
    此外,在总的传记文献资料生成词向量时,由于数据量过大,第一次运行将近4个小时,三十个人的特征词向量的获取,运行了将近三天两夜,后来想要尝试使用GPU集群或者多线程的方式,但是突然想起了pandas这个对大数据进行处理的程序包,尝试优化了代码,运行速度果然提升了特别多。

  • 文档的合并问题。由于本次研究的是三十位企业家的传记文献,不免会有进行汇总,尝试使用了批处理,批处理时除了文档编码的转换,还要进行空格换行的去除。

  • 聚类结果的可视化问题。在进行文本聚类时,采用的时scikit-learn中的k-means聚类算法,初始时将k设为5,最后将聚类结果可以打印出来,绘制图像时生成的散点图,不是特别直观,尝试采用了tagul可视化工具,以词云的方式展现,就比较直观,具体且美观。

5.实验心得

通过这次对三十位企业家的传记文献的爬取,编码格式处理,批处理汇总,传记文献词向量的获取,特征词向量的获取,向量间余弦相似度的计算,特征词的扩展,词频统计和文本聚类。感触最深的除了编码格式,就是数据处理的时间过长这个问题了,不过经过尝试,还是找到了相应的处理程序包,大大优化了程序,本次除了NLP中文文本处理技术的问题有了些许了解之外,对30位企业家的特征词的获取聚类过程,也了解了他们能成功的关键人格特征,希望自己也努力,向这些成功大佬看齐,不断提升自己的专业技能和人格魅力。

基于NLP处理企业家传记文档相关推荐

  1. 基于 TensorFlow 在手机端实现文档检测

    手机端运行卷积神经网络的一次实践 - 基于 TensorFlow 和 OpenCV 实现文档检测功能 1. 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上 ...

  2. java改写模式_Java基于状态模式实现的文档编辑模式切换功能实例

    本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 ...

  3. Java支持latex,基于Java和LaTeX的文档自动生成技术研究

    基于Java和 LaTeX 的文档 自动生成技术研究 ◆尚宝欣 徐 屹 (东北电力大学理学院,吉林 长春 132012) [摘 要]讨论了结合Java与LaTex 自动生成 PDF文档的方法.针 展名 ...

  4. 基于facenet人脸识别设计文档

    基于facenet人脸识别设计文档 一.概述 在Ubuntu系统上,创建人脸库搭建基于facenet的人脸识别库,本文采用Python从百度下载明星照片,通过facenet的检测对齐人脸函数制作人脸库 ...

  5. 论文阅读|基于领域知识图谱的多文档摘要生成与应用

    论文地址:基于领域知识图谱的多文档摘要生成与应用 先验知识 1.多文档摘要技术: (理解:类似于每篇文章的摘要.关键词,方便通过标签筛选是否是你需要的内容) 利用计算机将同一主题下或者不同主题下的多篇 ...

  6. XDoc 基于Java注释生成API文档

    XDoc 基于Java注释生成API文档 <!--加入maven依赖--> <dependency><groupId>com.github.treeleafj< ...

  7. 基于java的汽车管理系统+文档

    博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 基于java的汽车管理系统+文档 视频效果 https://www.bilibil ...

  8. 计算机软件专业与甲骨文关系,基于本体的甲骨文专业文档语义标注方法-计算机应用与软件.PDF...

    第30卷第10期 计算机应用与软件 Vol30No.10 2013年10月 ComputerApplicationsandSoftware Oct.2013 基于本体的甲骨文专业文档语义标注方法 吴 ...

  9. 基于 apidoc 生成在线接口文档 (实时更新)(linux系统)

    基于 apidoc 生成在线接口文档 (实时更新)(linux系统) 动态加载,热部署 背景: 规范开发人员的接口文档 文档统一管理,防止本地文档版本不统一 远程部署,保证文档的统一性 主要还是解决, ...

最新文章

  1. android.util.AndroidRuntimeException: requestFeature() must be called before adding content
  2. Two Sum [easy] (Python)
  3. springMVC如何接收和发送json数据对象
  4. java 枚举类 enum
  5. php成绩查询系统的学习心得_PHP学习心得与体会
  6. Linux Android 常用shell命令汇总 不断更新
  7. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令
  8. 前端图片有时候能显示有时候不显示_web前端基础教程:两种数据存储思路
  9. 9.5 LSMW程序创建操作手册 第12 13 14步
  10. 【零基础】计算机网络技术
  11. snmp v3的安全配置 snmp认证与加密配置(53)
  12. ES6--Let 和 const 命令
  13. Python模拟智能开关设备MQTT接入阿里云物联网平台 - PyCharm paho.mqtt
  14. 《算法问题实战策略》-chaper21-树的实现和遍历
  15. 最简单的视音频播放示例2:GDI播放YUV, RGB
  16. 数据、运营相关试题(二)【牛客网:京东2019春招产品运营类试卷】
  17. 用C语言构造康托集,洛谷——P1014 Cantor表
  18. 怎么让上下两排对齐_《excel表中怎么使同一格内的上下两行对齐》 excel两表格数据对齐...
  19. IT服务管理指标体系与报表体系
  20. Vue Devtools不显示Components

热门文章

  1. linux docer 安装redis
  2. 上海宝付高谈保险扣费如何追回
  3. qq_seconds.html,qq英语名字汇总82句
  4. Android手机投影到电脑屏幕的神兵利器
  5. amcharts教程
  6. 金牛座TGAM脑电波传感器模块
  7. DTL语言学习(四){% spaceless %}、{% autospace %}和{% verbatim %}标签
  8. 微软认知服务应用秘籍 – 君子动口不动手
  9. java--集合(1)--黑马程序员
  10. 聊天类APP功能测试总结