使用 Python 和 jieba 实现中文文本中的人名和公司名提取

在处理中文文本时,经常需要从中提取出人名和公司名称。比如在文本分析、信息提取和自然语言处理(NLP)等领域,这些任务都非常常见。本文将介绍如何使用wxPython创建一个简单的桌面应用程序,从一段中文长文中提取人名和公司名称,并用jieba库进行分词和命名实体识别(NER)。
C:\pythoncode\new\markname.py

环境准备

在开始之前,确保你已经安装了wxPythonjieba库。如果没有,请使用以下命令进行安装:

pip install wxPython jieba
项目需求分析

我们将创建一个带有以下功能的桌面应用程序:

  1. 一个多行文本输入框,用于输入需要处理的长文。
  2. 一个按钮,用于触发文本处理。
  3. 一个多行文本输出框,用于显示提取出的人名和公司名称。
实现步骤

我们将使用wxPython创建GUI,jieba库进行中文分词和命名实体识别。

完整代码示例

以下是实现这一功能的完整代码示例:

import wx
import jieba
import jieba.posseg as pseg

class ChineseNameCompanyExtractorFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(ChineseNameCompanyExtractorFrame, self).__init__(*args, **kw)

        self.panel = wx.Panel(self)

        # Input text box (multiline)
        self.text_ctrl_input = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE, size=(400, 200))
        
        # Output text box (multiline)
        self.text_ctrl_output = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE | wx.TE_READONLY, size=(400, 100))

        # Button to trigger extraction
        self.extract_button = wx.Button(self.panel, label="提取人名和公司名称")
        self.extract_button.Bind(wx.EVT_BUTTON, self.on_extract_names_and_companies)

        # Layout
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(wx.StaticText(self.panel, label="输入文本:"), flag=wx.LEFT | wx.TOP, border=10)
        sizer.Add(self.text_ctrl_input, proportion=1, flag=wx.EXPAND | wx.ALL, border=10)
        sizer.Add(self.extract_button, flag=wx.ALIGN_CENTER | wx.ALL, border=10)
        sizer.Add(wx.StaticText(self.panel, label="提取的人名和公司名称:"), flag=wx.LEFT | wx.TOP, border=10)
        sizer.Add(self.text_ctrl_output, proportion=0, flag=wx.EXPAND | wx.ALL, border=10)
        self.panel.SetSizer(sizer)

        self.SetTitle('中文人名和公司名称提取器')
        self.SetSize((500, 400))
        self.Centre()

    def on_extract_names_and_companies(self, event):
        # Get the current text from the input text control
        text = self.text_ctrl_input.GetValue()

        # Extract names and companies using jieba
        names = []
        companies = []
        words = pseg.cut(text)
        for word, flag in words:
            if flag == 'nr':  # 人名
                names.append(word)
            elif flag == 'nt':  # 机构团体名,一般表示公司
                companies.append(word)

        # Combine names and companies, and remove duplicates
        all_entities = sorted(set(names + companies))

        # Display the results in the output text control
        self.text_ctrl_output.SetValue(', '.join(all_entities))

class MyApp(wx.App):
    def OnInit(self):
        frame = ChineseNameCompanyExtractorFrame(None)
        frame.Show(True)
        return True

if __name__ == "__main__":
    app = MyApp(False)
    app.MainLoop()
代码详解
  1. 初始化 ChineseNameCompanyExtractorFrame

    • 创建一个面板 (wx.Panel)。
    • 创建一个多行文本输入框 (wx.TextCtrl)。
    • 创建一个多行只读文本输出框 (wx.TextCtrl)。
    • 创建一个按钮,并将按钮的点击事件绑定到 on_extract_names_and_companies 方法。
    • 使用垂直盒子布局 (wx.BoxSizer) 布局文本框和按钮。
  2. on_extract_names_and_companies 方法

    • 获取当前输入框中的文本。
    • 使用jieba进行分词和词性标注:
      • nr表示人名。
      • nt表示机构团体名(一般表示公司)。
    • 合并提取到的人名和公司名字,并去重。
    • 将结果显示在只读文本输出框中。
  3. MyApp

    • 初始化应用程序并显示框架。
运行效果

将上述代码保存为一个Python文件(例如 name_company_extractor.py),然后运行它。你将看到一个包含输入框和按钮的窗口。输入一段包含中文人名和公司名称的文本,点击“提取人名和公司名称”按钮,提取到的人名和公司名称将显示在下方的只读文本框中。
在这里插入图片描述

总结

本文介绍了如何使用wxPythonjieba库创建一个简单的桌面应用程序,用于从一段中文长文中提取人名和公司名称。通过这种方法,我们可以高效地处理中文文本中的信息提取任务。希望本文对你有所帮助,欢迎留言讨论或提出问题!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/658219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

150.二叉树:二叉树的后序遍历(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

电脑下载了caj却打不开文献?使用CAJ阅读器,支持caj转word

如果电脑下载了CAJ文件却打不开文献,这通常是因为没有安装合适的阅读器。CAJ文件是中国知网的一种专用全文阅读格式,需要使用专门的CAJ阅读器(CAJViewer)来打开和阅读。 首先:使用CAJ阅读器 请确保你已经正确安装了CA…

【机器学习】解锁AI密码:神经网络算法详解与前沿探索

👀传送门👀 🔍引言🍀神经网络的基本原理🚀神经网络的结构📕神经网络的训练过程🚆神经网络的应用实例💖未来发展趋势💖结语 🔍引言 随着人工智能技术的飞速发…

【python】生成对抗网络(GAN):理论与PlugLink实践

【python】生成对抗网络(GAN):理论与PlugLink实践 本文将介绍一种流行的图像生成技术——生成对抗网络(GAN),并结合PlugLink平台,展示如何将这一技术应用于实际项目中。简单来说,它…

查看远程桌面连接登录不上服务器,远程桌面连接登录不上服务器是什么情况?怎么解决?

在信息技术领域,远程桌面连接(RDP)是一种重要的远程管理工具,它允许管理员或用户从远程位置访问和控制服务器或计算机。然而,在实际操作中,远程桌面连接不上服务器的情况时有发生,这通常是由多种…

excel数据丢失怎么办?表格文件恢复的3个方法

Excel作为一个常用的表格文件,我们在工作中经常都需要用到它。最令人崩溃的事就是有时候我们辛辛苦苦用Excel完成了工作,但是突然发现Excel数据丢失。这可怎么办呢?如何找回丢失的Excel数据?下面小编就分享几种恢复办法。 方法一&…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理,接下来,看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器负责处理输入序列,将其…

如何使用OCR批量提取短剧和电视剧内的字幕?

为什么使用光字符识别 (OCR) 提取视频字幕? 视频字幕提取是将视频中的字幕转换为 SRT 格式文本的过程。传统方法是使用自动语音识别 (ASR) 技术,但对于某些类型的视频(例如短剧、电视剧、电影、访谈等节目),由于这类型…

想让企业“火力全开”?找六西格玛培训公司就对了!

在如今的市场环境中,企业面临着不断变化的挑战和无限的可能。要在这场竞争中独领风骚,实现稳健的增长,六西格玛作为一种以数据驱动的管理理论,提供了实际可行的解决方案。六西格玛培训公司,作为这一领域的专家&#xf…

maven聚合工程整合springboot+mybatisplus遇到的问题

前言(可以直接跳过看下面解决方法) 项目结构 两个module: yema-terminal-boot 是springboot项目,子包有:controller、service、dao 等等。属于经典三层架构。那么,该module可以理解为是一个单体项目&…

如何关闭MySQL凌晨12点自动弹窗?

要关闭 MySQL 在凌晨 12 点自动弹窗的行为,首先需要确定弹窗的具体原因。 打开“任务计划程序”: 按 Win R,输入 taskschd.msc,然后按 Enter。 在左侧导航栏中,选择“任务计划程序库”。 查找与 MySQL 相关的任务&…

嵌入式进阶——矩阵键盘

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 矩阵按键原理图按键状态检测单行按键状态检测多行按键状态检测 状态记录状态优化循环优化 矩阵按键 矩阵键盘是一种常见的数字输入…

【C++题解】1321. 时钟旋转(2)

问题:1321. 时钟旋转(2) 类型:字符串 题目描述: 时钟从时间:xx:xx(xx时xx分),走到时间:xx:xx(xx时xx分),时针共旋转了多…

openresty(Nginx) 隐藏 软件包名称 版本号 升级新版本

1 访问错误或者异常的URL 2 修改配置,重新编译,升级 #修改版本等 vim ./bundle/nginx-1.13.6/src/core/nginx.h #define nginx_version 1013006 #define NGINX_VERSION "1.13.6" #define NGINX_VER "openresty/&q…

2024年软件设计师备考复习资料(应用技术)

应用设计,考试时间为120分钟;总共需做5道题,满分75分(每题15分)。前4题为必答题,最后2题为要求选答一题(C或Java),45及格 目录 1. 数据流图(需求分析&#…

APM 2.8外置罗盘校准

请注意: GPS不可以飞控带电插拔,带电插拔会产生差分电压,可能会导致GPS模块损坏,无法搜星。不听劝告,后果自负! 1.如何接线 GPS有两根线,要插上面图所示的两个接口。同时拔掉旁边的跳线帽&…

1806 jsp防疫物资销售管理系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 防疫物资销售管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.…

LabVIEW车轮动平衡检测系统

LabVIEW车轮动平衡检测系统 随着汽车行业的快速发展,车轮动平衡问题对乘坐舒适性、操控稳定性及安全性的影响日益凸显,成为了提高汽车性能的一个关键环节。传统的检测系统因精度低、成本高、操作复杂等问题,难以满足现代汽车行业的需求。开发…

如何理解Spring Boot自动配置原理和应用?

我们知道,基于Spring Boot,我们只需要在类路径中引入一组第三方框架的starter组件,就能在Spring容器中使用这些框架所提供的各项功能。这在当下的开发过程中已经习以为常,但在Spring Boot还没有诞生之前却是不可想象的。如果我们使…

Python散点图矩阵代码模版

本文分享Python seaborn实现散点图矩阵代码模版,节选自👉嫌Matplotlib繁琐?试试Seaborn! 散点图矩阵(scatterplot matrix)展示原始数据中所有变量两两之间关系,可以规避单一统计指标的偏差&…