爬虫的应用

在自然语言处理(NLP)领域,文本数据的预处理是至关重要的基础环节。它如同工匠雕琢璞玉前的打磨工作,直接影响后续模型分析与挖掘的效果。本文将基于 Python,以电商平台的差评和优质评价文本数据为例,详细展示中文文本从原始读取、分词到停用词去除的完整处理流程。

一、数据读取:获取原始评价文本

首先,使用pandas库读取存储在本地的差评和优质评价文本数据。数据以文本文件形式存在,编码格式为gbk ,通过read_table函数可以轻松将数据加载到数据框中。

复制代码
import pandas as pd
cp_content = pd.read_table(r".\差评.txt",encoding='gbk')
yzpj_content = pd.read_table(r".\优质评价.txt",encoding='gbk')

上述代码中,cp_contentyzpj_content分别存储了差评和优质评价的文本数据。通常,这些数据文件中会包含诸如评价内容、评价时间、用户 ID 等多列信息,在本次处理中,我们重点关注核心的评价内容列。

二、中文分词:利用 Jieba 库拆解文本

中文与英文不同,英文单词间天然存在空格分隔,而中文文本是连续的字符序列,因此需要专门的分词工具将其拆分为词语单元。Jieba 分词是 Python 中最常用的中文分词库之一,它支持精确模式、全模式、搜索引擎模式等多种分词模式,能够满足不同场景的需求。

我们通过以下代码对差评和优质评价文本进行分词处理:

复制代码
import jieba
cp_segments =[]
contents = cp_content.content.values.tolist()
for content in contents:
    results = jieba.lcut(content)
    if len(results) > 1:
       cp_segments.append(results)
cp_fc_results=pd.DataFrame({'content':cp_segments})
cp_fc_results.to_excel('cp_fc_results.xlsx',index=False)

yzpj_segments = []
contents = yzpj_content.content.values.tolist()
for content in contents:
    results = jieba.lcut(content)
    if len(results)>1:
        yzpj_segments.append(results)
yzpj_fc_results=pd.DataFrame({'content':yzpj_segments})
yzpj_fc_results.to_excel('yzpj_fc_results.xlsx',index=False)

在上述代码中:

  1. 首先将数据框中content列的数据提取并转换为列表形式,方便后续逐句处理。
  2. 使用jieba.lcut函数对每一条评价文本进行分词,lcut表示以列表形式返回分词结果。
  3. 为了保证分词结果的有效性,过滤掉分词后词语数量小于等于 1 的情况(这类结果可能是无意义的短文本或异常数据)。
  4. 最后将分词结果存储到新的数据框中,并保存为 Excel 文件,便于后续查看和进一步处理 。

三、停用词去除:净化文本数据

在分词后的文本中,存在大量如 "的""了""在""是" 等对文本语义表达贡献较小的词语,这些词语被称为停用词。去除停用词可以有效减少数据噪声,突出文本的关键信息,提升后续分析的效率和准确性。

我们从本地读取停用词表,并编写函数实现停用词去除功能:

复制代码
stopwords = pd.read_csv(r".\stopwordscN.txt",encoding='utf8', engine='python',index_col=False)

def drop_stopwords(contents, stopwords):
    segments_clean=[]
    for content in contents:
        line_clean =[]
        for word in content:
            if word in stopwords:
                continue
            line_clean.append(word)
        segments_clean.append(line_clean)
    return segments_clean

contents = cp_fc_results.content.values.tolist()
stopwords = stopwords.stopword.values.tolist() 
cp_fc_contents_clean_s = drop_stopwords(contents, stopwords)

contents = yzpj_fc_results.content.values.tolist() 
yzpj_fc_contents_clean_s = drop_stopwords(contents, stopwords)

具体步骤如下:

  1. 使用pandas读取停用词表文件,通常停用词表是一个包含多列数据的文本文件,这里假设stopword列存储了具体的停用词。
  2. 定义drop_stopwords函数,该函数接收分词后的文本列表和停用词列表作为参数。在函数内部,通过双重循环遍历每一条文本中的每个词语,判断词语是否在停用词列表中,如果是则跳过,否则将词语保留,最终返回去除停用词后的文本列表。
  3. 分别对差评和优质评价的分词结果进行停用词去除操作,得到清洗后的文本数据。

四、总结与展望

通过上述步骤,我们完成了从原始评价文本数据到清洗分词的全流程处理。这一系列操作是中文文本处理的基础且关键环节,为后续诸如情感分析、文本分类、主题建模等高级自然语言处理任务奠定了坚实的基础。

后续,我们可以基于这些清洗后的数据,进一步探索文本向量化(如使用词袋模型、TF-IDF、Word2Vec 等方法),并结合机器学习或深度学习模型进行情感倾向判断,区分差评和优质评价;也可以进行文本相似度计算,挖掘相似评价内容,为商家改进服务、优化产品提供有价值的参考。

相关推荐
武子康13 分钟前
大数据-274 Spark MLib - 基础介绍 机器学习算法 剪枝 后剪枝 ID3 C4.5 CART
大数据·人工智能·算法·机器学习·语言模型·spark-ml·剪枝
Lilith的AI学习日记2 小时前
n8n 中文系列教程_25.在n8n中调用外部Python库
开发语言·人工智能·python·机器学习·chatgpt·ai编程·n8n
Blossom.1183 小时前
人工智能在智能供应链中的创新应用与未来趋势
前端·人工智能·深度学习·安全·机器学习
疯狂学习GIS3 小时前
Ubuntu部署tensorflow(CPU/GPU)方法
python·深度学习·机器学习
合作小小程序员小小店4 小时前
web安全开发,在线%机器学习异常流量检测系统%开发demo
人工智能·python·mysql·机器学习·sklearn
亿牛云爬虫专家5 小时前
智能嗅探AJAX触发:机器学习在动态渲染中的创新应用
机器学习·ajax·爬虫代理·代理ip·嗅探·新闻·www.toutiao.com
江苏泊苏系统集成有限公司7 小时前
半导体晶圆制造洁净厂房的微振控制方案-江苏泊苏系统集成有限公司
人工智能·深度学习·目标检测·机器学习·创业创新·制造·远程工作
苏苏susuus10 小时前
机器学习:欠拟合、过拟合、正则化
人工智能·机器学习
xiaohanbao0912 小时前
day42 简单CNN
人工智能·python·深度学习·神经网络·学习·机器学习·cnn
羑悻的小杀马特12 小时前
K 值选对,准确率翻倍:KNN 算法调参的黄金法则
算法·机器学习