将术语-文档矩阵限制为最常见的一元组
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 将输入数字限制为最多两位小数?