在文本分析的情况下,当我应用 fit() 方法时,到底发生了什么? transform() 对文本数据做了什么?
In case of text analysis, when I apply fit() method, what exactly happens? And what does transform() do on the text data?
在文本分析的情况下,当我应用 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 class:
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = 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 方法在幕后做了什么,以及数据将如何通过 tranform 函数进行转换?特别是给定的数据是文本类型。
举个简单的例子:
from sklearn.feature_extraction.text import CountVectorizer
text = ['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}
现在处理的是单词对应的索引,而不是单词本身。
现在方法根据词汇表中提供的索引将这些句子转换成数字
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
您只需仔细观察并了解它是如何发生的,或者您可以阅读有关词嵌入的内容。
在文本分析的情况下,当我应用 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 class:
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = 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 方法在幕后做了什么,以及数据将如何通过 tranform 函数进行转换?特别是给定的数据是文本类型。
举个简单的例子:
from sklearn.feature_extraction.text import CountVectorizer
text = ['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}
现在处理的是单词对应的索引,而不是单词本身。
现在方法
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
您只需仔细观察并了解它是如何发生的,或者您可以阅读有关词嵌入的内容。