中文自然语言处理--文本分析Python网络图(networkx)

import jieba, networkx as nx, matplotlib.pyplot as plt
import jieba.posseg as jp

# 创建图
# G = nx.Graph()  # 无多重边无向图
G = nx.DiGraph()  # 无多重边有向图
# G = nx.MultiGraph()  # 有多重边无向图
# G = nx.MultiDiGraph()  # 有多重边有向图
# 添加节点
G.add_node('a')
# 添加边
G.add_edge('b', 'c')
# 绘图
nx.draw(G, with_labels=True)
plt.show()

# 无多重边无向图
# 分词
# #调节单个词语的词频,使其能被分出来。
# jieba.suggest_freq(('关系图', '法'), tune=True)
jieba.add_word('关系图法')
jieba.add_word('连线图')
jieba.add_word('关系图')
jieba.add_word('相互关系')
jieba.add_word('E-R')
text = '关系图法,是指用连线图来表示事物相互关系的一种方法。' \
       '最常见的关系图是数据库里的 E-R 图,表示实体、关系、属性三者之间的关系。'
words = jieba.lcut(text)
# 创建空的网络图
G = nx.Graph()
# 添加节点
for word in words:
    G.add_node(word)
# 添加边
for i in range(len(words) - 1):
    G.add_edge(words[i], words[i+1])
# 用黑体显示中文
plt.rcParams['font.sans-serif']=['SimHei']
# 绘图
nx.draw(G, alpha=1, with_labels=True, node_color='white', font_size=12)
plt.show()

# 有多重边有向图
words = jp.lcut(text)
G = nx.MultiDiGraph()  # 有多重边有向图
# 添加节点
for word in words:
    G.add_node(word.flag)
# 添加边
for i in range(len(words) - 1):
    G.add_edge(words[i].flag, words[i+1].flag)
# 绘图
nx.draw(G, alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)
plt.show()
'''
布局
参数                  解释
circular_layout    节点在一个圆环上均匀分布
random_layout    节点随机分布
shell_layout    节点在同心圆上分布
spring_layout    用Fruchterman-Reingold算法排列节点
'''
nx.draw(G, pos=nx.shell_layout(G), alpha=0.8, with_labels=True, node_color='lightgreen', font_size=36, node_size=999, width=2)
plt.show()



原文:
https://blog.csdn.net/yellow_python/article/details/83042748

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 利用Python实现中文文本关键词抽取可以采用tf-idf、TextRank和Word2Vec等方法。 首先是tf-idf方法。它通过计算每个词在文本中的重要性,将重要性较高的词作为关键词抽取出来。在Python中,可以使用sklearn库的TfidfVectorizer类来实现。首先,将文本数据进行分词,然后使用TfidfVectorizer对分词后的文本进行向量化,最后通过指定关键词数量的方式,提取出重要的关键词。 其次是TextRank方法。它是基于的排序算法,通过把文本的句子或词语构建成一个模型,利用模型中的节点之间的边权重来衡量节点的重要性。在Python中,可以使用jieba库进行分词,并使用textrank4zh库来实现TextRank算法。将分词后的文本传入textrank4zh的接口,设置关键词的数量,可以得到抽取出来的关键词。 最后是Word2Vec方法。它是通过将文本数据转化为词向量,然后通过计算词向量之间的相似度来抽取关键词。在Python中,可以使用gensim库来实现Word2Vec算法。首先,将文本数据进行分词,然后通过gensim的Word2Vec类将分词后的文本转化为词向量。通过计算词向量之间的余弦相似度或欧氏距离,找到与其他词向量相似度高的词作为关键词。 综上所述,利用Python实现中文文本关键词抽取可以采用tf-idf、TextRank和Word2Vec等方法,根据需求选择合适的方法进行关键词抽取。每种方法都有其特点和适用场景,可以根据具体情况进行选择和调整。 ### 回答2: 中文文本关键词抽取分别采用TF-IDF、TextRank和Word2Vec词聚类是基于Python的三种常用方法。 TF-IDF是一种常用的文本特征提取方法,它通过计算一个词在文档中的出现频率和在整个语料库中的逆文档频率来确定词的重要性。在Python中,可以使用sklearn库的TfidfVectorizer实现中文文本的关键词抽取。通过构建TF-IDF矩阵,可以获得文本中的关键词和它们的权重。 TextRank是一种基于的排序算法,用于提取文本中的关键词和关键句。它通过利用词之间的共现关系构建一个,并根据词之间的连接强度进行排名。在Python中,可以使用pytextrank库来实现TextRank算法,提取中文文本中的关键词。 Word2Vec词聚类是一种将词转换为向量表示的方法,通过将词映射到一个n维向量空间中,使得具有相似含义的词在向量空间中的距离较近。在Python中,可以使用gensim库的Word2Vec方法来训练中文文本数据,并将词转换为对应的向量表示。通过对词向量进行聚类,可以得到相关的词组。 综上所述,通过使用Python中的TF-IDF、TextRank和Word2Vec方法,可以实现中文文本的关键词抽取。每种方法都有其独特的优势和适用场景,根据具体需求选择适合的方法进行文本处理和分析。 ### 回答3: 中文文本关键词抽取是一种重要的文本挖掘任务,它可以帮助我们快速理解和提取文本的主题信息。在Python中,我们可以利用不同的库和算法来实现中文文本关键词抽取,下面将介绍tf-idf、textrank和word2vec三种常用方法。 1. tf-idf(Term Frequency-Inverse Document Frequency)是一种经典的文本特征提取方法。它通过计算单词在文本中出现的频率和在整个文集中出现的频率,来衡量单词的重要性。在Python中,我们可以使用sklearn库中的TfidfVectorizer模块来实现tf-idf的关键词抽取。 2. textrank是一种基于的排序算法,通过计算单词之间的相似度以及单词与整个文本之间的关系,来确定关键词的重要性。在Python中,我们可以使用jieba库和networkx库来实现textrank的关键词抽取。 3. word2vec是一种基于神经网络的词向量表示方法,它可以将单词表示为具有语义信息的向量。通过计算单词向量之间的相似度,可以得到与文本主题相关的关键词。在Python中,我们可以使用gensim库来实现word2vec的关键词抽取。 另外,词聚类是一种将具有相似语义的单词聚集在一起的方法,可以进一步深化对文本关键词的理解。在Python中,我们可以使用scikit-learn库中的KMeans算法和聚类评估方法来实现词聚类的任务。 总之,利用Python实现中文文本关键词抽取可以使用tf-idf、textrank和word2vec等方法,并可以结合词聚类进一步分析单词之间的相似性和关联关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值