美文网首页
TfIdf的计算

TfIdf的计算

作者: 云彩修建站站长 | 来源:发表于2019-10-16 22:48 被阅读0次

    一个字的tfidf离不开他所在的doc,因为要计算这个字的在他所在doc的tf。
    参考

    sklearn

    sklearn计算tfidf的类是sklearn.feature_extraction.text.TfidfVectorizer
    其中fit(docs)的作用是从docs里面学习idf,在做transform(docs)的时候,再从docs里面获取tf做正式计算。

    def sentence_vec(contents, sentence):
        """
        :param contents: 需要fit的docs,doc中的句子都需要经过jieba分词
        :param sentence: 需要transform的句子,jieba分词后的句子
        :return:list 每个word对应的tfidf,返回的长度等于len(sentence.split())
        """
        vectorizer = TfidfVectorizer(token_pattern=r"(?u)\b\w+\b").fit(contents)
        vocabulary = vectorizer.vocabulary_
        tfidf_handler = vectorizer.transform([sentence])  # 传入句子组成的list
        tfidf_arrays = tfidf_handler.toarray()
    
        sentence_tfidf = []
        for word in sentence.split():
            index = vocabulary.get(word, -1)
            if index == -1:
                sentence_tfidf.append(0)
            else:
                tfidf = tfidf_arrays[0][index]
                sentence_tfidf.append(tfidf)
        return sentence_tfidf
    

    相关文章

      网友评论

          本文标题:TfIdf的计算

          本文链接:https://www.haomeiwen.com/subject/ovuumctx.html