文本数据的挖掘在当今互发达的联网环境下显得越来越具有价值,数据分析师Seth Grimes曾指出“80%的商业信息来自非结构化数据。本文以中文文本数据作为分析对象,针对中文文本存在的特征进行文本预处理,并调用Gensim工具包实现对文本的TFIDF建模已经LDA建模,从文本中抽取出的特征进行表征文本信息,可用于后续文本相似度、个性化推荐等研究。
2、中文文本预处理首先,观察如下一条用户在网上所发表的评论:
不难发现,该用户发表的内容中不仅包含文字,还包括标点符号、emoji表情符号以及url网页链接,是一条十分具有代表性的现在文本数。诸如此类的文本数据,在进行文本挖掘之前,需要进行数据清洗,去除上述干扰信息从而避免影响文本分析的准确性。此外,文本分析的基本单位是词,需要对句子进行分词处理,去除没有实际意义的停用词。
本文通过Pyhon进行文本数据预处理,利用了中文停用词表去除停用词,调用了jieba分词,(注:中文停用词版本较多,可自行下载,这里提供一个版本: 停用词,提取码: h8xn),处理代码如下:
# coding=utf-8
import jieba, re
# 去除原始字符串中的url
def remove_urls(raw_sentence):
# 正则表达式
url_reg = r'[a-z]*[:.]+\S+'
result = re.sub(url_reg, '', raw_sentence)
return result
# 去除原始字符串中的emoji字符
def remove_emoji(raw_sentence):
try:
co = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
return co.sub('', raw_sentence)
return result
# 创建停用词表
def stopwordslist():
stopwords = [line.strip() for line in open('data/stopWords.txt', encoding='UTF-8').readlines()]
return stopwords
# 利用jieba分词对文档进行中文分词
def seg_depart(raw_sentence):
sentence_depart = jieba.cut(raw_sentence.strip())
stopwords = stopwordslist()
outstr = ''
for word in sentence_depart:
if word not in stopwords:
outstr += word
outstr += " "
return outstr
#测试
sentence = "大众、奥迪现在几乎全部的最新电子科技都用在奥迪身上了,A4L的配置新科技应用很明显…