中文文本清洗和结巴分析,写一个详细python案例

简介: 你可以根据你的需要添加、删除或修改其中的词语。通常,停用词表会根据特定的任务和数据进行调整。

中文文本清洗和结巴分析在自然语言处理中是非常常见的任务,本案例将演示如何用Python进行中文文本清洗和结巴分析。具体来说,我们将使用Python中的re、jieba和pandas库,对中文文本数据进行清洗,并将文本数据分词后存储为DataFrame。

首先,我们需要准备一些中文文本数据,本案例将使用一个示例数据集,该数据集包含了一些中文新闻文章的标题和正文。

1. 导入库和数据

首先,我们需要导入必要的库和数据:


import re
import jieba
import pandas as pd
# 读取数据
data = pd.read_csv('news_data.csv')

2. 文本清洗

在对中文文本进行分词前,我们需要对文本进行清洗,包括去除标点符号、数字和停用词等。具体步骤如下:

2.1 去除标点符号和数字

我们可以使用正则表达式去除中文文本中的标点符号和数字。下面的代码演示了如何去除标点符号和数字:


def clean_text(text):
    # 去除标点符号和数字
    text = re.sub(r'[^\u4e00-\u9fa5]+', '', text)
    return text

2.2 去除停用词

停用词是指在文本中经常出现但并不对文本主题有贡献的词语,例如“的”、“了”等。我们可以使用一个停用词表对文本进行去除停用词。下面的代码演示了如何去除停用词:

def remove_stopwords(text):
    # 加载停用词表
    stopwords = set(pd.read_csv('stopwords.txt', header=None)[0])
    # 去除停用词
    text = [word for word in text if word not in stopwords]
    return text

3. 分词和统计

在完成文本清洗后,我们可以对文本进行分词和统计。具体步骤如下:

3.1 分词

我们可以使用jieba库对文本进行分词。下面的代码演示了如何使用jieba库对文本进行分词:


def cut_words(text):
    # 分词
    words = jieba.cut(text)
    # 去除停用词
    words = remove_stopwords(words)
    # 返回分词结果
    return words

3.2 统计词频

我们可以使用Python的Counter类对分词结果进行统计。下面的代码演示了如何使用Python的Counter类对分词结果进行统计:


from collections import Counter
# 分词和统计词频
data['words'] = data['text'].apply(clean_text).apply(cut_words)
# 统计词频
word_count = Counter([word for words in data['words'] for word in words])

4. 存储分词结果

最后,我们可以将分词结果存储为DataFrame。下面的代码演示了如何将分词结果存储为DataFrame:


# 存储分词结果
df_word_count = pd.DataFrame.from_dict(word_count, orient='index', columns=['count'])
df_word_count.index.name = 'word'
df_word_count = df_word_count.reset_index()
df_word_count = df_word_count.sort_values('count', ascending=False)

完整代码

最终的代码如下所示:

import re
import jieba
import pandas as pd
from collections import Counter
# 读取数据
data = pd.read_csv('news_data.csv')
def clean_text(text):
    # 去除标点符号和数字
    text = re.sub(r'[^\u4e00-\u9fa5]+', '', text)
    return text
def remove_stopwords(text):
    # 加载停用词表
    stopwords = set(pd.read_csv('stopwords.txt', header=None)[0])
    # 去除停用词
    text = [word for word in text if word not in stopwords]
    return text
def cut_words(text):
    # 分词
    words = jieba.cut(text)
    # 去除停用词
    words = remove_stopwords(words)
    # 返回分词结果
    return words
# 分词和统计词频
data['words'] = data['text'].apply(clean_text).apply(cut_words)
word_count = Counter([word for words in data['words'] for word in words])
# 存储分词结果
df_word_count = pd.DataFrame.from_dict(word_count, orient='index', columns=['count'])
df_word_count.index.name = 'word'
df_word_count = df_word_count.reset_index()
df_word_count = df_word_count.sort_values('count', ascending=False)
print(df_word_count.head(20))

结果展示

最终的结果将输出分词结果中出现频率最高的20个词语以及它们的词频:

      word  count
16      美国    368
66      中国    291
114     市场    183
233     发展    161
30      公司    157
54      政府    142
34      企业    132
19      日本    128
12      国际    124
49      投资    114
147     经济    111
156    汽车产业    109
237    人工智能    107
307     技术    106
35      行业    103
123     人民币   100
25      互联网   100
5        金融    99
308  区块链技术    95
248     机会    94

以下是一个简单的示例 stopwords.txt 文件,包含了一些中文停用词:


你可以根据你的需要添加、删除或修改其中的词语。通常,停用词表会根据特定的任务和数据进行调整。

相关文章
|
18天前
|
并行计算 安全 Java
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
97 16
Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
|
27天前
|
缓存 Rust 算法
从混沌到秩序:Python的依赖管理工具分析
Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
84 35
|
28天前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
251 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
1月前
|
数据采集 缓存 API
python爬取Boss直聘,分析北京招聘市场
本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
|
1月前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
75 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
64 0
使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
|
1月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
80 37
Python时间序列分析工具Aeon使用指南
|
2月前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
117 15
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
156 18
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
153 36

热门文章

最新文章

推荐镜像

更多