【NLP Tool -- JieBa】Jieba实现TF-IDF和TextRank文本关键字提取(附代码)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 简单快速实现文本关键词提取

目录

JieBa

介绍

安装

TF-IDF

算法思想

实现步骤

代码实现

实现效果

TextRank

算法思想

实现步骤

代码实现

实现效果

参考资料


JieBa

介绍

Jieba工具主要应用于Python文本分析,其最强大的功能在于分词

在关键字提取方面,Jieba库提供了两个封装算法Tf-IdfText-Rank

安装

pip install jieba

image.gif

TF-IDF

算法思想

如果一个候选词在本文段中出现多次,而在其他文段中出现的次数较少,则可认为其对于本文段较为重要,即关键词。

image.gif编辑

image.gif编辑

image.gif编辑

实现步骤

1 将待提取关键词的文本进行分词

2 载入自定义词典(可省略),虽然jieba有识别新词的能力,但是使用自定义词典可以提高分词准确率,如下

jieba.load_userdict('cidian.txt')

image.gif

image.gif编辑

jieba中的词性分类标签如下

image.gif编辑

3 自定义逆向文件频率(IDF)文本语料库,从而实现动态更新自己的语料库

4 自定义停用词

5 对分词进行词性标注处理,过滤提用词,保留候选关键词

6 计算各个分词的tf*idf值,并进行倒序排序,得到最重要的N个词,即为关键词

代码实现

# -*- coding: utf-8 -*-
import jieba
import jieba.analyse
jieba.load_userdict('cidian.txt')
text=''
with open ('demo.txt', 'r', encoding='utf-8') as file:
    for line in file:
        line=line.strip()
        text+=line#将需要的文本读取到text中
print(jieba.analyse.extract_tags(text,topK=5,
                                 withWeight=False, allowPOS=('ns', 'n', 'vn', 'v','nt','nw',
                                                   'nz','v','vd','vn','a','an','LOC')))

image.gif

实现效果

image.gif编辑

TextRank

算法思想

将整篇文章看做一个超平面,每个词看做一个点,一个点周围有越多的点靠近它,那么这个点就是处于核心位置,也就是关键词。

实现步骤

1 将待提取关键词的文本进行分词

2 对分词进行词性标注处理,过滤提用词,保留候选关键词

3 使用滑窗实现词之间的共现关系,构建图,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现

4 根据上述公式,迭代传播各节点的权重,直至收敛

5 对节点权重进行倒序排序,得到最重要的N个词,即为关键词

代码实现

# -*- coding: utf-8 -*-
import jieba
import jieba.analyse
#分词和分字,并输出到文件中
vocab={}
cs={}
text=''
with open ('demo.txt', 'r', encoding='utf-8') as file:
    for line in file:
        line=line.strip()
        text+=line#将需要的文本读取到text中
        #分字
        for c in line:
            cs[c]=0
        #分词
        for word in jieba.cut(line):
            vocab[word]=0
#将分词和分字的结果保留到文本文件中
with open ('cs.txt', 'w', encoding='utf-8') as csf:
    for c in cs.keys():
        csf.write(c+'\n')
with open ('vocab.txt', 'w', encoding='utf-8') as vf:
    for w in vocab.keys():
        vf.write(w+'\n')
print(jieba.analyse.textrank(text, topK=5,
                       withWeight=False, allowPOS=('ns', 'n', 'vn', 'v','nt','nw',
                                                   'nz','v','vd','vn','a','an','LOC')))

image.gif

实现效果

image.gif编辑

参考资料

Textrank原始论文:mihalcea.emnlp04.pdf (umich.edu)

TF-IDF官方代码:GitHub - fxsjy/jieba: 结巴中文分词

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理生成文本
自然语言处理生成文本
27 4
|
2月前
|
机器学习/深度学习 自然语言处理 数据可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
|
1月前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
1天前
|
自然语言处理 PyTorch API
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
5 0
|
1月前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用
|
2月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
用于NLP的Python:使用Keras进行深度学习文本生成
用于NLP的Python:使用Keras进行深度学习文本生成
|
2月前
|
自然语言处理 数据可视化 Python
NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据
NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据
|
2月前
|
自然语言处理 数据可视化
R语言自然语言处理NLP:情感分析上市公司文本信息知识发现可视化
R语言自然语言处理NLP:情感分析上市公司文本信息知识发现可视化
|
2月前
|
机器学习/深度学习 存储 自然语言处理
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类
|
2月前
|
存储 机器学习/深度学习 自然语言处理
R语言自然语言处理(NLP):情感分析新闻文本数据
R语言自然语言处理(NLP):情感分析新闻文本数据