tf idf java_TF-IDF算法原理及其使用详解

TF-IDF是一种衡量关键词重要性的统计方法,适用于文本分析。TF表示词频,IDF表示逆文档频率,两者结合能有效排除常用词影响。在Java中,可以使用Sklearn的TFIDFVectorizer实现该算法,通过设置stopwords参数优化结果。文章展示了如何使用TFIDFVectorizer进行文本处理,包括vocabulary_、stop_words和常用参数的解释。
摘要由CSDN通过智能技术生成

TF-IDF(Term Frequency-inverse Document Frequency)是一种针对关键词的统计分析方法,用于评估一个词对一个文件集或者一个语料库的重要程度。一个词的重要程度跟它在文章中出现的次数成正比,跟它在语料库出现的次数成反比。这种计算方式能有效避免常用词对关键词的影响,提高了关键词与文章之间的相关性。

其中TF指的是某词在文章中出现的总次数,该指标通常会被归一化定义为TF=(某词在文档中出现的次数/文档的总词量),这样可以防止结果偏向过长的文档(同一个词语在长文档里通常会具有比短文档更高的词频)。IDF逆向文档频率,包含某词语的文档越少,IDF值越大,说明该词语具有很强的区分能力,IDF=loge(语料库中文档总数/包含该词的文档数+1),+1的原因是避免分母为0。TFIDF=TFxIDF,TFIDF值越大表示该特征词对这个文本的重要性越大。

可以在Sklearn中调用TFIDFVectorizer库实现TF-IDF算法,并且可以通过stopwords参数来设置文档中的停用词(没有具体意义的词,如助词,语气词等),使得停用词不纳入计算范围,提高算法的精确性。

下面具体展示如何使用TFIDFVectorizer库:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [

'This is the first document.',

'This document is the second document.',

'And this is the third one.',

'Is this the first document?',

]

vectorizer = TfidfVectorizer()

tdm = vectorizer.fit_transform(corpus)

space = vectorizer.vocabulary_

print(space)

常用参数/函数解释:vocabulary_:特征和特征在TD-IDF中位置的一个对应关系,比如上例中vocabulary_的输出为,可以看出每个特征词和TD-IDF矩阵列的对应关系:

{'this': 8, 'is': 3, 'the': 6, 'first': 2, 'document': 1, 'second': 5, 'and': 0, 'third': 7, 'one': 4}stop_words:停用词集合,当为'english'时,ENGLISH_STOP_WORDS中定义的词会被忽略,如果为list,list中的单词即为要忽略的词;

max_df: 设定当某个词超过一个df(document frequency)的上限时就忽略该词。当为0~1的float时表示df的比例,当为int时表示df数量;

get_feature_names():返回特征列表,接上例vectorizer.get_feature_names()返回结果如下:

['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']fit:load数据,并计算tf-idf值;

transform:将数据转化为matrix的形式;

fit_transform:load数据并将数据转化为matrix形式,等于fit+trasform;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值