在文本分析中,当我调用fit()方法时,具体发生了什么?transform()方法对文本数据做了什么?

在文本分析中,当我调用fit()方法时,具体发生了什么?transform()方法对数据做了什么?

我可以理解对于数值类型数据的处理,但对于文本数据却难以想象其过程。

我有一个文本数组

sents_processed[0:5]['so there is no way for me plug in here in us unless go by converter', 'good case excellent value', 'great for jawbone', 'tied charger for conversations lasting more than minutes major problems', 'mic is great']

现在为了将其向量化,我使用CountVectorizer类:

from sklearn.feature_extraction.text import CountVectorizervectorizer = CountVectorizer(analyzer= 'word', tokenizer= None, preprocessor= None, stop_words= None, max_features= 4500)data_features = vectorizer.fit_transform(sents_processed)print(data_features.toarray())[[0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] ... [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0] [0 0 0 ... 0 0 0]]

我知道我会得到长度为4500的向量。然而,我无法想象fit方法在幕后具体做了什么,以及数据是如何通过transform函数转换的?特别是给定的数据是文本类型。


回答:

我们来看一个简单的例子:

from sklearn.feature_extraction.text import CountVectorizertext = ['this is a sentence', 'this is another sentence', 'not a sentence']

这里我有三句话

vector = CountVectorizer(analyzer= 'word', tokenizer= None, max_features= 4500)dt = vector.fit_transform(text)

这个过程的第一步是创建一个词汇表。它为所有句子中的每个单词分配一个数字

print(vector.vocabulary_) = {'this': 4, 'is': 1, 'sentence': 3, 'another': 0, 'not': 2}

现在它处理的是单词的对应索引而不是单词本身。方法<vector.fit_transform()>根据词汇表中提供的索引将这些句子转换成数字

data_features = vectorizer.fit_transform(text)print(data_features.toarray())= [[0 1 0 1 1] [1 1 0 1 1] [0 0 1 1 0]]

如果你只分析这个数组,它只是显示了句子。在五个单词的词汇表中,要以数组形式表示一个句子,首先我们有一个五个(词汇表的大小)零的数组,代表一个空句子

[0, 0, 0, 0, 0].

现在,如果我们拿起第一句话,并在上述数组中对应索引的位置放置1,我们就得到了那个数组

[0            1(is)       0          1(sentence)           1(this)][1(another)   1(is)       0          1(sentence)           1(this)][0            0           1(not)     1(sentence)           0      ]

如果该单词出现在那个句子中,则为1,否则为0

你只要仔细观察就能明白它是如何生成的,或者你可以阅读关于词嵌入的知识。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注