python怎么对input文本,分词归纳,绘制环形思维导图?

"""
明朝晚期,中国文人士大夫中掀起一股实学潮流,通过田野考察、收集整理、记录数据、归纳分类等方法总结前人技术,以达到富国强民的目的,不再将科学技术简单的视为“奇技淫巧”,所以这一阶段出现了很多综合性科技书籍,《天工开物》是这股实学潮流的集大成者。

如果晚明这一思潮继续传承发展下来,中国近代未必不能走上类似西欧的科技文明之路,未必不能与西方一争长短。可惜,清朝建立之后,晚明重视科学技术的潮流就逐渐被掐断了,《天工开物》的命运恰如其分的显示了两个王朝的不同品格。
"""
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 读取输入文本  我这里只使用了一段话所以直接加载了,内容过多可以考虑读取txt文本的形式加载数据
text = input("请输入文本: ")

# 分词
tokens = word_tokenize(text)

# 去除停用词  这里还可以去除自己统计的停顿词
stop_words = set(stopwords.words("english"))
filtered_tokens = [token for token in tokens if token.lower() not in stop_words]

# 统计词频
freq_dist = nltk.FreqDist(filtered_tokens)

# 绘制词云
wordcloud = WordCloud().generate_from_frequencies(freq_dist)
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

上面一个demo是之前pythonFlask里面剥出来的一个小Demo,但是只绘制了词云图,之前因为绘制思维导图有点扎手就没做了,希望这个对你有帮助

【以下回答由 GPT 生成】

解决方案

要实现对输入文本的分词、归纳和绘制环形思维导图,可以使用以下Python库和工具:

  1. NLTK(Natural Language Toolkit)(自然语言处理工具包):NLTK 是Python中用于自然语言处理的强大工具包,可以帮助我们对文本进行分词、词性标注、关键词提取等操作。

  2. Gensim(自然语言处理库):Gensim 是一个用于主题建模、文本相似性计算等任务的Python库。它可以帮助我们进行文本的主题归纳和关键词提取。

  3. Networkx(复杂网络分析工具):Networkx 是一个用于复杂网络分析和可视化的Python库。它可以帮助我们创建并操作思维导图,并进行各种布局和绘制操作。

下面是具体的步骤和代码示例:

步骤1:安装所需的库和工具

!pip install nltk
!pip install gensim
!pip install networkx

步骤2:导入所需的库和工具

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from gensim import corpora, models
from gensim.utils import simple_preprocess
import networkx as nx
import matplotlib.pyplot as plt

步骤3:进行文本分词和关键词提取

def preprocess_text(text):
    # 分词
    tokens = word_tokenize(text)

    # 去除停用词
    stop_words = set(stopwords.words('english'))
    tokens = [token for token in tokens if token.lower() not in stop_words]

    # 去除标点符号和数字
    tokens = [token for token in tokens if token.isalpha()]

    return tokens

def extract_keywords(text):
    # 预处理文本
    tokens = preprocess_text(text)

    # 构建词袋模型
    dictionary = corpora.Dictionary([tokens])

    # 构建文档-词频矩阵
    corpus = [dictionary.doc2bow(tokens)]

    # 训练TF-IDF模型
    tfidf = models.TfidfModel(corpus)

    # 提取关键词
    keywords = tfidf[corpus[0]]

    return keywords

步骤4:构建环形思维导图

def draw_mind_map(keywords):
    G = nx.Graph()

    # 添加节点
    for keyword in keywords:
        G.add_node(keyword[0])

    # 添加边
    for i, keyword1 in enumerate(keywords):
        for j, keyword2 in enumerate(keywords):
            if i != j:
                G.add_edge(keyword1[0], keyword2[0])

    # 设置布局
    pos = nx.circular_layout(G)

    # 绘制节点和边
    nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=1000)
    nx.draw_networkx_edges(G, pos)
    nx.draw_networkx_labels(G, pos, font_size=10, font_family='sans-serif')

    # 显示图形
    plt.axis('off')
    plt.show()

步骤5:调用函数,完成文本处理和绘图

text = "这里是输入的文本"

# 提取关键词
keywords = extract_keywords(text)

# 绘制环形思维导图
draw_mind_map(keywords)

通过以上步骤和代码示例,你可以实现对输入文本的分词、归纳并绘制环形思维导图的功能。请注意,以上代码仅提供了基本的功能实现,你可以根据实际需求进行进一步的扩展和优化。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^