文本分类

python正则表达式

心不动则不痛 提交于 2019-11-27 10:16:23
1. 正则表达式基础 1.1. 简单介绍 正 则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方 法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用 担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。 下图列出了Python支持的正则表达式元字符和语法: 1.2. 数量词的贪婪模式与非贪婪模式 正 则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪 的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量 词"ab*?",将找到"a"。 1.3. 反斜杠的困扰 与大多数编程语言相同

Python 文本相似度和聚类

自古美人都是妖i 提交于 2019-11-27 08:16:54
Python 文本相似度和聚类 文本数据是非结构化的和高噪声的。在执行文本分类时,拥有标记合理的训练数据和有监督学习大有裨益。但是,文档聚类是一个无监督的学习过程,将尝试通过让机器学习各种各样的文本文档及其特征、相似度以及它们之间的差异,来讲文本 文档分割和分类为单独的类别。这使得文档聚类更具挑战性,也更有意思。考虑一个设计各种不同的概念和想法的文档语料库。人类以这样的方式将它们联系在一起,即使用过去学习的各种知识,并应用它们来区分不同的文档。例如,相对于句子 “Python is an excellent programming language (Python 是一种优秀的变成语言)”,句子 “The fox is smarter than the dog (狐狸比狗更聪明)” 和 “The fox is faster than the dog (狐狸比狗要快)” 更为相似。可以轻松并直观地找出 Python、fox(狐狸)、dog(狗)、programming (编程) 等特定的关键短语,这有助于确定哪些句子或文档更相似。那么,可以通过编程来实现以上过程么?下面重点介绍与文本相似度、距离度量和无监督 ML 算法相关的几个概念,以回答以下问题: 如何度量文档之间的相似度? 如何使用距离测量值来找出最相关的文档? 什么时候距离测量值称为度量? 如何聚类或组合类似的文档?

1.什么是文本分类

邮差的信 提交于 2019-11-27 08:16:09
1.什么是文本分类 在定义文本分类之前,需要理解文本数据的范围,以及分类的真实含义。这里的文本数据可以是短语、句子或者包含文本段落的整篇文档等任何形式,这些数据可以从语料库、博客或互联网的任何地方获得。文本分类也经常成为文档分类,文档这个词概括了任何形式的文本内容。文档这个词可以定义为思想或事件的一些具体的表示,这些标识可以是书面、语言记录、会话或演讲等形式。这里,使用文档这个词来表示文本数据,例如英语中的句子或段落。 文本分类也称为文本归类,这里使用文本分类这个词有两个原因。第一个原因是要分类文档,文本分类和文本归类具有相同的性质。第二个原因是将用分类或有监督机器学习方法来分类或归类文档。文本分类基友很多方法。将会集中精力解释用于分类的有监督方法。分类过程不只局限于文本,还广泛用于其他领域,包括科学、健康、天气预测和技术等。 假设有一个预定义的类集合,文本或文档分类是将文档指定到一个或多个分类或类型的过程。这里的文档就是文本文档,每个文档包含单词组成的句子或段落。一个文本分类系统基于文档的内置属性,能够成功的将每个文档分类到正确的类别中。数学上,可以做如下定义:假设 d 是文档 D 的描述或属性, d € D, 我们基友一组预先定义的类别或分类 C = {c 1 ,c 2 ,c 3 ,...,c n }。真实的文档 D 可能拥有很多内在的属性,这使得 D 称为高维空间的一个实体

3.理解文本语句和结构

孤街醉人 提交于 2019-11-27 08:16:03
理解文本语句和结构 下面会介绍和实现一些用于理解文本语法和结构的概念和技术。这些算法在 NLP 中非常有用,它通常在文本处理和标准化之后执行。主要关注一下技术: 词性(POS)标签。 浅层分析。 基于依存关系的解析。 基于成分结构的解析。 文章的作者针对读者是文本分析实践人员,可以执行并住处在实际问题中使用技术和算法的最佳解决方案。所以,下面将介绍利用现有库(如 nltk 和 spacy)来实现和执行一些技术的最佳方法。此外由于许多读者可能对技术的内部构建感兴趣,并且可能会尝试自己实现部分技术,也会介绍如何做到这一点。请记住,主要关注的是以实际的例子来研究实现概念的方法,而不是重写方法。 安装必要的依赖项 下面是所需要的依赖库: nltk 库 spacy 库 pattern 库 斯坦福分析器(Stanford parser) Graphviz 及必要库。 如果觉得 nltk 安装包可能依赖的过多,及其繁琐的下载,可执行下面代码全部现在: In [ 94 ]: import nltk In [ 95 ]: nltk.download( "all" , halt_on_error = False ) 安装 pattern 库,请执行: $ pip install pattern 下载并安装及其必要的依赖项。 对于 spacy 库,需要先安装软件包,然后单独安装及其依赖项(也称为语言模型

2.自动文本分类

旧城冷巷雨未停 提交于 2019-11-27 08:15:53
2.自动文本分类 现在对于文本分类的定义和范围有所了解。当提到 “文本分类系统” 可以将文本文件划分到它们代表的类或类别时,也从该概念和数学上对文本分类进行了正式的定义。假设几个人通过浏览每个文本并进行分类完成文本分类任务,那么他们就是我们所讨论的文档分类系统的一部分。然而,一旦文档数量超过百万并且需要快速进行分类处理时,该方法则不能很好地扩展。为了使文档分类的过程更加高效和快速,需要思考文本分类任务的自动化,这给我们带来了自动文本分类。 为实现自动文本分类,可以充分利用一些机器学习的技术和概念。这里主要有两类与解决该问题相关的技术: 有监督机器学习。 无监督机器学习。 此外,还有一些其他的机器学习算法家族,例如强化学习和半监督学习。接下来,更加升入地了解有监督机器学习和无监督机器学习算法,从机器学习方面了解如何利用这些算法进行文本文件分类。 无监督学习指的是不需要提前标注训练数据样本来建立模型的具体的机器学习技术或算法。通常,有一个数据点集合,它可以是文本或数字类型的,这取决于要解决的具体问题。我们通过名为 “特征提取” 的过程从每个数据中提取特征,然后将来自于每个数据的特征集合输入算法。尽力从这些数据中提取有意义的模式,例如使用聚类或基于主题模型的文本摘要技术对相似的数据进行分组。这项技术在文本分类中非常有用,也称为文档聚类,即我们仅仅依靠文本的特征、相似度和属性

NLP(十六)轻松上手文本分类

二次信任 提交于 2019-11-27 06:25:01
背景介绍   文本分类是NLP中的常见的重要任务之一,它的主要功能就是将输入的文本以及文本的类别训练出一个模型,使之具有一定的泛化能力,能够对新文本进行较好地预测。它的应用很广泛,在很多领域发挥着重要作用,例如垃圾邮件过滤、舆情分析以及新闻分类等。   现阶段的文本分类模型频出,种类繁多,花样百变,既有机器学习中的朴素贝叶斯模型、SVM等,也有深度学习中的各种模型,比如经典的CNN, RNN,以及它们的变形,如CNN-LSTM,还有各种高大上的Attention模型。   无疑,文本分类是一个相对比较成熟的任务,我们尽可以选择自己喜欢的模型来完成该任务。本文以kashgari-tf为例,它能够支持各种文本分类模型,比如BiLSTM,CNN_LSTM,AVCNN等,且对预训练模型,比如BERT的支持较好,它能让我们轻松地完成文本分类任务。   下面,让我们一起走进文本分类的世界,分分钟搞定text classification! 项目   首先,我们需要找一份数据作为例子。我们选择THUCNews,THUCNews是根据新浪新闻RSS订阅频道2005~2011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2.19 GB),均为UTF-8纯文本格式。我们在原始新浪新闻分类体系的基础上,从中选择10个候选分类类别:体育、娱乐、家居、房产、教育、时尚、时政、游戏、科技、财经。  

正则表达式30分钟教程(转)

泪湿孤枕 提交于 2019-11-27 04:19:25
来园子之前写的一篇 正则表达式教程 ,部分翻译自codeproject的 The 30 Minute Regex Tutorial 。 由于评论里有过长的URL,所以本页排版比较混乱,推荐你 到原处查看 ,看完了如果有问题,再到这里来提出. 一些要说的话: 如果你没有正则表达式的基础,请跟着教程“一步步来”。请不要大概地扫两眼就说看不懂——以这种态度我写成什么样你也看不懂。当我告诉你这是“30分钟入门教程”时,请不要试图在30秒内入门。 事实是,我身边有个才接触电脑,对操作都不是很熟练的人通过自己学习这篇教程,最后都能在文章采集系统中使用正则表达式完成任务。而且,他写的表达式中,还使用了“零宽断言”等“高级”技术。 所以,如果你能具体地说明你的问题,我很愿意帮助你。但是如果你概括地说看不懂,那不是我的问题。 欢迎转载,但请声明作者以及来源。 正则表达式30分钟入门教程 版本:v2.31 (2009-4-11) 作者: deerchao 转载请注明 来源 目录 跳过目录 本文目标 如何使用本教程 正则表达式到底是什么东西? 入门 测试正则表达式 元字符 字符转义 重复 字符类 分枝条件 反义 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 网上的资源及本文参考文献 更新纪录 本文目标

快速字符串匹配一: 看毛片算法(KMP)

喜欢而已 提交于 2019-11-27 02:57:47
前言 由于需要做一个快速匹配敏感关键词的服务,为了提供一个高效,准确,低能耗的关键词匹配服务,我进行了漫长的探索。这里把过程记录成系列博客,供大家参考。 在一开始,接收到快速敏感词匹配时,我就想到了 KMP 翻译过来叫“看毛片“的算法,因为大学的时候就学过它。听说到它的效率非常高。把原本字符串匹配效率 O(n*m) 缩短到了O(n+m),把✖️变成了➕,真是了不得。 每次我回顾 KMP 算法时,都会发现自己是个小白,或者每次回顾时,都发现上次因为回顾而写的总结居然是错的!所以为了学习快速字符串匹配,并再次温故 KMP ,所以我决定使用 KMP 算法试一试。如果以后在面试的时候,可以将KMP 完整的写出来,那岂不是很牛逼? 孔子说过的“温故而知新” 真的是很有道理的,经过这次回顾,我觉得是时候为此写一篇全新的博客了,因为这次的理解肯定是正确的! KMP 快是因为啥呢?是因为利用了 字符串 公共前后缀的特性,加快了匹配速度,但是转念一想,敏感关键词公共前后缀相等的情况可是很少的呀。那还有必要用KMP 吗? 当然有必要了,所谓技多不压身,了解掌握一种算法准没坏处,而且还可以比较 KMP 和 C# 中 String.Contains() 的效率,开拓自己的眼界。 KMP 以前在学习 KMP 的时候,我也看了网上很多博客,关于这个算法讲解的博客是非常多的,而且讲解的都很细致。奈何我每看过一次

xml文本空白处理

末鹿安然 提交于 2019-11-27 01:52:27
xml 的空白可以是下列字符中的任何一种: • 空格( ASCII 空格, 0x20 ) • 回车符( CR , 0x0D ) • 换行符( LF , 0x0A ) • 水平制表符( 0X09 ) 当你敲回车的时候是输入 0D0A 还是单 0A 是操作系统决定的, BIOS 不过告诉操作系统“有人按了回车键”而已, Windows 将它认做 0D0A , Unix 只需要 0A ,而 Mac 认做 0D 。 一般来说当一个程序处理文本的时候,他要做的第一件事是决定这个文本是使用哪种字符集来编码保存。 最标准的途径是检测文本最开头的几个字符。 下面是 xml 文件: <?xml version="1.0" encoding="utf-8" ?> <book> <name> C++ </name> <value> 123 </value> </book> 对应的用二进制编辑器查看到的效果。 通过 EF BB BF 得知他是用 unicode-8 进行编码的 , 当然记事本也支持没有前缀的编码方式,比如 ANSI 。如果缺少前缀,那记事本只能依靠上下文来猜测到底使用的是哪种编码方式。附注 1 。 另外通过图片可以知道这个文档有大量的回车,空格符。 同时空白可以按两种方式分类: 有效空白和多余空白。有效空白是由文档类型定义 (DTD) 定义的混合内容模型中的任何空白,element中的文本

HTML(二)

你。 提交于 2019-11-27 00:56:55
目录 头标签 meta标签 title标签 内联标签 图片标签 超链接a 块级标签详述 头标签 由<head> </head>包括起来的部分,具体包含<title>、<meta>、<link>、<style>,head标签的内容不会显示在网页上。 title:网业的标题,在浏览器标签页显示 meta: 提供页面的基本信息,包裹网页元信息,编码,浏览器版本,关键字,描述 link:定义文档与外部资源的关系 style:定义内部样式表与网页的关系 meta标签 元素可提供有关页面的元信息(mata-information),针对搜索引擎和更新频度的描述和关键词。 ​ meta标签的组成:一是http-equiv属性,二是name属性 http-equiv 帮助浏览器正确的显示网页,与之对应的属性值为content <!--重定向 2秒后跳转到对应的网址,注意分号--> <meta http-equiv="refresh" content="2;URL=http://www.luffycity.com"> ​ <!--指定文档的内容类型和编码类型 --> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> ​ <!--告诉IE浏览器以最高级模式渲染当前网页--> <meta http-equiv="x