Python Tf Idf矢量器分析来自行而不是单词的矢量

Python Tf Idf矢量器分析来自行而不是单词的矢量,python,scikit-learn,vectorization,tf-idf,text-analysis,Python,Scikit Learn,Vectorization,Tf Idf,Text Analysis,我试图分析一个由行给出的文本,我希望使用sckit学习包的TF-IDF矢量化在python中对行进行矢量化。 问题是,矢量化可以通过单词或n-gram来完成,但我希望它们是针对行的,我已经排除了将每行矢量化为单个单词的方法(因为这样就不会考虑单词及其含义) 通过查看文档,我没有找到如何做到这一点,所以有这样的选择吗?您似乎误解了TF-IDF矢量化的作用。对于每个单词(或N-gram),它为单词分配一个权重,该权重是术语频率(TF)和文档中其他术语的逆频率(IDF)的函数。将其用于单词(例如,知道

我试图分析一个由行给出的文本,我希望使用sckit学习包的TF-IDF矢量化在python中对行进行矢量化。 问题是,矢量化可以通过单词或n-gram来完成,但我希望它们是针对行的,我已经排除了将每行矢量化为单个单词的方法(因为这样就不会考虑单词及其含义)


通过查看文档,我没有找到如何做到这一点,所以有这样的选择吗?

您似乎误解了TF-IDF矢量化的作用。对于每个单词(或N-gram),它为单词分配一个权重,该权重是术语频率(TF)和文档中其他术语的逆频率(IDF)的函数。将其用于单词(例如,知道“pizza”一词出现的频率)或N克(例如,2克的“Cheese pizza”)是有意义的


现在,如果你在网上做,会发生什么?除非您碰巧有一个完全重复行的语料库(例如,“我需要Python中的帮助”),否则您的TF-IDF转换将是垃圾,因为每个句子在文档中只出现一次。如果你的句子确实总是与标点符号相似,那么无论出于何种目的,它们都不是你语料库中的句子,而是单词。这就是为什么没有选择对句子进行TF-IDF的原因:它没有任何实际或理论意义

是的,我明白,这正是我想做的。我有几乎完全重复的行。这就是重点:如果它们几乎完全重复,那么它们在Scikit眼中将完全不同,就像TF-IDF对单词的转换将“单词”和“工作”视为完全不同的单词一样。如果你想通过重复相同的单词来分析它们的相似性,那么你需要对它们的单词(或N-gram)内容进行向量化,然后将向量或一个句子与另一个句子的向量进行比较。如果你想将一个完整的文档与另一个文档进行比较,那么你需要比较文档之间句子的平均余弦差。我想做一些类似于n-grams分析的事情,问题是我的行的长度不同。那么简单的单词或二元图分析就可以了。自己尝试:在TF-IDF向量空间中转换完整的句子语料库(使用单个单词作为分析单位),并比较两个句子的余弦相似性,这两个句子只因一个极频繁的单词而变化(例如“the”)、两个句子因一个极不频繁的单词而变化(“鸭嘴兽”),还有两个完全不同的句子。从第一次比较到最后一次比较,你会看到余弦相似性下降。我来试试。你能解释一下我是如何用这种方法找到两个句子的相似之处的吗?转换到向量空间后