TfIdf的计算

2019-10-16  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读