问题标签 [countvectorizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 将非 ascii 字符串传递给 fit_transform
我有这个功能,它提供了一个包含很多单词的文本文档。遇到下面这样的词时,它会窒息。如何指定正确的编码?我尝试了 encoding = 'string'、'unicode' 等和 decode_error='ignore' 等,但它不起作用。
co¤a co¤azo
编辑:我更改了代码,以便跳过异常。将其归结为最简单的错误(引发异常的代码片段,然后是错误输出):
打印'[]p[]p['的输入:
machine-learning - CountVectorizer MultinomialNB ValueError:维度不匹配
我正在尝试让我的 MultinomialNB 工作。我在我的训练和测试集上使用了 CountVectorizer,当然两个 setz 中都有不同的词。所以我明白了,为什么会出错
发生,但我不知道如何解决它。我尝试CountVectorizer().transform
了而不是CountVectorizer().fit_transform
按照其他帖子中的建议(SciPy 和 scikit-learn - ValueError: Dimension mismatch)但这只是给了我
如何正确使用 CountVectorizer?
python - 在 FeatureUnion 中使用 CountVectorizor 来使用异质特征
我有一个文本分类问题,想添加两个功能。我拥有的数据是电影评论(imbd 数据集)。我想使用两个特征作为输入变量来将评论分类为正面或负面情绪。这两个特征是:评论长度(所以使用的词)和评论的词袋表示。
所以另一件事是我想使用FeatureUnion
sklearn 中的对象来完成这个。所以我想出了如何做到这一点,通过使用hstack
来连接两个稀疏矩阵。但作为学习目的,我很好奇如何去做,FeatureUnion
因为我无法解决。
我到现在使用的资源:
- Michelle Fullwood - 在 scikit-learn 中使用管道和 FeatureUnions
- Zac Stewart - 使用 scikit-learn 管道和 FeatureUnions
- Julie Michelman - 熊猫、管道和自定义变形金刚
到目前为止,我有以下代码:
自定义变形金刚:
和另一个自定义变压器:
请注意,X_train、y_train、X_test 和 y_test 数据集被转换为 pandas DataFrame,因此管道的输入将是一个数据帧。
我认为问题出在CountVectorizer
, 因为它输出一个稀疏矩阵。我应该以 的类型制作自己的自定义转换器CountVectorizer
,所以它会返回一个数据框吗?如果是这样,使用大型语料库的计算成本不是很高吗?我真的可以使用一些帮助我有一个想法,我没有得到完整的图片CountVectorizer
在FeatureUnion
课堂上工作。
python - Vectorizer Python中的单词组合
我有一个包含医学文本数据的数据集,我对它们应用 tf-idf 矢量化器并计算单词的 tf idf 分数,如下所示:
所以基本上我的问题是以下 - 当我应用 TfidfVectorizer 时,它会将文本拆分为不同的单词,例如:“疼痛”、“头痛”、“恶心”等等。如何在 TfidfVectorizer 的输出中获得单词组合,例如:“严重疼痛”、“丛集性头痛”、“恶心呕吐”。谢谢
python - 从数组和列表中获取各种令牌计数统计信息的更有效方法
我正在从电子邮件文本列表(以 csv 格式存储)中对垃圾邮件进行分类,但在此之前,我想从输出中获取一些简单的计数统计信息。我使用 sklearn 中的 CountVectorizer 作为第一步,并通过以下代码实现
输出存储在矩阵(名为“a”)或数组列表(名为“a_list”)格式中,如下所示
但我发现从这些输出中获取一些简单的计数统计信息有点困难,例如最长/最短标记、标记的平均长度等。如何从我生成的矩阵或列表输出中获取这些简单的计数统计信息?
python - CountVectorizer MultinomialNB 中的尺寸不匹配错误
在我提出这个问题之前,我必须说我已经彻底阅读了这个板上超过 15 个类似的主题,每个主题都有不同的建议,但所有这些都无法让我正确。
好的,所以我将我的“垃圾邮件”文本数据(最初为 csv 格式)拆分为训练和测试集,使用 CountVectorizer 及其“fit_transform”函数来拟合语料库的词汇表并从文本中提取字数统计特征。然后我应用 MultinomialNB() 从训练集学习并在测试集上进行预测。这是我的代码(简化):
我从之前的问题线程中收集到的建议是 (1) 在 X_test 上仅使用 .transform(),或 (2) 确定原始垃圾邮件数据中的每一行是否为字符串格式(是的,它们是),或 (3)在 X_test 上什么也不做。但他们都没有敲响警钟,Python 一直给我“尺寸不匹配”错误。挣扎了 4 个小时后,我不得不屈服于 Stackoverflow。如果有人能就此启发我,将不胜感激。只是想知道我的代码出了什么问题以及如何使尺寸正确。
谢谢你。
顺便说一句,原始数据条目看起来像这样
python-3.x - CountVectorizer 中的 Tokenizer 运行多次
当 python 运行 CountVectorizer 时,它会调用 tokenizer 超过 1 次,准确地说是很多次,所以下面的代码运行如下:
分割空间
词干标记
过滤令牌
分割空间
词干标记
过滤令牌
分割空间
...
这使得代码运行太慢。我无法弄清楚为什么矢量化器会这样运行,以及如何防止它并加快代码速度?
我检查了,问题不在于标记器功能,它运行正常,但是当我运行最后一行时,它多次调用标记器。
python - Sklearn CountVectorizer 的 Python 访问标签
这是我清理后的df:
如您所见,有两条记录具有相同的number
. 现在我将创建并拟合矢量化器。
现在我要变身了。
现在,如果我看看freq
...
...似乎没有一种合乎逻辑的方式来访问原始number
. 我已经尝试过遍历每一行的方法,但这会遇到问题,因为每个number
. 使用分组 df 的循环...
...工作,但性能很糟糕(即 12 小时运行 45,000 个文档长度为一个句子)。
如果我改变
至
我得到每个文档的每个 ngram 的频率数组。这很好,但是它不允许我将该列表数组推送到数据框中。而且我仍然无法访问nunmber
.
如何在number
不循环分组 df 的情况下访问每个 ngram 的原始标签?我想要的结果是:
编辑:这是对这个问题的重新审视:Convert CountVectorizer and TfidfTransformer Sparse Matrices into separate Pandas Dataframe Rows。但是,在实施该答案中描述的方法后,我面临大型语料库的内存问题,因此它似乎不可扩展。
machine-learning - 训练算法时处理稀疏矩阵和多个数值特征
我有一个如下所示的数据框:
我目前正在尝试训练一种机器学习算法,它将文本与除(丢弃)和(真实标签)'description'
之外的其余数字特征一起纳入。'priority'
'priorityLevel'
这基本上是一个 NLP 应用程序。我遇到的问题是'description'
必须首先通过一个'CountVectorizer()'
函数:
X = df['description']
cv = CountVectorizer()
X = cv.fit_transform(X)
当我将其传递给训练算法时,返回的输出与数据帧的其余部分不兼容。
我需要能够X
在它被矢量化后组合df[['CDT', 'JDT', 'PDE', 'Platform', 'Web Tools']]
成一个变量,以便拆分和训练:
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2,random_state=101)
nb = MultinomialNB()
nb.fit(X_train, y_train)
本质上,X
应该包含矢量化文本以及数值变量。迄今为止所有的努力都失败了。
我也尝试过通过管道进行操作:
pipeline = Pipeline([
('bow', CountVectorizer()), # strings to token integer counts.
('classifier', MultinomialNB()),
])
pipeline.fit(X_train,y_train)
但我收到错误,表明尺寸不兼容。
有谁知道一种更简单的方法来完成将矢量化器返回的稀疏矩阵与数值矩阵一起,以便我可以训练算法?
感谢所有帮助。
编辑:
我只使用矢量化文本训练了这个算法,没有任何问题。尝试将其他功能合并到训练集中时出现了我的问题。
python - CountVectorizer(): StreamBackedCorpusView' 对象没有属性 'lower'
我正在尝试使用以下代码在 NLTK 电影评论语料库上运行和实例化 CountVectorizer():
我收到以下错误:
nltk.corpus.movie_reviews.words(rev_pos)
有标记的句子....例如:
谁能告诉我我做错了什么?(rev_list)
我假设我在创建电影评论列表时误操作了一些步骤。
TIA