将术语-文档矩阵限制为最常见的一元组

Posted

技术标签:

【中文标题】将术语-文档矩阵限制为最常见的一元组【英文标题】:Restricting the term-document matrix to most frequent unigrams 【发布时间】:2021-04-21 11:04:31 【问题描述】:

下面的代码作为分析海量语料的例子。我想将术语文档矩阵限制为 1000 个最常见的 unigram,但将 max-features 参数更改为 n 仅返回第一个 n unigram。有什么建议吗?

from sklearn.feature_extraction.text import TfidfVectorizer 
import pandas as pd

corpus = ['Hi my name is Joe.', 'Hi my name is Donald.'] 
vectorizer = TfidfVectorizer(max_features=3) 
X = vectorizer.fit_transform(corpus).todense()
    
df = pd.DataFrame(X, columns=vectorizer.get_feature_names()) 
df.to_csv('test.csv')

【问题讨论】:

【参考方案1】:

我假设这是您示例中的一个问题,但根据TfidfVectorizer 的 sklearn 文档,max_features 的以下内容:

如果不是None,则构建一个词汇表,仅考虑按词频在整个语料库中排序的顶部max_features

当有相同频率的单词时,可能会考虑第一个 n 术语,否则它应该返回正确的结果。如果它仍然不起作用,我强烈建议在 sklearn 存储库中打开错误报告。但是,您也可以自己手动构建词汇表(通过设置vocabulary 选项,使用您自己对“频率”的解释:

vocabulary:映射或可迭代,default=None 一个映射(例如,一个字典),其中键是术语,值是特征矩阵中的索引,或者是可迭代的术语。如果没有给出,则从输入文档中确定一个词汇表。

【讨论】:

以上是关于将术语-文档矩阵限制为最常见的一元组的主要内容,如果未能解决你的问题,请参考以下文章

将 Solr 的 TermsComponent 中的术语限制为源自某些文档的术语

如何使用 Ant Design 将输入数字限制为最多两位小数?

couchdb 气垫船限制,将任意 erlang 术语存储到 Couchdb

一元线性最小二乘法正规方程组的求解过程

1.12.4

只有当四肢具有相同的值并且限制为最多出现时,如何填补数据空白?