问题标签 [tfidfvectorizer]
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.
scikit-learn - 使用已标记化输入的 sklearn TfidfVectorizer?
我有一个标记化句子的列表,并且想安装一个 tfidf Vectorizer。我尝试了以下方法:
其中错误为
有没有办法做到这一点?我有十亿个句子,不想再次标记它们。在此之前的另一个阶段之前,它们被标记化。
python - scikit-learn TfidfVectorizer 中的高效词形还原?
我做了一个慢速函数return_lema(tokens)
,它将标记列表转换为 lemas 列表。
当我把它放在这个例子 中的
build_tokenizer(self)
函数中时,它需要 37 秒。TfidfVectorizer
但是,然后我首先用 获取词汇表
CountVectorizer
,将词频矩阵中的标记输入到我的return_lema(tokens)
,然后执行TfidfTransformer
,这需要 13 秒。
第二种方式更快,因为return_lema(tokens)
不会得到重复的令牌。但是,现在我不能做正确的min_df
或max_df
像CountVectorizer
.
有没有办法让我的return_lema(tokens)
某个地方进入TfidfVectorizer
流程,这样在执行之前不需要一个一个文档,而是最终的特征词汇min_df
表max_df
?
java - Tf Idf 在一组文档上查找单词相关性
我有 2 本 txt 格式的书(6000 多行)。我想使用 Python 将每个单词与它的相关性关联起来(使用 td idf 算法)并按降序排列它们。我试过这段代码
我在这里找到了https://stevenloria.com/tf-idf/进行了一些更改,但这需要很多时间,几分钟后,它会崩溃说TypeError: coercing to Unicode: need string or buffer, float found
。为什么?
我还尝试通过 python https://github.com/mccurdyc/tf-idf/调用这个 Java 程序。该程序有效,但输出不正确:有很多单词本应具有高相关性,但被归类为 0 相关性。
有没有办法修复那个 Python 代码?或者,您能否建议我另一个正确执行我想要的 tf-idf 实现?
python - 将 TfidfVectorizer 稀疏矩阵转换为数据帧或密集数组会导致内存错误
我的输入是一个 pandas 数据框(“向量”),它有一列和 178885 行,其中包含最多 600 个单词的字符串。
我正在使用 TfidfVectorizer 进行特征提取(unigrams):
不幸的是,我收到如下内存错误。我在 Windows 10 机器上使用 64 位版本的 python 3.6 和 16GB RAM。我对 python 生成器等很感兴趣,但我不知道如何在不限制功能数量的情况下解决这个问题(这不是一个真正的选择)。任何想法如何解决这个问题?我以前可以以某种方式拆分我的数据框吗?
追溯:
python - 如何在将训练语料库传递给 sklearn 中的 TfidfVectorizer 之前应用自定义词干分析器?
这是我的代码,我有一个句子,我想在将其传递给 TfidfVectorizer 以最终获得句子的 tf-idf 表示之前对其进行标记和阻止:
我得到输出:
如果我改变参数
到:
我评论了这一行:
我希望得到相同的结果,但结果不同:
为什么?我是否正确实施了外部词干分析器?至少,即使 stop_words=None,停用词(“è”)似乎在第一次运行时就被删除了。
[编辑] 正如 Vivek 所建议的,问题似乎是默认的令牌模式,当 tokenizer = None 时无论如何都会应用它。因此,如果在 tokenizer_stemmer_ita 的开头添加这两行:
我应该得到正确的行为,实际上我在上面的简单示例中得到了它,但是对于一个不同的示例:
我不知道,这两个输出是不同的:
和
为什么?在这种情况下,问号似乎是问题所在,没有它,输出是相同的。
[edit2] 看来我必须先停止然后应用正则表达式,在这种情况下,两个输出是相同的。
python - Scikit - TF-IDF 空词汇
我必须计算两个或多个文本的距离/相似度。有些文本真的很小或不能形成正确的英文单词等,“A1024515”。这意味着它应该接受列表中的每个单词。
作为一个测试用例,我使用了以下列表作为语料库。
但是,我收到以下错误
如何确保列表被接受为可能的单词并确保不从语料库中删除停用词?
python - 在 sklearn TfidfVectorizer 中执行停用词删除过程时?
如果我将自定义停用词列表传递给TfidfVectorizer
,何时会准确删除停用词?根据文档:
stop_words :
string
{'english'},list
, 或None
(默认)...
如果是列表,则假定该列表包含停用词,所有这些都将从生成的标记中删除。仅适用于
analyzer == 'word'
。
所以看起来这个过程是在标记化之后发生的,对吗?产生疑问是因为如果标记化还涉及词干,我认为存在错误地跳过(而不是删除)停用词的风险,因为在词干之后,它不再被识别。
python-3.x - 从稀疏矩阵中删除条件列
为了从稀疏矩阵中提取重要特征,我想简单地删除平均分数小于某个指定阈值的列。考虑以下示例
现在计算每个特征的平均分数
平均结果是
在我的情况下,如何删除平均分数低于某个阈值的那些列,例如 0.23?
python - 如何在不从头重新训练整个模型的情况下,在 sklearn 中扩展 tfidf vectorizer 的单词?
我有一堆文本文档,我将它们扔给 tfidf 矢量化器,我进一步将其用于多标签文本分类。将来我会不断收到更多的文件。现在,如何在不从头开始重新训练模型的情况下向它从未见过的向量器添加新单词?partial_fit 是唯一的选择吗,导致 OvR 和管道无法使用它?这是我说的在线学习文本文档的链接。
kernel - 当对 TfIdfVectorizer 使用 linear_kernel 或 cosine_similarity 时,我收到错误“内核死亡,正在重新启动”
使用 linear_kernel 或cosine_similarity
forTfIdfVectorizer
时,我收到错误"Kernel dead, restarting"。
我正在为 TfID 方法 Vectorizer 和fit_transform
一些文本数据运行 scikit 学习函数,如下例所示,但是当我想计算距离矩阵时,出现错误"Kernel dead, restarting"。
无论我使用的是cosine_similarity
还是linear_kernel
函数:
也许问题是我的数据大小?
我的 tiidf 矩阵是 (178350,143529),它应该生成一个 (178350,178350) cosine_sim 矩阵。