当前位置: 首页 > 知识库问答 >
问题:

如何为TfidfVectorzer使用列表列表或集合列表?

秦权
2023-03-14

我正在使用skLearning TfidfVectorzer进行文本分类。

我知道这个矢量器需要原始文本作为输入,但使用列表是可行的(请参见input1)。

但是,如果我想使用多个列表(或集合),我会得到以下属性错误。

有人知道如何解决这个问题吗?提前谢谢!

    from sklearn.feature_extraction.text import TfidfVectorizer

    vectorizer = TfidfVectorizer(min_df=1, stop_words="english")
    input1 = ["This", "is", "a", "test"]
    input2 = [["This", "is", "a", "test"], ["It", "is", "raining", "today"]]

    print(vectorizer.fit_transform(input1)) #works
    print(vectorizer.fit_transform(input2)) #gives Attribute error

input 1:
  (3, 0)    1.0

input 2:

Traceback(最近一次调用):File",第1行,在File"/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py",第1381行,在fit_transformX=超级(TfidfVectorzer,自我)。fit_transform(raw_documents)File"/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py",第869行,在fit_transformself.fixed_vocabulary_)文件/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py,第792行,_count_vocab分析(文档)中的功能:文件/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py,第266行,令牌化(预处理(self.decode(文档))),stop_words)文件/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/sklearn/feature_extraction/text.py,第232行,返回lambda x:strip_accents(x.lower())属性错误:'list'对象没有属性'lower'

共有1个答案

鲜于勇
2023-03-14

请注意,input1可以工作,但它将列表(字符串)的每个元素视为要向量化的不同文档。

在input2的情况下,我假设您希望对每个“句子”(子列表)进行矢量化。一种解决方案是使用以下列表理解语法:

input2_corrected = [" ".join(x) for x in input2]

从而产生

['This is a test', 'It is raining today']

它不再产生属性错误。

 类似资料:
  • 问题内容: 我有一个在列表中存储一些数据的对象。该实现可能会在以后更改,并且我不想向最终用户公开内部实现。但是,用户必须具有修改和访问此数据集合的能力。目前我有这样的事情: 这是否意味着我已允许内部实施细节泄漏出去?我应该这样做吗? 问题答案: 这仅取决于您是否希望您的用户能够索引数据?如果是,请使用列表。两者都是接口,因此您不会泄漏实现细节,实际上,您只需要确定所需的最低功能即可。

  • 问题内容: 我有一个 清单清单 : 我想转换为一个 集合, 即删除重复列表并从中创建一个仅包含 唯一 列表的新列表。 在上述情况下,所需答案将是 但是当我这样做时,它给了我错误 TypeError:无法散列的类型:“列表” 你能解决我的问题吗?提前致谢! 问题答案: 由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样 我们一次遍历一个列表,将其转换为一个元组

  • 问题内容: 我目前正在使用“设置”结构使用Redis。 我想知道是否有可能自动清理空的“ set”吗? 否则找到一个cron /进程来定期清理空的“ set” 更新: 更笼统的问题是,“(nil)”和“(空列表或集合)”之间存在差异(内存使用情况) 例: 要么 问题答案: 这已经是自动的。如果集合为空,则将其从名称空间中删除。 您不必执行任何特定操作即可从此行为中受益。 要回答第二个问题,(nil

  • 问题内容: 比较两个列表/集合并输出差异的最简单方法是什么?是否有任何内置函数可以帮助我比较嵌套列表/集? 输入: 预期产量: 问题答案: 因此,您需要两个项目列表之间的区别。 首先,我将每个列表列表变成一个元组列表,这样,由于元组是可哈希化的(列表不是),因此您可以将元组列表转换为一组元组: 然后可以进行设置: 编辑(由sdolan建议):您可以在一个列表中为每个列表完成最后两个步骤: 注意:是

  • 我有包含项目数组的类存储。 每个项目(类项目)有不同的体积,我正在添加项目到商店。假设我有20个项目,我把10个添加到2或3个不同的商店,我必须根据这些项目的数量在商店中排序。

  • 我正在尝试将列表拆分为列表列表,其中每个列表的最大大小为4。 我想知道如何使用lambdas做到这一点。 目前我的做法如下: 更新 似乎没有一种简单的方法可以使用lambdas来拆分列表。虽然所有的答案都很受欢迎,但它们也是一个很好的例子,说明lambdas不能简化事情。