前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 快速实现一个分词处理器

Python 快速实现一个分词处理器

原创
作者头像
软件架构师Michael
修改于 2025-04-09 06:51:06
修改于 2025-04-09 06:51:06
12700
代码可运行
举报
运行总次数:0
代码可运行

今天要分享的是AI编程技巧,用Python快速实现一个分词处理器。

提示词如下:

代码语言:txt
AI代码解释
复制
请使用Python编写一个分词处理工具,要有带有用户操作界面

简单粗暴,一句话搞定绝大部分编码工作,剩下的就是检查环境了。

Trae推荐的安装jieba库的方式为:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
pip install jieba pandas

Python的第三方库,我这里荐使用下面的镜像源:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
pip install jieba pandas -i http://pypi.doubanio.com/simple  --trusted-host pypi.doubanio.com

提示词发送给Trae后,自动生成Python代码文

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
from tkinter import ttk, filedialog, messagebox
import jieba
import jieba.analyse

class SegmentApp:
    def __init__(self, master):
        self.master = master
        master.title("中文分词工具 v1.0")
        
        # 创建界面布局
        self.create_widgets()
        self.setup_layout()
        
    def create_widgets(self):
        # 输入区域
        self.input_frame = ttk.LabelFrame(self.master, text="输入文本")
        self.input_text = tk.Text(self.input_frame, height=10, wrap=tk.WORD)
        self.btn_open = ttk.Button(self.input_frame, text="打开文件", command=self.open_file)
        
        # 配置区域
        self.option_frame = ttk.Frame(self.master)
        self.mode_var = tk.StringVar(value="精确模式")
        self.mode_selector = ttk.Combobox(self.option_frame, 
                                        textvariable=self.mode_var,
                                        values=["精确模式", "全模式", "搜索引擎模式"])
        self.btn_segment = ttk.Button(self.option_frame, text="开始分词", command=self.do_segment)
        
        # 输出区域
        self.output_frame = ttk.LabelFrame(self.master, text="分词结果")
        self.output_text = tk.Text(self.output_frame, height=15, wrap=tk.WORD)
        self.scrollbar = ttk.Scrollbar(self.output_frame, command=self.output_text.yview)
        self.output_text.configure(yscrollcommand=self.scrollbar.set)
        
        # 保存选项
        self.save_frame = ttk.Frame(self.master)
        self.save_var = tk.StringVar(value="txt")
        ttk.Radiobutton(self.save_frame, text="保存为TXT", variable=self.save_var, value="txt").pack(side=tk.LEFT)
        ttk.Radiobutton(self.save_frame, text="保存为CSV", variable=self.save_var, value="csv").pack(side=tk.LEFT)
        self.btn_save = ttk.Button(self.save_frame, text="保存结果", command=self.save_result)

    def setup_layout(self):
        # 布局管理
        self.input_frame.pack(padx=10, pady=5, fill=tk.X)
        self.input_text.pack(side=tk.LEFT, padx=5, pady=5, fill=tk.BOTH, expand=True)
        self.btn_open.pack(side=tk.RIGHT, padx=5)
        
        self.option_frame.pack(padx=10, pady=5, fill=tk.X)
        self.mode_selector.pack(side=tk.LEFT, padx=5)
        self.btn_segment.pack(side=tk.RIGHT, padx=5)
        
        self.output_frame.pack(padx=10, pady=5, fill=tk.BOTH, expand=True)
        self.output_text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        
        self.save_frame.pack(padx=10, pady=5, fill=tk.X)
        self.btn_save.pack(side=tk.RIGHT)

    def open_file(self):
        filepath = filedialog.askopenfilename(filetypes=[("文本文件", "*.txt"), ("All Files", "*.*")])
        if filepath:
            try:
                with open(filepath, 'r', encoding='utf-8') as f:
                    self.input_text.delete(1.0, tk.END)
                    self.input_text.insert(tk.END, f.read())
            except Exception as e:
                messagebox.showerror("错误", f"文件读取失败:{str(e)}")

    def do_segment(self):
        text = self.input_text.get(1.0, tk.END).strip()
        if not text:
            messagebox.showwarning("警告", "请输入需要分词的文本")
            return
        
        mode = self.mode_var.get()
        try:
            if mode == "精确模式":
                words = jieba.cut(text)
            elif mode == "全模式":
                words = jieba.cut(text, cut_all=True)
            else:
                words = jieba.cut_for_search(text)
                
            self.output_text.delete(1.0, tk.END)
            self.output_text.insert(tk.END, "\n".join(words))
        except Exception as e:
            messagebox.showerror("错误", f"分词失败:{str(e)}")

    def save_result(self):
        result = self.output_text.get(1.0, tk.END).strip()
        if not result:
            messagebox.showwarning("警告", "没有可保存的内容")
            return
        
        filepath = filedialog.asksaveasfilename(
            defaultextension="." + self.save_var.get(),
            filetypes=[("Text Files", "*.txt"), ("CSV Files", "*.csv")]
        )
        if filepath:
            try:
                if self.save_var.get() == "csv":
                    import pandas as pd
                    df = pd.DataFrame({"词语": result.split("\n")})
                    df.to_csv(filepath, index=False, encoding="utf_8_sig")
                else:
                    with open(filepath, "w", encoding="utf-8") as f:
                        f.write(result)
                messagebox.showinfo("成功", "文件保存成功")
            except Exception as e:
                messagebox.showerror("错误", f"保存失败:{str(e)}")

if __name__ == "__main__":
    jieba.initialize()
    root = tk.Tk()
    app = SegmentApp(root)
    root.mainloop()

应用以上代码后,代码自动填充到代码编辑区,运行程序,效果就出来了。

一个简单的分词处理器就这样开发完成了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档