tfidf python 中文 实例

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer

if __name__ == "__main__":
    corpus = ["我 来到 北京 清华大学",  # 第一个文本切词后的结果,词之间以空格隔开
              "他 来到 了 网易 杭研 大厦",  # 第二个文本的切词结果
              "小明 硕士 毕业 与 中国 科学院",  # 第三个文本的切词结果
              "我 爱 北京 天安门"]  # 第四个文本的切词结果
    def cut(sentence):
        return sentence.split(" ")
    vectorizer = CountVectorizer(analyzer="word", tokenizer=cut)  # 将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i个文本下的词频
    transformer = TfidfTransformer()  # 统计每个词语的tf-idf权值
    X = vectorizer.fit_transform(corpus)
    tfidf = transformer.fit_transform(X)  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
    word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词语
    print(word)
    print(X.toarray())
    weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i个文本中的tf-idf权重
    for i in range(len(weight)):  # 打印每个文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一个文本下的词语权重
        print("-------这里输出第", i, u"个文本的词语tf-idf权重------")
        for j in range(len(word)):
            print(word[j], weight[i][j])

[‘与’, ‘中国’, ‘了’, ‘他’, ‘北京’, ‘大厦’, ‘天安门’, ‘小明’, ‘我’, ‘来到’, ‘杭研’, ‘毕业’, ‘清华大学’, ‘爱’, ‘硕士’, ‘科学院’, ‘网易’]
[[0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0]
[0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1]
[1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0]
[0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0]]
-------这里输出第 0 个文本的词语tf-idf权重------
与 0.0
中国 0.0
了 0.0
他 0.0
北京 0.4658085493691629
大厦 0.0
天安门 0.0
小明 0.0
我 0.4658085493691629
来到 0.4658085493691629
杭研 0.0
毕业 0.0
清华大学 0.5908190806023349
爱 0.0
硕士 0.0
科学院 0.0
网易 0.0
-------这里输出第 1 个文本的词语tf-idf权重------
与 0.0
中国 0.0
了 0.4217647821447532
他 0.4217647821447532
北京 0.0
大厦 0.4217647821447532
天安门 0.0
小明 0.0
我 0.0
来到 0.3325241986862672
杭研 0.4217647821447532
毕业 0.0
清华大学 0.0
爱 0.0
硕士 0.0
科学院 0.0
网易 0.4217647821447532
-------这里输出第 2 个文本的词语tf-idf权重------
与 0.408248290463863
中国 0.408248290463863
了 0.0
他 0.0
北京 0.0
大厦 0.0
天安门 0.0
小明 0.408248290463863
我 0.0
来到 0.0
杭研 0.0
毕业 0.408248290463863
清华大学 0.0
爱 0.0
硕士 0.408248290463863
科学院 0.408248290463863
网易 0.0
-------这里输出第 3 个文本的词语tf-idf权重------
与 0.0
中国 0.0
了 0.0
他 0.0
北京 0.43779123108611473
大厦 0.0
天安门 0.5552826649411127
小明 0.0
我 0.43779123108611473
来到 0.0
杭研 0.0
毕业 0.0
清华大学 0.0
爱 0.5552826649411127
硕士 0.0
科学院 0.0
网易 0.0

你可能感兴趣的:(自然语言处理NLP,Information,Retrieval)