首页 > 其他分享 >书籍数据科学技术与应用_文本数据处理

书籍数据科学技术与应用_文本数据处理

时间:2023-03-10 17:44:49浏览次数:35  
标签:cut fit space sentence test 数据处理 article 文本 书籍

Sklearn模块

  • 无监督:cluster(聚类)、decomposition(因子分解)、mixture(高斯混合模型)、neural_network(无监督的神经网络)、covariance(协方差估计)
  • 有监督:tree(决策树)、svm(支持向量机)、neighbors(近邻算法)、linear_model(广义线性模型)、neural_network(神经网络)、kernel_ridge(岭回归)、naive_bayes(朴素贝叶斯)
  • 数据转换:feature_extraction(特征提取)、feature_selection(特征选择)、preprocessing(预处理)

文本数据处理

  • 识别垃圾邮件时,先对邮件的文本信息进行清洗、特征提取后,再用 SVM 等对其进行训练分类
  • 词袋(bag of words)模型将每条文本看成一个袋子,里面装着词,分析时用袋里的词代表整篇文本
  • 为每条文本生成词袋,需用 sklearn 提供的 feature_extraction.text 模块的 CountVectorizer 类
  • TF-IDF 模型表示词频-逆文档频率,计算特征时可用 CountVectorizer 类向量化后再调用 TfidTransformer 类,也可以直接调用TfidTransformer 类。

词袋模型

# 导入 CountVectorizer 类用于提取文本特征、jieba 库用于文本剪切
  from sklearn. feature_extraction. text import CountVectorizer
  import jieba

# 文本定义、剪切
# lcut 得到逗号剪切的句子,join 得到空格剪切的句子,append 得到空格剪切的文章
  article = [ '我是中国人,我爱中国',
  '我是上海人',
  '我住在上海松江大学城',
  '松江大学城有很多大学',
  '大学城共有15万余大学生' ]
  article_space_cut = []
  for sentence in article:
    sentence_comma_cut = jieba. lcut (sentence)
    sentence_space_cut = ' '. join (sentence_comma_cut)
  article_space_cut. append (sentence_space_cut)
  print (article_space_cut)

# 生成词袋
# 初始化(token_pattern 显示字符数为1的词),转为数字,特征词语,特征向量
  cidai = CountVectorizer (token_pattern = r"(?u)\b\w+\b")
  cidai_fit = cidai. fit_transform (article_space_cut)
  print (cidai. get_feature_names())
  print (cidai_fit. toarray())

TF-IDF 模型

# 导入 TfidfVectorizer 类用于提取文本特征
  from sklearn. feature_extraction. text import TfidfVectorizer

# 生成 TF-IDF 特征
  tf = TfidfVectorizer (token_pattern = r"(?u)\b\w+\b")
  tf_fit = tf. fit_transform (article_space_cut)
  print (tf_fit.toarray())

垃圾邮件识别(TF-IDF 提取特征、SVM 分类)

#导入 TfidfVectorizer 类用于提取文本特征、jieba 库用于文本剪切
  import jieba
  from sklearn. feature_extraction. text import TfidfVecto

# 文本导入、剪切
# lcut 得到逗号剪切的句子,join 得到空格剪切的句子,append 得到空格剪切的文章
  article = open ('mailcorpus.txt', 'r', encoding = 'utf-8')
  line = article. readlines()
  article_space_cut = []
  for sentence in line:
    sentence_comma_cut = jieba.lcut (sentence)
    sentence_space_cut = ' '.join (sentence_comma_cut)
    article_space_cut. append (sentence_space_cut)
  article_space_cut [0:5]

# 生成 TF-IDF 特征
  tf = TfidfVectorizer (token_pattern = r"(?u)\b\w+\b")
  tf_fit = tf. fit_transform (article_space_cut)
  print (tf_fit. toarray())

# 数据准备,导入 GaussianNB 类用于朴素贝叶斯模型训练分类
  from sklearn. naive_bayes import GaussianNB
  beiyesi = GaussianNB()
  y = [0]*5000 + [1]*5000
  x = tf_fit. toarray()

# 划分测试集,导入 model_selection 模块
  from sklearn import model_selection
  x_train, x_test, y_train, y_test = model_selection. train_test_split (x,y,

    test_size = 0.4, random_state = 0)
  beiyesi. fit (x_train, y_train)

# 测试集上性能评估,导入 metrics 模块
  from sklearn import metrics
  y_test_pred = beiyesi. predict (x_test)
  score = beiyesi. score (x_test,y_test)
  print ('准确度为:', score)
  report = metrics. classification_report (y_test, y_test_pred)
  matrix = metrics. confusion_matrix (y_test, y_test_pred)
  print ('分类报告为:', report)
  print ('模糊矩阵为:', matrix)

感想

  • 词袋和 TF-IDF 原理不同,从语言角度,词袋是从词语的字面理解出发,TF-IDF 则是从文章的阅读理解出发

标签:cut,fit,space,sentence,test,数据处理,article,文本,书籍
From: https://www.cnblogs.com/peitongshi/p/17204115.html

相关文章

  • Liunx基础知识 -- 9 文本操作
    正如我在之前的Linux教程中多次提到的,Linux中几乎所有的东西都是一个文件,而且它们通常是文本文件。例如,Linux中的所有配置文件都是文本文件。要在Linux中重新配置应......
  • Python - pandas 数据处理
    数据处理pandas数据读取pd.read_csv:csv/tsv/txt用逗号、tab分隔的纯文本文件pd.read_excel::微软xls或者xlsx文件pd.read_sql:mysql关系型数据库pd.rea......
  • 获取长文本二三事
    1、获取长文本常用的方式就是通过READ_TEXT函数获取长文本,且每次只能获得一行数据,在报表中将会严重拖慢查询速度。所以,此处介绍如何通过后台表查询长文本"------------......
  • 富文本编译器-配合gin使用
    一。引入样式<!--IncludeEditorstyle.--><linkhref="https://cdn.jsdelivr.net/npm/froala-editor@latest/css/froala_editor.pkgd.min.css"rel="stylesheet"type......
  • 文本域 文件域
    <doctypehtml><html><head>  <metacharset="utf-8">  <title>study</title>  <style>  </style></head><body><!--cols="50"rows="10"文本......
  • Mysql导出文本文件
    使用mysqldump命令导出文本文件mysqldump-uroot-pPassword-T目标目录dbname[tables][option];其中:Password参数表示root用户的密码,密码紧挨着-p选项。-T:只有......
  • 创建文件和文件中文本文档且写入和删除
    publicstaticvoidmain(String[]args){ Filefile=newFile("test/test1/test1"); if(!file.exists()){ if(!file.isDirectory()){ file.mkdirs(); } ......
  • Linux下日志文本筛选命令
    1.从全量日志中截断部分日志 #1.截取末尾10000行tail-1000/data/logs/hadoop/hadoop-zkfc.log>cut1w.log#2.按照时间范围截取日志sed-n'/2020-08-0901:59/,/......
  • matplotlib:python数据处理三剑客之一
    1.基本使用importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspd#生成一系列xx=np.linspace(-1,1,50)#生成对应的yy1=2*x+1y2=x......
  • Linux - 常用文本编辑命令
    Linux常用文本编辑命令汇总sort对文本内容进行排序。常用参数:-b:忽略每行左侧的空白字符-n:按数字大小排序-V:按照数字版本排序-h:根据存储容量排序(KB、MB、GB)-r:倒......