Python文本数据分析与处理

简介: Python文本数据分析与处理(新闻摘要)分词使用jieba分词, 注意lcut只接受字符串过滤停用词TF-IDF得到摘要信息或者使用LDA主题模型TF-IDF有两种jieba.analyse.

Python文本数据分析与处理(新闻摘要)

分词
  • 使用jieba分词, 注意lcut只接受字符串
过滤停用词
TF-IDF得到摘要信息或者使用LDA主题模型
  • TF-IDF有两种
    • jieba.analyse.extract_tags(content, topK=20, withWeight=False) # content为string, topK选出20个关键字, withWeight: 每一个关键词同等重要
    • 使用gensim库
      • from gensim import corpora, models
      • dictinary = corpora.Dictionary(word_list) # 为每一个单词分配一个id, 并记录每一个单词的词频到dfs属性中
      • corpus = [dictionary.doc2bow(line) for line in word_list] # 得到词库, 形式是(token, id)
      • corpus.token2id以[token:id, ...]返回
      • # 将数据处理完之后, 才能使用models进行计算
      • lda = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=20) # corpus指定语料库, id2word指定字典, id在corpus中, num_toptics指定训练的主题数
      • lda.print_topic(1, 10) # 1为topic的id, 10为topic中关键字的个数
      • lda.print_topic(3, 10) # 3为返回的topic个数, 10为每一个topic中关键字的个数
      • 返回的形式是0.009*"文化" + 0.005*"恋情" + 0.004*"中" + 0.004*"撒" + 0.004*"节目"的列表, 数字为权重

机器学习贝叶斯(文本处理, 判断一句评论是否是侮辱性的[学会了这个, 那么垃圾邮箱, 广告的过滤也一样了, 文本处理贝叶斯的world])

与其他的泰坦尼克号遇难预测等案例不同, 文本处理需要自己在预处理时构建出数据表. 没有后者每一个提供表

不使用第三方库实现的思路

  • 获取文本数据
    • 格式: data0 = [['Hello', 'buddy'], ['You', 'silly']], labels = [1, 1]等
    • 二维list, 一个list表示合并在一起可以表示一句话
  • 过滤停用词得到去掉停用词的集合data

  • 对data进行去重(现在使用的算法不需要单词出现的数量, 如果换作其他算法则不一定), 获取data中所有的单词words, words的形式为list
    • 实现思路:
      • data = set(data): 转换为set达到去重的效果
      • data = list(data): 将data转为list, 因为需要单词的顺序
  • data0的每一个list元素的单词转为0和1, 返回一组向量, 0表示没有该单词, 1表示有该单词
  • def NBTrain函数使用贝叶斯进行训练
    • 根据labels先判断出bad言论数, 得出其概率
    • 缩小范围, 锁定到bad言论中, 计算出每一条bad言论的单词总数与所有bad言论的总数的比值
    • 锁定到not bad言论中, 计算出每一条not bad言论的单词总数与所有not bad言论的总数的比值
    • 返回三个向量
  • 根据根据贝叶斯公式, 根据输入的测试集向量, 通过贝叶斯公式与NBTrain出来的参数(该参数与贝叶斯公式非常相关)得出p0与p1, 比较大小进行分类借口

使用sklearn的native_bayes模块实现

  • 获得数据
  • 过滤掉停用词
  • 将每一个样本对应的单词以' '.jion合并, 因为之后将单词转为向量的对象需要这样的参数
  • 导入sklearn.features_extraction.text.CountVectorizier或者sklearn.features_extraction.text.TfidfVectorizier, 是两种将字符串中的单词转为向量的算法, 后者效果更好, 所以以他为例
    • tfidf = TfidVectorizier() # 有一个ngram_range可选参数, (1, 4)表示得到的feature为1个, 2个依次增加到3个, 3就是最终每一个句子的向量的长度
    • tfidf_fit = tfidf.fit_transform(texts) # texts的形式['I am myself', 'Do not say it', ...]
    • tfidf_fit.get_feature_names()返回单词list
    • tfidf_fit.toarray()返回转换后的向量
  • 现在得到了我们需要用于建模的数据表了(前面就是特征提取的操作, 是机器学习中最难的部分, 目的就是为了得到可以用于建模的数据表)
  • 将数据分成训练集和测试集
  • 导入native_bayes模块中的MultinomialNB类对象
    • clf = MultinomialNB()
    • clf.fit(X_train.values.tolist(), y_train.values.tolist()) # bayes坑的地方, 传入的必须是list, 内部不提供转换
  • 评估
    • clf.score(X_test.values.tolist(), y_test.values.tolist())
目录
相关文章
|
3天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
11 1
|
2天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Gensim详细介绍和使用:一个Python文本建模库
Gensim详细介绍和使用:一个Python文本建模库
15 1
|
4天前
|
机器学习/深度学习 数据可视化 算法
使用Python进行数据分析的5个必备技巧
【5月更文挑战第9天】本文介绍了Python数据分析的五个关键技巧:1) 使用Pandas进行数据处理和清洗;2) 利用NumPy进行高效数值计算;3) 通过Matplotlib和Seaborn创建可视化图表;4) 使用Scikit-learn执行机器学习任务;5) 在Jupyter Notebook中进行交互式分析和文档分享。这些技巧能提升数据分析的效率和准确性。
|
5天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
12 0
|
5天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
5天前
|
数据采集 数据处理 开发者
Python 中的数据处理技巧:高效数据操作的艺术
Python 在数据处理方面表现卓越,为开发者提供了丰富的工具和库以简化数据操作。在本文中,我们将探讨 Python 中数据处理的一些技巧,包括数据清洗、数据转换以及优化数据操作的最佳实践。通过掌握这些技巧,您可以在 Python 中更加高效地处理和分析数据。
|
7天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
7天前
|
开发者 索引 Python
Python中调整两列数据顺序的多种方式
Python中调整两列数据顺序的多种方式
27 0
|
7天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
17 1