Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使tfidf矢量化器以特征的形式返回文档数_Python_Scikit Learn_Tfidfvectorizer - Fatal编程技术网

Python 使tfidf矢量化器以特征的形式返回文档数

Python 使tfidf矢量化器以特征的形式返回文档数,python,scikit-learn,tfidfvectorizer,Python,Scikit Learn,Tfidfvectorizer,我正在使用适合N个文档的Sklearn TFIDFvectorier,然后我希望根据每个文档中的tfidf分数获得单词的向量表示 一些代码可以帮助: from sklearn.feature_extraction.text import TfidfVectorizer model = TfidfVectorizer() corpus = ["first corpus with words like dog and cat", "second corpus with words like ca

我正在使用适合N个文档的Sklearn TFIDFvectorier,然后我希望根据每个文档中的tfidf分数获得单词的向量表示

一些代码可以帮助:

from sklearn.feature_extraction.text import TfidfVectorizer

model = TfidfVectorizer()

corpus = ["first corpus with words like dog and cat", "second corpus with words like car and plane"]

model.fit(corpus)

model.transform(["cat"]).toarray().shape

>> (1, 11)
为什么我得到11个功能?我希望有两个功能,因为我安装的模型只有两个文件

因此,我不会这样做:

[0, tfidfscore]

我阅读了文档,对TF-IDF有了基本的了解,我可以得出一个结论这不是专家意见。

根据,转换返回一个稀疏矩阵,其维数为(n_个样本,n_个特征)

返回X:sparse矩阵,[n_个样本,n_个特征]

Tf idf加权文档术语矩阵

现在您的n_示例为1,n_特征来自模型。。。它计算出来等于11

转换返回的是TD-IDF加权文档术语矩阵,其中每行对应文档,每列对应特征

您可以通过说“print(model.get_feature_names())”来了解您的功能。在您的情况下,它将给出以下输出

['and'、'car'、'cat'、'corpus'、'dog'、'first'、'like'、'plane'、'second'、'with'、'words']
如您所见,共有11个功能。现在cat是第三个频率必须很高的元件。如果你说“print(model.transform([“cat”]).toarray()”,你就会知道整个矩阵。如前所述,将有一行(当您在一个文档中传递时…“cat”和11列(由于上述原因)。正如您在下面第三列中看到的,频率最高为1.00

[[0.0.1.0.0.0.0.0.0.0.0.0.]]
我对您的代码做了最小的更改,希望它能帮助您

从sklearn.feature\u extraction.text导入TfidfVectorizer
模型=TfidfVectorizer()
语料库=[“第一个语料库中有像狗和猫这样的词”,“第二个语料库中有像汽车和飞机这样的词”]
模型拟合(语料库)
返回的\u Features=model.get\u Features\u names()
返回了\u TF\u IDF\u DTM=model.transform([“cat”]).toarray()
打印(返回的功能)
打印(返回的\u TF\u IDF\u DTM)

我希望这会有帮助。最好的

似乎你想做这样的事情

from sklearn.feature_extraction.text import TfidfVectorizer

model = TfidfVectorizer()

corpus = ["first corpus with words like dog and cat", "second corpus with words like car and plane"]

X = model.fit_transform(corpus)

words = model.get_feature_names()
word2idx = dict(zip(words, range(len(words))))

print(X[:, word2idx['cat']].todense())

这将为您提供tf idf矩阵中单词“cat”的核心对应原始数据。您的词汇量为11。这就是为什么您会得到
11
特征的特征向量。为什么您希望有2个特征?tf-idf特征是按单词计算的,而不是按文档计算的。