使用CountVectorizer在Python中详细提取文本特征

在Python中详细使用CountVectorizer提取文本特征

Towfiqu barbhuiya在Unsplash上的照片

使用CountVectorizer在Sklearn中高效地进行文本转换的所有必要知识

任何自然语言处理(NLP)项目所需的最基本数据处理就是将文本数据转换为数值数据。只要数据以文本形式存在,我们就无法对其进行任何计算操作。

此类文本到数值数据转换有多种方法可用。本教程将解释scikit-learn库中最基本的向量化方法之一——CountVectorizer方法。

这种方法非常简单。它将每个单词出现的频率作为数值。通过一个例子来说明。

在下面的代码块中:

  • 我们将导入CountVectorizer方法。
  • 调用该方法。
  • 将文本数据适配到CountVectorizer方法中,并将其转换为数组。
import pandas as pd from sklearn.feature_extraction.text import CountVectorizer #要进行向量化的文本text = ["大家好!我是Lilly。我的姑姑也叫Lilly。我爱我的姑姑。\        我正在努力学习如何使用计数向量化工具。"]cv = CountVectorizer() count_matrix = cv.fit_transform(text)cnt_arr = count_matrix.toarray()cnt_arr

输出:

array([[1, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1]],      dtype=int64)

这里,我将文本数据表示为数字值。

我们如何知道哪些值代表文本中的哪些单词?

为了搞清楚这一点,将数组转换为一个DataFrame是有帮助的,其中列名将是单词本身。

cnt_df = pd.DataFrame(data=cnt_arr, columns=cv.get_feature_names())cnt_df

现在,清晰可见。单词“also”的值为1,意味着“also”在文本中只出现了一次。单词“aunt”在文本中出现了两次。因此,单词“aunt”的值为2。

在上一个例子中,所有的句子都在一个字符串中。因此,我们只得到了四个句子的一行数据。让我们重新排列文本并…