1、去除网页的标签,如<br/>

from bs4 import BeautifulrSoup
preData=BeautifulSoup(data,'html.parser').get_text()

2、将标点符号等去掉,用正则表达式。

import re
#表示将data中的除了大小写字母之外的符号换成空格
preData=re.sub(r'[^a-zA-Z]',' ',data)

  去除特殊符号:

#two commom ways to clean data
def cleaner(word):
word = re.sub(r'\#\.', '', word)
word = re.sub(r'\n', '', word)
word = re.sub(r',', '', word)
word = re.sub(r'\-', ' ', word)
word = re.sub(r'\.', '', word)
word = re.sub(r'\\', ' ', word)
word = re.sub(r'\\x\.+', '', word)
word = re.sub(r'\d', '', word)
word = re.sub(r'^_.', '', word)
word = re.sub(r'_', ' ', word)
word = re.sub(r'^ ', '', word)
word = re.sub(r' $', '', word)
word = re.sub(r'\?', '', word)
word = re.sub(r'é', '', word)
word = re.sub(r'§', '', word)
word = re.sub(r'¦', '', word)
word = re.sub(r'æ', '', word)
word = re.sub(r'\d+', '', word)
word = re.sub('(.*?)\d+(.*?)', '', word)
return word.lower()
def hashing(word):
word = re.sub(r'ain$', r'ein', word)
word = re.sub(r'ai', r'ae', word)
word = re.sub(r'ay$', r'e', word)
word = re.sub(r'ey$', r'e', word)
word = re.sub(r'ie$', r'y', word)
word = re.sub(r'^es', r'is', word)
word = re.sub(r'a+', r'a', word)
word = re.sub(r'j+', r'j', word)
word = re.sub(r'd+', r'd', word)
word = re.sub(r'u', r'o', word)
word = re.sub(r'o+', r'o', word)
word = re.sub(r'ee+', r'i', word)
if not re.match(r'ar', word):
word = re.sub(r'ar', r'r', word)
word = re.sub(r'iy+', r'i', word)
word = re.sub(r'ih+', r'eh', word)
word = re.sub(r's+', r's', word)
if re.search(r'[rst]y', 'word') and word[-1] != 'y':
word = re.sub(r'y', r'i', word)
if re.search(r'[bcdefghijklmnopqrtuvwxyz]i', word):
word = re.sub(r'i$', r'y', word)
if re.search(r'[acefghijlmnoqrstuvwxyz]h', word):
word = re.sub(r'h', '', word)
word = re.sub(r'k', r'q', word)
return word def array_cleaner(array):
X = []
for sentence in array:
clean_sentence = ''
words = sentence.split(' ')
for word in words:
clean_sentence = clean_sentence +' '+ cleaner(word)
X.append(clean_sentence)
return X
X_train = array_cleaner(X_train)

3、将文本中的单词小写化,并将data用空格分开

words=data.lower().split()

4、去掉停用词

#可以自己下载停用词
#nltk.download()
words_notstop=[w for w in words if w not in stopwords]

5、将所有的词连接成一个句子

sentence=' '.join(words)

6、把空格前缀去除

train_data['review'] = train_data['review'].str.strip() 

7、删除短词,删除句子中词语长度小于3的词,如haa,hi等无意义的词

##删除短单词
train_data['review'] = train_data['review'].apply(lambda x:' '.join([w for w in x.split() if len(w) > 3]))

8、分词

##分词
train_data['review'] = train_data['review'].str.split()

9、提取词干

##提取词干,即基于规则从单词中去除后缀的过程。例如,play,player,played,plays,playing都是play的变种。
from nltk.stem.porter import *
stemmer =PorterStemmer()
train_data['review'] = train_data['review'].apply(lambda x: [stemmer.stem(i) for i in x])

Python数据分析8-----网页文本处理的更多相关文章

  1. python爬取网页文本、图片

    从网页爬取文本信息: eg:从http://computer.swu.edu.cn/s/computer/kxyj2xsky/中爬取讲座信息(讲座时间和讲座名称) 注:如果要爬取的内容是多页的话,网址 ...

  2. python数据分析&挖掘,机器学习环境配置

    目录 一.什么是数据分析 1.这里引用网上的定义: 2.数据分析发展与组成 3.特点 二.python数据分析环境及各类常用分析包配置 1.处理的数据类型 2.为什么选择python 三.python ...

  3. Python爬虫解析网页的4种方式 值得收藏

    用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. ​ 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存 ...

  4. 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例

    基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...

  5. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  6. 【读书笔记与思考】《python数据分析与挖掘实战》-张良均

    [读书笔记与思考]<python数据分析与挖掘实战>-张良均 最近看一些机器学习相关书籍,主要是为了拓宽视野.在阅读这本书前最吸引我的地方是实战篇,我通读全书后给我印象最深的还是实战篇.基 ...

  7. [Python数据挖掘]第2章、Python数据分析简介

    <Python数据分析与挖掘实战>的数据和代码,可从“泰迪杯”竞赛网站(http://www.tipdm.org/tj/661.jhtml)下载获得 1.Python数据结构 2.Nump ...

  8. 《Python数据分析与挖掘实战》读书笔记

    大致扫了一遍,具体的代码基本都没看了,毕竟我还不懂python,并且在手机端的排版,这些代码没法看. 有收获,至少了解到以下几点: 一. Python的语法挺有意思的     有一些类似于JavaSc ...

  9. (python数据分析)第03章 Python的数据结构、函数和文件

    本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...

随机推荐

  1. 素数(Prime)

    素数的判断: #include<math.h> bool IsPrime(int n) { ) return false; int sqr = (int)sqrt(1.0*n); ; i& ...

  2. 深入理解B/S与C/S架构

    首先来介绍一下B/S与C/S架构 C/S架构简要介绍 在了解什么是B/S架构之前,我们有必要了解一下什么是C/S架构: C/S架构是第一种比较早的软件架构,主要用于局域网内.也叫 客户机/服务器模式. ...

  3. js中获取宽高

    <script type="text/javascript"> function getWH() { var a = ""; a += " ...

  4. 专访Bruce Douglass,谈嵌入式经验

     Bruce:表面上看,编程就是想要实现什么就写什么代码:但事实是,敲代码只是软件开发过程中很小的一部分,程序员的工作还包括安全分析.责任分析.产品验证.产品分析等.      =========== ...

  5. 机房工程-在线式、后备式UPS选择(转载)

    原文网址:http://oa.yesky.com/10/31061510all.shtml#p31061510 1后备式UPS还是在线式UPS? 作为机房设备的一项重要保护措施,UPS起着无可替代的作 ...

  6. spring的bean注入扫瞄方法和mybatis的dao bean注入扫描方法

    spring的bean注入扫面方法:@ComponentScan(basePackages = "com.pingan.property.icore.pap.*")mybatis的 ...

  7. 用户体验之如何优化你的APP

    用户体验,速度为王,来几个优化APP“速度”的建议. 1.后台执行 毋庸多言,已是通常做法. 一般在执行下载任务时让其在后台运营,让用户有精力去做别的事情. 后端加载 2.提前显示 客户端与WEB的数 ...

  8. jQuery的CSS操作

    .css()--获取匹配元素集合中的第一个元素的样式属性的值设置每一个匹配元素的一个或多个CSS属性. .hasClass()--确定不论什么一个匹配元素是否有被分配给定的(样式)类: .addCla ...

  9. 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  10. hive1.2伪分布mysql数据库配置具体解释

    hadoop2.6伪分布配置:http://blog.csdn.net/gamer_gyt/article/details/46793731 hive1.2  derby元数据库配置:http://b ...