Python 使用sklearn计算仅给定单词列表的tf idf权重

Python 使用sklearn计算仅给定单词列表的tf idf权重,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我想从文档中获取给定单词列表的tf idf权重。 例如,我对下面的单词感兴趣 document_list = ['''document 1 blabla''', '''document 2 blabla'''] words = ['project', 'management', 'uml theory', 'wireframe'] 当然,我可以使用sklearn从文档中获取术语和权重。 但我只想使用scikit learn从文档组中获取上述单词的权重。 任何想法都会对我有很大帮助。这很简单,只

我想从文档中获取给定单词列表的tf idf权重。 例如,我对下面的单词感兴趣

document_list = ['''document 1 blabla''', '''document 2 blabla''']
words = ['project', 'management', 'uml theory', 'wireframe']
当然,我可以使用sklearn从文档中获取术语和权重。 但我只想使用scikit learn从文档组中获取上述单词的权重。
任何想法都会对我有很大帮助。

这很简单,只要将TfidfVectorizer安装到所需单词的固定列表中,然后使用您的模型即可

证明:

from sklearn.feature_extraction.text import TfidfVectorizer
words = ['project', 'management', 'uml theory', 'wireframe']
mod_tfidf = TfidfVectorizer()
mod_tfidf.fit_transform(words)
<4x5 sparse matrix of type '<class 'numpy.float64'>'
    with 5 stored elements in Compressed Sparse Row format>
编辑:

根据您最新的问题和评论:

mod_tfidf.fit(words)
mod_tfidf.transform(document_list)
编辑2:

为了完整性起见,使用词汇表参数初始化TfidfVectorizer也会产生相同的结果。注意:在这种情况下,单词是单独的单词列表:

mod_tfidf = TfidfVectorizer(vocabulary=words)
在这种情况下,结果特性的顺序将由您的单词顺序确定。您可以通过以下方式进行检查:

mod_tfidf.get_feature_names()

是否要将整个列表视为一个文档?多个文档,但我不想获取scikit learn提取的术语。我需要tf idf权重来证明我的话。我仍然不完全确定你想要实现什么。好吧,好吧,就我到目前为止对你的理解而言,scikit learn实际上可能不是这份工作的合适工具。然而,这里有一些代码可能对您有所帮助:我可能错了,但我相当肯定TfIdfVectorizer并不是根据您的需要定制的。我已经更新了这个问题,以便您更好地理解。我认为mod_tfidf.fit_转换了文档列表。在这里,我们需要使用文档列表,而不是我的文字。我有文档,我有有趣的文字,我需要获得tf idf权重,我的文字和文档。考虑到您的编辑,我没有什么要添加的。用你的话建立fir模型,然后转换所需文档的iterable,而不是像你的评论那样进行fit\u转换。我看不出你在代码中使用了文档列表的什么地方?酷。我会测试一下,然后告诉你。
mod_tfidf.get_feature_names()