Tf-Idf vectorizer 从行而不是单词分析向量
Tf-Idf vectorizer analyze vectors from lines instead of words
我正在尝试分析由行给出的文本,我希望在 python 中使用 sckit-learn 包的 TF-IDF 向量化对行进行矢量化。
问题是矢量化可以通过单词或 n-gram 完成,但我希望它们针对行完成,并且我已经排除了将每一行矢量化为单个单词的解决方法(因为那样的话并且不会考虑它们的含义)。
查看文档我没有找到如何做到这一点,那么有没有这样的选择?
您似乎误解了 TF-IDF 向量化的作用。对于每个词(或 N-gram),它为该词分配一个权重,该权重是词频 (TF) 及其在文档中其他词的倒数频率 (IDF) 的函数。将它用于单词(例如,知道单词 "pizza" 出现的频率)或 N-gram(例如,"Cheese pizza" 表示 2-gram)
是有意义的
现在,如果你在线上做,会发生什么?除非你碰巧有一个语料库,其中的行完全重复(例如 "I need help in Python"),否则你的 TF-IDF 转换将是垃圾,因为每个句子在文档中只出现一次。如果你的句子确实总是与标点符号相似,那么就所有意图和目的而言,它们不是你语料库中的句子,而是单词。这就是为什么没有选择用句子做 TF-IDF 的原因:它在实践或理论上的意义为零。
我正在尝试分析由行给出的文本,我希望在 python 中使用 sckit-learn 包的 TF-IDF 向量化对行进行矢量化。 问题是矢量化可以通过单词或 n-gram 完成,但我希望它们针对行完成,并且我已经排除了将每一行矢量化为单个单词的解决方法(因为那样的话并且不会考虑它们的含义)。
查看文档我没有找到如何做到这一点,那么有没有这样的选择?
您似乎误解了 TF-IDF 向量化的作用。对于每个词(或 N-gram),它为该词分配一个权重,该权重是词频 (TF) 及其在文档中其他词的倒数频率 (IDF) 的函数。将它用于单词(例如,知道单词 "pizza" 出现的频率)或 N-gram(例如,"Cheese pizza" 表示 2-gram)
是有意义的现在,如果你在线上做,会发生什么?除非你碰巧有一个语料库,其中的行完全重复(例如 "I need help in Python"),否则你的 TF-IDF 转换将是垃圾,因为每个句子在文档中只出现一次。如果你的句子确实总是与标点符号相似,那么就所有意图和目的而言,它们不是你语料库中的句子,而是单词。这就是为什么没有选择用句子做 TF-IDF 的原因:它在实践或理论上的意义为零。