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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 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: 结巴中文分词

目录
相关文章
|
19天前
|
机器学习/深度学习 自然语言处理 知识图谱
GraphRAG在自然语言处理中的应用:从问答系统到文本生成
【10月更文挑战第28天】作为一名自然语言处理(NLP)和图神经网络(GNN)的研究者,我一直在探索如何将GraphRAG(Graph Retrieval-Augmented Generation)模型应用于各种NLP任务。GraphRAG结合了图检索和序列生成技术,能够有效地处理复杂的语言理解和生成任务。本文将从个人角度出发,探讨GraphRAG在构建问答系统、文本摘要、情感分析和自动文本生成等任务中的具体方法和案例研究。
43 5
|
21天前
|
自然语言处理 Python
如何使用自然语言处理库`nltk`进行文本的基本处理
这段Python代码展示了如何使用`nltk`库进行文本的基本处理,包括分词和词频统计。首先需要安装`nltk`库,然后通过`word_tokenize`方法将文本拆分为单词,并使用`FreqDist`类统计每个单词的出现频率。运行代码后,会输出每个词的出现次数,帮助理解文本的结构和常用词。
|
25天前
|
自然语言处理 算法 搜索推荐
NLP中TF-IDF算法
TF-IDF(词频-逆文档频率)是一种用于信息检索与数据挖掘的加权技术,通过评估词语在文档中的重要性来过滤常见词语,保留关键信息。本文介绍了TF-IDF的基本概念、公式及其在Python、NLTK、Sklearn和jieba中的实现方法,并讨论了其优缺点。TF-IWF是TF-IDF的优化版本,通过改进权重计算提高精度。
53 1
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
48 2
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】TF-IDF算法在人工智能方面的应用,附带代码
TF-IDF算法在人工智能领域,特别是自然语言处理(NLP)和信息检索中,被广泛用于特征提取和文本表示。以下是一个使用Python的scikit-learn库实现TF-IDF算法的简单示例,并展示如何将其应用于文本数据。
262 65
|
1月前
|
自然语言处理
【NLP自然语言处理】文本特征处理与数据增强
【NLP自然语言处理】文本特征处理与数据增强
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】python之人工智能应用篇——文本生成技术
文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。
110 8
|
3月前
|
机器学习/深度学习 存储 人工智能
自然语言处理 Paddle NLP - 检索式文本问答-理论
自然语言处理 Paddle NLP - 检索式文本问答-理论
28 1
|
3月前
|
机器学习/深度学习 自然语言处理 算法
nlp文本提取关键词
8月更文挑战第21天
46 0
|
4月前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:文本生成与自然语言处理
【7月更文挑战第14天】 使用Python实现深度学习模型:文本生成与自然语言处理
120 12
下一篇
无影云桌面