Python实现文本特征提取的方法详解

yizhihongxing

Python实现文本特征提取的方法详解

文本特征提取是文本处理中的一个重要步骤,通常是将文本转化为数字向量的过程,以便于机器学习算法的输入。本文将介绍Python中文本特征提取的常用方法。

本文将使用scikit-learn库进行文本特征提取和相关的机器学习模型操作。首先需要在终端输入以下命令安装该库:

pip install -U scikit-learn

1. 文本数据准备

首先需要准备文本数据,这里使用UCI机器学习库中的垃圾邮件数据集作为示例。

import pandas as pd

# 导入数据
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip'
spam = pd.read_csv(url, sep='\t', names=['label', 'message'])

# 查看数据
print(spam.head())

运行以上代码可以看到数据集前五条数据:

  label                                            message
0   ham  Go until jurong point, crazy.. Available only ...
1   ham                      Ok lar... Joking wif u oni...
2  spam  Free entry in 2 a wkly comp to win FA Cup fina...
3   ham  U dun say so early hor... U c already then say...
4   ham  Nah I don't think he goes to usf, he lives aro...

2. 文本特征提取

2.1 计数向量

最常用的文本特征提取方法是计数向量法。计数向量法将文本转化为固定长度的向量,其中每个元素表示一个特定的词在文本中出现的次数。CountVectorizer是用于文本计数的类。

from sklearn.feature_extraction.text import CountVectorizer

# 创建计数向量器
count_vect = CountVectorizer()

# 计算词频矩阵并转化为稀疏矩阵
X_counts = count_vect.fit_transform(spam['message'])

# 查看词频矩阵
print(X_counts)

运行以上代码可以看到输出的词频矩阵:

  (0, 8460) 1
  (0, 1114) 1
  (0, 3070) 1
  (0, 1298) 1
  (0, 4642) 1
  (0, 3613) 1
  (0, 2962) 1
  (0, 6167) 1
  (0, 3510) 1
  (0, 2234) 1
  ...

2.2 TF-IDF向量

TF-IDF向量是一种在文本挖掘中常用的特征表示方法。与计数向量类似,但是在计算每个词的权重时,TF-IDF向量考虑了该词对整个文本集的重要性,因为一些常见的词(如“the”和“a”)在每个文本中都出现,但是它们对文本的实际含义并不重要。

from sklearn.feature_extraction.text import TfidfVectorizer

# 创建TF-IDF向量器
tfidf_vect = TfidfVectorizer()

# 计算词频矩阵并转化为稀疏矩阵
X_tfidf = tfidf_vect.fit_transform(spam['message'])

# 查看词频矩阵
print(X_tfidf)

运行以上代码可以看到输出的TF-IDF向量:

  (0, 2234) 0.18930131541726813
  (0, 3510) 0.3052821039105251
  (0, 6167) 0.3430095133648276
  (0, 2962) 0.2544720553350732
  (0, 3613) 0.2274403788624066
  (0, 4642) 0.28226345093410824
  (0, 1298) 0.3052821039105251
  (0, 3070) 0.3052821039105251
  (0, 1114) 0.3430095133648276
  (0, 8460) 0.3107150520693983
  ...

3. 机器学习模型训练

使用scikit-learn库也可以方便地完成文本分类等机器学习任务。这里使用朴素贝叶斯分类器作为示例。

from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split

# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X_tfidf, spam['label'], test_size=0.3, random_state=42)

# 训练模型
nb = MultinomialNB()
nb.fit(X_train, y_train)

# 预测测试集
y_pred = nb.predict(X_test)

# 查看模型评价指标
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
print('Accuracy:', accuracy_score(y_test, y_pred))
print('Classification report:', classification_report(y_test, y_pred))
print('Confusion matrix:', confusion_matrix(y_test, y_pred))

运行以上代码可以看到输出的模型评价指标:

Accuracy: 0.9645885286783042
Classification report:               precision    recall  f1-score   support

         ham       0.98      0.99      0.99      1448
        spam       0.93      0.87      0.90       224

    accuracy                           0.96      1672
   macro avg       0.96      0.93      0.94      1672
weighted avg       0.96      0.96      0.96      1672

Confusion matrix: [[1434   14]
 [  29  195]]

4. 总结

本文介绍了Python中文本特征提取的常用方法,包括计数向量和TF-IDF向量,并展示了朴素贝叶斯分类器的应用。对于大规模的文本数据集,可以进一步优化计算速度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现文本特征提取的方法详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Python3.6通过自带的urllib通过get或post方法请求url的实例

    关于“Python3.6通过自带的urllib通过get或post方法请求url的实例”的攻略,可以给您提供以下的完整步骤和示例。 1. urllib库简介 Python中内置了一个HTTP请求库urllib,可用于发送GET、POST、PUT、DELETE、HEAD等请求。urllib.request模块定义了一个基本的类来处理URL请求,并提供了一些用于…

    python 2023年6月3日
    00
  • python 数据挖掘算法的过程详解

    下面是关于“Python数据挖掘算法的过程详解”的完整攻略。 1. 数据挖掘算法的过程 数据挖掘算法的过程通常包括以下步骤: 1.1 数据预处理 数据预处理是数据挖掘算法第一步,它的目的是将原始数据转换为可用于分析的数据。数据预处理通常包括数据清洗、数据集、数据变换和数据规约等步骤。 1.2 特征选择 特征选择是数据挖掘算法的第二步,它的的是从原始数据中选择…

    python 2023年5月13日
    00
  • Python – Gtk.TreeView 与 Gtk.ListStore 获取选定索引

    【问题标题】:Python – Gtk.TreeView with Gtk.ListStore get selected indexPython – Gtk.TreeView 与 Gtk.ListStore 获取选定索引 【发布时间】:2023-04-04 02:19:01 【问题描述】: 我想将项目存储在 gtk 列表中,我决定使用 Gtk TreeVie…

    Python开发 2023年4月6日
    00
  • python3 requests中文乱码之压缩格式问题解析

    让我给您介绍一下 Python3 requests 中文乱码之压缩格式问题解析的完整攻略。 问题解析 在使用 Python 中的 requests 发送请求时,如果返回的数据中包含中文字符,有时候会出现乱码问题。这可能是由于原始文本使用了压缩格式,而 requests 默认不会进行解压缩,导致出现乱码问题。 解决方法 要解决这个问题,我们需要在 reques…

    python 2023年5月20日
    00
  • 使用Python提取文本中含有特定字符串的方法示例

    使用Python提取文本中含有特定字符串的方法可以通过正则表达式和字符串查找实现。下面分别介绍这两种方法的具体实现过程。 正则表达式 正则表达式是一种强大的字符串匹配工具,可以帮助我们快速、准确地查找目标字符串。具体步骤如下: 导入re模块,使用re.search()函数进行匹配。 import re text = "Learning Python…

    python 2023年6月3日
    00
  • Python中的Numeric包和Numarray包使用教程

    Python中的Numeric包和Numarray包使用教程 什么是Numeric和Numarray包 Numeric和Numarray都是Python中的数值计算库,它们可以让Python在数值计算上更加地高效和灵活。 在Python2.5之前,Python内置的数值计算库是Numeric。然而,随着科学计算的需求增长,Numeric已经不能够满足大规模计…

    python 2023年6月5日
    00
  • 使用python库xlsxwriter库来输出各种xlsx文件的示例

    下面具体讲解如何使用Python库xlsxwriter来输出各种xlsx文件。 准备工作 首先需要安装xlsxwriter库,安装方法为在命令行下运行 pip install xlsxwriter 创建Excel文件 使用xlsxwriter库,可以创建新的Excel文件。代码示例: import xlsxwriter # 创建并打开Excel文件 work…

    python 2023年5月13日
    00
  • pip search报错问题及解决

    pipsearch报错问题及解决 问题描述 当使用pipsearch命令搜索Python包时,可能会出现以下错误信息: $ pipsearch some_package Traceback (most recent call last): File "/usr/local/bin/pipsearch", line 11, in <m…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部