python文本挖掘中文
‘壹’ python excel 文本挖掘
两个简单思路给你
把xls保存搜尘成csv,用世散禅csv模块读取,然后python完全处理
使用xlrd直接掘含读取,然后python处理
‘贰’ 如何python提取txt文档里面全部的中文和中文符号,并且保存为新的txt文档
用beautifulsoup处理啊,去除英文和符号就是中文啦
importre
zhongwen=re.sub(r'[w<>/,=:"']','',text')
‘叁’ 手机评论文本挖掘与数据分析(Python)
目的
各大电商竞争越来激烈,为了提升客户服务质量,除了打价格战外,了解客户的需求点,对消费者的文本评论进行数据挖掘,倾听客户的心声越来越重要。
工具
1、贝壳采集器
2、Google浏览器
3、Python3.7 + Pycharm
数据采集
①本文对京东平台的手机进行爬虫,首先进入京东商城,选择一款手机,这里以华为Mate 30 Pro 5G为例
②在采集平台输入网址,点击贝壳采集开始配置信息
③因为是戚渣让采集评论所以还需要进行下预操作配置切换页面:点击预操作按钮-->添加梁返点击元素按钮-->左键点击流程图中添加元素按钮(悬浮显示操作键)-->点击悬浮显示操作键<选择按钮> -->点击网页商品评论TAB页切换按钮 -->点击保存
④没有识别出评论信息,手工操作下:清空字段-->更改页面类型为手工识别列表 --> 选中两个一样元素(这里两个用户名称) -->下一页未自动识别成功-->更改分页类型为手动点击下一页-->配置完成-->开始采集
数据预处理
当我们通过爬虫获取到我们想要的数据之后,进行简单的观察,可以发现评论的一些特点:
文本短,基本上大量的评论就是一句话.
情感倾向明显:明显的词汇如”好” “可以”
语言不规范:会出现一些网络用词,符号,数字等
重复性大:一句话出现词语重复
数据量大.
故我们需要对这些数据高局进行数据预处理
数据预处理包括:去重、分词等
下面我们将进行数据清洗
import jieba
#评论内容进行去重
def quchong(infile, outfile):
infopen = open(infile, 'r', encoding='utf-8')
outopen = open(outfile, 'w', encoding='utf-8')
lines = infopen.readlines()
list_1 = []
for line in lines:
if line not in list_1:
list_1.append(line)
outopen.write(line)
infopen.close()
outopen.close()
quchong("E:/comments/华为P30.txt", "E:/comments/P30去重.txt")
# jieba.load_userdict('userdict.txt')
#创建停用词list
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
#对评论内容进行分词
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('stopwords.txt') #这里加载停用词的路径
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
inputs = open('E:/comments/P30去重.txt', 'r', encoding='utf-8')
outputs = open('E:/comments/P30分词.txt', 'w')
for line in inputs:
line_seg = seg_sentence(line) #这里的返回值是字符串
outputs.write(line_seg + '\n')
outputs.close()
inputs.close()
print('分词完毕')
数据分析
上面我们已经通过去重和jieba分词将爬取的内容进行了预处理,接下来就开始对处理过的数据进行分析,包括词频统计、关键词提取以及词云的生成等
#词频统计
import jieba.analyse
from collections import Counter #词频统计
with open('E:/comments/P30分词.txt', 'r', encoding='utf-8') as fr:
data = jieba.cut(fr.read())
data = dict(Counter(data))
with open('E:/comments/P30词频.txt', 'w', encoding='utf-8') as fw: # 读入存储wordcount的文件路径
for k, v in data.items():
fw.write('%s, %d\n' % (k, v))
import jieba.analyse
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#生成词云
with open('E:/comments/P30词频.txt') as f:
#提取关键词
data = f.read()
keyword = jieba.analyse.extract_tags(data, topK=50, withWeight=False)
wl = " ".join(keyword)
#设置词云
wc = WordCloud(
#设置背景颜色
background_color = "white",
#设置最大显示的词云数
max_words=2000,
#这种字体都在电脑字体中,一般路径
font_path='C:/Windows/Fonts/simfang.ttf',
height=1200,
width=1600,
#设置字体最大值
max_font_size=100,
#设置有多少种随机生成状态,即有多少种配色方案
random_state=30,
)
myword = wc.generate(wl) #生成词云
#展示词云图
plt.imshow(myword)
plt.axis("off")
plt.show()
wc.to_file('E:/comments/P30.png') #把词云保存下
‘肆’ python怎样读取文本文件里的中文
#在Windows 环境下
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
fin = open('in.txt', 'r') #以读的方式打开输入文件
for eachLine in fin: #按行读入文件内容
line = eachLine.strip().decode('gbk', 'utf-8') #处理前进行相关的处理,包括转换成Unicode等
print line #打印原始字符
p2 = re.compile(ur'[^\u4e00-\u9fa5]') #中文的编码范围是:\u4e00到\u9fa5
zh = "".join(p2.split(line)).strip()
#zh = ",".join(zh.split())
print zh ##打印中文字符
‘伍’ 用python怎么在一个中英文混合句子里把中文提取
Python re正则匹配伏弯戚枝中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>> pat='中文'缺仔闷.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>> newpat='这里是中文内容'.decode("utf8")
>>> news=re.sub(pat,newpat,s)
>>> print news
这里是中文内容:123456aa哈哈哈bbcc
‘陆’ python 用于文本挖掘有哪些比较好的开源工具
beautifulsoup. scarpy可以做文本收集
beautifulsoup,和正锋拦则可以进行文件数据分析
pyenchant 可以进行英文拼写纠错
POS Tagging。nltk 是不二选择,还御运可以使用 pattern
分词,中文使用jieba分词,英文使镇基梁用K1分词
‘柒’ python搜索文本文件中的中文词汇并输出词汇所在行的内容
for lnum, line in enumerate(open('ur path')):
if 'key' in line:
print(lnum, line)
‘捌’ 中文文本挖掘R语言和Python哪个好
单就数据分析对比,我认为R的优势有:
1、学习先易后难,不会把小白们吓掉;
2、数据科学的包特别多
3、可视化特别吊
R的缺点也不少:
1、R经常更新,更新后经常不支持之前你安装的包;我电脑里安装了10+个R的版本,不停的切换
2、R语言的包、函数名起的很随意,看名字不知道是干什么用的,记不起名字如何让小白使用啊。
3、R语言社区人少,遇到问题你只能自己解决
4、即使有RStudio,写代码还是不方便
下面再说下python,优点:
1、是一门看的懂的,说人话的语言。库名、函数名都很好理解记忆,而且你看别人写的代码基本知道这代码的意思,不信你试试。
2、数据获取占优势,数据分析第一步是数据获取,现在人文社科很多数据需要网上抓取,不过就抓数据而言,python更占优势。各种教程,代码,网上一大片。
3、社区人数特别多,基本你遇到的问题都能找到
python的缺点:
1、学习起来,开头很难,学习曲线与R正好相反。
2、公平起见,我还是写上,python的数据分析库不如R多
3、可视化不如R
综合下,建议大家学习python,语言通俗易懂,功能强大,越来越简单。
‘玖’ python怎么用正则表达式提取中文
1、字符串line='ufeffD0002044x01大数据x01数据分析x01技术x01工具x01应用
'
想提取出其中的“大数据”,“数据分析”,“技术”,“工具”,“应用”这些中文,用了正则表达式:
>>>pat2='x01(.*?)'
>>>rs=re.compile(pat2).findall(line)
>>>print(rs)
['','','','','']
显示的结果是空,请问如何才能正确的提出中文部分。
2、原文: 法规名称:'《中华人民共和国合同法》',Items:[{法条名称:'第五十二条'
匹配成: 《中华人民共和国合同法》第五十二条
(?<=法规名称:').*?(',Items:[{法条名称:').*?(?=') 请问这样匹配哪里错了?Python报sre_constants.error: unterminated character set at position 22
3、Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[u4e00-u9fa5]+”可以表示一个或者多个中文字符
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u''
>>> print s
中文:123456aa哈哈哈bbcc 。