首页 > Python资料 博客日记
使用 Python 和 jieba 实现中文文本中的人名和公司名提取
2024-10-16 01:00:05Python资料围观39次
这篇文章介绍了使用 Python 和 jieba 实现中文文本中的人名和公司名提取,分享给大家做个参考,收藏Python资料网收获更多编程知识
在处理中文文本时,经常需要从中提取出人名和公司名称。比如在文本分析、信息提取和自然语言处理(NLP)等领域,这些任务都非常常见。本文将介绍如何使用wxPython
创建一个简单的桌面应用程序,从一段中文长文中提取人名和公司名称,并用jieba
库进行分词和命名实体识别(NER)。
C:\pythoncode\new\markname.py
环境准备
在开始之前,确保你已经安装了wxPython
和jieba
库。如果没有,请使用以下命令进行安装:
pip install wxPython jieba
项目需求分析
我们将创建一个带有以下功能的桌面应用程序:
- 一个多行文本输入框,用于输入需要处理的长文。
- 一个按钮,用于触发文本处理。
- 一个多行文本输出框,用于显示提取出的人名和公司名称。
实现步骤
我们将使用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()
代码详解
-
初始化
ChineseNameCompanyExtractorFrame
类:- 创建一个面板 (
wx.Panel
)。 - 创建一个多行文本输入框 (
wx.TextCtrl
)。 - 创建一个多行只读文本输出框 (
wx.TextCtrl
)。 - 创建一个按钮,并将按钮的点击事件绑定到
on_extract_names_and_companies
方法。 - 使用垂直盒子布局 (
wx.BoxSizer
) 布局文本框和按钮。
- 创建一个面板 (
-
on_extract_names_and_companies
方法:- 获取当前输入框中的文本。
- 使用
jieba
进行分词和词性标注:nr
表示人名。nt
表示机构团体名(一般表示公司)。
- 合并提取到的人名和公司名字,并去重。
- 将结果显示在只读文本输出框中。
-
MyApp
类:- 初始化应用程序并显示框架。
运行效果
将上述代码保存为一个Python文件(例如 name_company_extractor.py
),然后运行它。你将看到一个包含输入框和按钮的窗口。输入一段包含中文人名和公司名称的文本,点击“提取人名和公司名称”按钮,提取到的人名和公司名称将显示在下方的只读文本框中。
总结
本文介绍了如何使用wxPython
和jieba
库创建一个简单的桌面应用程序,用于从一段中文长文中提取人名和公司名称。通过这种方法,我们可以高效地处理中文文本中的信息提取任务。希望本文对你有所帮助,欢迎留言讨论或提出问题!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj