赞
踩
jieba
库并定义文本import jieba
text = "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域。"
words = jieba.cut(text)
这一步会将文本分成若干个词语,并返回一个生成器对象words
,可以使用for
循环遍历所有的词语。
3. 统计词频
word_count = {}
for word in words:
if len(word) > 1:
word_count[word] = word_count.get(word, 0) + 1
这一步通过遍历所有的词语,统计每个词语出现的次数,并保存到一个字典word_count
中。在统计词频时,可以通过去除停用词等方式进行优化,这里只是简单地过滤了长度小于2的词语。
4. 结果输出
for word, count in word_count.items():
print(word, count)
为了更准确地统计词频,我们可以在词频统计中加入停用词,以去除一些常见但无实际意义的词语。具体步骤如下:
import jieba
# 停用词列表
stopwords = ['是', '一种', '等']
text = "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域。"
words = jieba.cut(text)
words_filtered = [word for word in words if word not in stopwords and len(word) > 1]
word_count = {}
for word in words_filtered:
word_count[word] = word_count.get(word, 0) + 1
for word, count in word_count.items():
print(word, count)
加入停用词后,输出的结果是:
可以看到,被停用的一种
这个词并没有显示出来。
与对词语进行单纯计数的词频统计不同,jieba提取关键字的原理是基于TF-IDF(Term Frequency-Inverse Document Frequency)算法。TF-IDF算法是一种常用的文本特征提取方法,可以衡量一个词语在文本中的重要程度。
具体来说,TF-IDF算法包含两个部分:
TF-IDF算法通过综合考虑词频和逆文档频率,计算出每个词在文本中的重要程度,从而提取关键字。在jieba中,关键字提取的具体实现包括以下步骤:
举个例子:
F(Term Frequency)指的是某个单词在一篇文档中出现的频率。计算公式如下:
T F = ( 单 词 在 文 档 中 出 现 的 次 数 ) / ( 文 档 中 的 总 单 词 数 ) TF = (单词在文档中出现的次数) / (文档中的总单词数) TF=(单词在文档中出现的次数)/(文档中的总单词数)
例如,在一篇包含100个单词的文档中,某个单词出现了10次,则该单词的TF为 10 / 100 = 0.1 10/100=0.1 10/100=0.1
IDF(Inverse Document Frequency)指的是在文档集合中出现某个单词的文档数的倒数。计算公式如下:
I D F = l o g ( 文 档 集 合 中 的 文 档 总 数 / 包 含 该 单 词 的 文 档 数 ) IDF = log(文档集合中的文档总数 / 包含该单词的文档数) IDF=log(文档集合中的文档总数/包含该单词的文档数)
例如,在一个包含1000篇文档的文档集合中,某个单词在100篇文档中出现过,则该单词的IDF为 l o g ( 1000 / 100 ) = 1.0 log(1000/100)=1.0 log(1000/100)=1.0
TFIDF是将TF和IDF相乘得到的结果,计算公式如下:
T F I D F = T F ∗ I D F TFIDF = TF * IDF TFIDF=TF∗IDF
需要注意的是,TF-IDF算法只考虑了词语在文本中的出现情况,而忽略了词语之间的关联性。因此,在一些特定的应用场景中,需要使用其他的文本特征提取方法,例如词向量、主题模型等。
import jieba.analyse
# 待提取关键字的文本
text = "Python是一种高级编程语言,广泛应用于人工智能、数据分析、Web开发等领域。"
# 使用jieba提取关键字
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
# 输出关键字和对应的权重
for keyword, weight in keywords:
print(keyword, weight)
在这个示例中,我们首先导入了jieba.analyse
模块,然后定义了一个待提取关键字的文本text
。接着,我们使用jieba.analyse.extract_tags()
函数提取关键字,其中topK
参数表示需要提取的关键字个数,withWeight
参数表示是否返回关键字的权重值。最后,我们遍历关键字列表,输出每个关键字和对应的权重值。
这段函数的输出结果为:
可以看到,jieba根据TF-IDF算法提取出了输入文本中的若干个关键字,并返回了每个关键字的权重值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。