文本分析

用Python做中文分词与词云制作

岁酱吖の 提交于 2020-04-06 19:14:51
作者:梅昊铭 1. 导读 在大数据时代,我们经常在媒体或者网站上看到各种各样的信息图。词云是文本大数据可视化的重要方式,可以将大段文本中的关键语句和词汇高亮展示。对于中文文本的可视化,我们需要先将中文文本进行分词;然后再将文本中的关键词做词云展示。本文将教大家如何使用Python来做中文分词并制作词云,欢迎大家跟着教程一步步实现。 项目地址: https://momodel.cn/workspace/5e77afb7a8a7dc6753f582b9?type=app 2. 中文分词 2.1 分词入门 所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。而英文词与词自带空格作为分隔符,相比于中文分词要简单。这里我们以中文分词为例来介绍。Python 为我们提供了 Jieba 库进行分词,接下来如何使用 Jieba 库进行中午呢分词。 import jieba # 文本数据 text = "MomodelAI是一个支持在线数据分析和AI建模的平台。" result = jieba.cut(text) # 将切分好的文本用" "分开 print("分词结果: " + " ".join(result)) ''' 分词结果: MomodelAI 是 一个 支持 在线 数据分析 和 AI 建模 的 平台 。 ''' 2.2 特殊名词

文本处理工具和正则表达式

三世轮回 提交于 2020-04-06 09:46:03
1 文本编辑工具之神VIM 1.1 vi和vim简介 在Linux中我们经常编辑修改文本文件,即由ASCII,Unicode或其他编码的纯文字的文件。 文本编辑种类: 全屏编辑器:nano(字符工具),gedit(图形化工具),vi,vim 行编辑器:sed vi Visual editor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大 vim VIsual editor iMproved,和vi使用方法一致,但功能更为强大。 1.2 使用vim初步 1.2.1 vim命令格式 vim [OPTION]... FILE... 常用选项 +# 打开文件后,让光标处于第#行的行首,+默认行尾 +/PATTERN 让光标处于第一个被PATTERN匹配到的行行首 -b file 二进制方式打开文件 -d file1 file2... 比较多个文件,相当于vimdiff -m file 只读打开文件 -e file 直接进入ex模式,相当于执行ex file 说明: 如果该文件存在,文件被打开并显示内容 如果该文件不存在,当编辑后第一次存盘时创建它 1.2.2 三种主要模式和转换 vim是一个模式编辑器,击键行为是依赖于vim的“模式” 三种常见模式: 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本 插入(Insert)或编辑模式

Python数据预处理:机器学习、人工智能通用技术(1)

僤鯓⒐⒋嵵緔 提交于 2020-04-06 04:54:40
Python数据预处理:机器学习、人工智能通用技术 白宁超 2018年12月24日17:28:26 摘要: 大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题。原始数据存在大量不完整、不一致、有异常的数据,严重影响到数据建模的执行效率,甚至可能导致模型结果的偏差,因此要数据预处。数据预处理主要是将原始数据经过文本抽取、数据清理、数据集成、数据处理、数据变换、数据降维等处理后,不仅提高了数据质量,而且更好的提升算法模型性能。数据预处理在数据挖掘、自然语言处理、机器学习、深度学习算法中起着重要的作用。( 本文原创,转载必须注明出处 .) 1 什么是数据预处理 数据预处理简而言之就是将 原始数据 装进一个 预处理的黑匣子 之后,产生出 高质量数据 用来适应相关技术或者算法模型。为了大家更明确的了解数据预处理,我们举个新闻分类的例子: 将原始的数据直接进行分类模型训练,分类器准确率和召回率都比较低。因为我们原始数据存在很多干扰项,比如 的 , 是 等这些所谓停用词特征对分类起的作用不大,很难达到工程应用。 我们将原始数据放假预处理黑匣子后,会自动过滤掉干扰数据,并且还会按照规约的方法体现每个词特征的重要性,然后将词特征压缩变换在数值型矩阵中,再通过分类器就会取得不错的效果,可以进行工程应用。 总结 :数据预处理前的数据存在不完整、偏态、噪声、特征比重、特征维度、缺失值

大厂在用的Python反爬虫手段,破了它!

只谈情不闲聊 提交于 2020-04-02 20:20:04
SVG 映射反爬虫 SVG 是用于描述二维矢量图形的一种图形格式。它基于 XML 描述图形,对图形进行放大或缩小操作都不会影响图形质量。矢量图形的这个特点使得它被广泛应用在 Web 网站中。 接下来我们要了解的反爬虫手段正是利用 SVG 实现的,这种反爬虫手段用矢量图形代替具体的文字,不会影响用户正常阅读,但爬虫程序却无法像读取文字那样获得 SVG 图形中的内容。由于 SVG 中的图形代表的也是一个个文字,所以在使用时必须在后端或前端将真实的文字与对应的 SVG 图形进行映射和替换,这种反爬虫手段被称为 SVG 映射反爬虫。 6.3.1 SVG 映射反爬虫绕过实战 示例 6:SVG 映射反爬虫示例。 网址: http://www.porters.vip/confusion/food.html 。 任务:爬取美食商家评价网站页面中的商家联系电话、店铺地址和评分数据,页面内容如图 6-15 所示。 图 6-15 示例 6 页面 在编写 Python 代码之前,我们需要确定目标数据的元素定位。在定位过程中,发现一个与以往不同的现象:有些数字在 HTML 代码中并不存在。例如口味的评分数据,其元素定位如图 6-16 所示。 图 6-16 评分数据中口味分数元素定位 根据页面显示内容,HTML 代码中应该是 8.7 才对,但实际上我们看到的却是: 1 < span class = "item

JavaScript—DOM编程核心.

此生再无相见时 提交于 2020-04-01 01:16:32
DOM Core常用部分: DOM方法 创建节点:createElement(),createTextNode() 复制节点:cloneNode() 插入节点:appendChild(),insertBefore 删除节点:removeChild() 替换节点:replaceChild() 查找节点:getAttribute(),getElementById(),getElementsByTagName,hasChildNodes 设置节点属性:setAttribute() DOM属性 节点的属性:nodeName,nodeType,nodeValue 遍历节点树:childNodes,firstChild,lastChild,nextSibling,parentNode,previousSibling 下面给出这部分的简要用法,做个索引似帮助文档 1.document.createElement(“节点名”):新建一个节点 2.document.createTextNode(“文本内容”):新建一个文本节点 3.节点.cloneNode(true|false):复制该节点,参数true则连同子结点一同复制,false则不复制子结点 4.节点.appendChild(子节点):在节点下添加子结点 5.父节点.insertBefore(新节点,参照点)

会议记录

倖福魔咒の 提交于 2020-03-31 21:10:01
知识圈 APP 项目会议纪要 时 间: 2020.03.31,下午4:00 地 点:在线 参加人员: 洛杉矶湖人队 ——组长:赵世元 组员:薛秋香、杨青 纪要内容 : N: (1)原创用户对文章抄袭问题的反感 (2)低质量文章造成用户不好的体验 (3)增强用户提问问题的针对性 (4)用户回答问题的积极性 A: (1)使用机器学习的文本分析算法,对发布的文章进行分析 (2)划分知识圈子,细分到学院甚至专业 (3)引入专用虚拟货币打赏及收入功能 B: ( 1 )实现知识共享 ( 2 )解决文章抄袭及文不切题的问题 ( 3 )提高用户回答问题的积极性 C: 目前没有一款针对具体学校具体专业的软件,本校直系师兄弟回答的问题更有针对性 D: 通过小范围逐渐扩大用户的模式,先从各个专业找一些试用用户进行发帖与提问,然后让该批用户自主进行推广。 来源: https://www.cnblogs.com/xueqiuxiang/p/12608107.html

使用scikit-learn进行文本分类

拈花ヽ惹草 提交于 2020-03-23 18:45:59
3 月,跳不动了?>>> scikit-learn简介 scikit-learn 是Python最为流行的一个机器学习库。它具有如下吸引人的特点: 简单、高效且异常丰富的数据挖掘/数据分析算法实现; 基于NumPy,SciPy,以及matplotlib,从数据探索性分析,数据可视化到算法实现,整个过程一体化实现; 开源,有非常丰富的学习文档。 尤其是当我们要进行多种算法的效果对比评价,这种一体化实现的优势就更加能够凸显出来了。 既然 scikit-learn 模块如此重要,废话不多说,下面马上开搞! 项目组织及文件加载 项目组织 工作路径:`D:\my_python_workfile\Thesis\sklearn_exercise` |--data:用于存放数据 |--20news-bydate:练习用数据集 |--20news-bydate-train:训练集 |--20news-bydate-test:测试集 文件加载 假设我们需要加载的数据,组织结构如下: container_folder/ category_1_folder/ file_1.txt file_2.txt ... file_42.txt category_2_folder/ file_43.txt file_44.txt ... 可以使用以下函数进行数据的加载: sklearn.datasets.load

词袋模型bow和词向量模型word2vec

只谈情不闲聊 提交于 2020-03-21 16:58:38
在自然语言处理和文本分析的问题中,词袋(Bag of Words, BOW)和词向量(Word Embedding)是两种最常用的模型。更准确地说,词向量只能表征单个词,如果要表示文本,需要做一些额外的处理。下面就简单聊一下两种模型的应用。 所谓BOW,就是将文本/Query看作是一系列词的集合。由于词很多,所以咱们就用袋子把它们装起来,简称词袋。至于为什么用袋子而不用筐(basket)或者桶(bucket),这咱就不知道了。举个例子: 文本1:苏宁易购/是/国内/著名/的/B2C/电商/之一 这是一个短文本。“/”作为词与词之间的分割。从中我们可以看到这个文本包含“苏宁易购”,“B2C”,“电商”等词。换句话说,该文本的的词袋由“苏宁易购”,“电商”等词构成。就像这样: 但计算机不认识字,只认识数字,那在计算机中怎么表示词袋模型呢?其实很简单,给每个词一个位置/索引就可以了。例如,我们令“苏宁易购”的索引为0,“电商”的索引为1,其他以此类推。则该文本的词袋就变成了: 是的,词袋变成了一串数字的(索引)的集合。这样计算机就能读懂了。如果用程序来描述的话,就会像:Set<int>(0,1,2…)。当然,刚才的例子中像“苏宁易购”等词只出现了一次,如果出现多次,可能就需要支持重复元素的容器了,如Java/C++中的MultiSet。 可是,在实际的应用中(如:文本的相似度计算)

WordCount——文本计数器的GUI实现(python)

萝らか妹 提交于 2020-03-19 14:15:12
github-> https://github.com/foolishkylin/WordCount WordCount 项目需求 ​ WordCount是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。WordCount须有清晰直观的GUI界面。 规则是: ​ 空行:本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。 ​ 代码行:本行包括多于一个字符的代码。 ​ 注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释:} //注释 ​ 在这种情况下,这一行属于注释行。 对于一个或多个文件,须统计*.c 文件的代码行数、空行数、注释行数。 PSP PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 5 4 · Estimate · 估计这个任务需要多少 5 4 Development 开发 465 432 · Analysis · 需求分析 (包括学习新技术) 20 16 · Design Spec · 生成设计文档 20 12 · Design Review · 设计复审

卷积神经网络处理文本序列

强颜欢笑 提交于 2020-03-19 11:22:22
3 月,跳不动了?>>> 我们之前讨论了卷积神经网络,从局部可以提取出特征,用于小猫小狗的图片识别处理,非常有效;也讨论了循环神经网络进行文本的处理,因为文本的顺序是顺序相关的。基于以上特点,我们把时间或者说文本的前后看做一个维度,那一段文本就是一个一维空间,相比图片的二维空间,变得更加简单了,那卷积神经网络是否可以处理这样的情况呢? 先亮出结论,答案是肯定的。图片是二维的数据,文本是一维的数据,因此我们可以对训练的神经网络进行简化,让网络去提取一维的特征。既然如此,一维神经网络与二维的神经网络是类似的,因此我们可以把二维卷积神经网络的特性迁移到一维的卷积神经网络上。 我们在讨论神经网络的时候,我们知道了卷积神经网络具有平移不变性,非常好的特性,这个特性可以抓住问题的关键,识别出特殊的特征。在一维的卷积神经网络(用到的方法:Conv1D)中,一小段文本所具有的特性,进行学习后,在文本的其他位置仍然可以被识别出来。可以这样理解,一句话在开头说与在结束的时候说,表达的感情应该是一致的,效果也是一样的(绝大多数情况下),这就是文本的平移不变性。 同样的,在处理图片的时候,为了防止数据量过大,防止过拟合,我们需要进行池化的操作,在一维的神经网络中,我们也需要进行池化操作(用到的方法:MaxPooling1D)。 说到这里,大概的主要内容我们就说完了,比较简单,我们该举一个例子了