当前位置: 首页 > news >正文

自然语言处理(jieba库分词)

1、完全切分法、正向最大匹配算法、逆向最大匹配算法和双向最大匹配算法

一、实验内容

一个好的NLP系统一定要有完备的词典,用于判断算法分出的词是否是具有实际意义的词。自定义一个词典,比如dic = ["项目", "研究", "目的", "商品", "服务", "和服", "和尚", "尚未", "生命", "起源", "当下", "雨天", "地面", "积水", "下雨天", "欢迎", "老师", "生前", "就餐", "迎新", "师生", "前来"]。实现相关的分词方法:完全切分、正向最长匹配、逆向最长匹配、双向最长匹配算法,并输入一些句子验证分词结果的正确性

二、实现步奏

(一)新建Python工程NLPExp01

1.打开编辑器,新建NLPExp01工程

 2.打开对应工程,在对应目录下新建python文件exp01.py

(二)定义字典内容,实现不同的分词模式

1.字典内容可自定义,如 ["项目", "研究", "目的", "商品", "服务", "和服", "和尚", "尚未", "生命", "起源", "当下", "雨天", "地面", "积水", "下雨天", "欢迎", "老师", "生前", "就餐", "迎新", "师生", "前来"]

2.实现对应的分词匹配算法:完全切分法、正向最大匹配算法、逆向最大匹配算法和双向最大匹配算法

3.输入验证字符,检查分词结果,至少输入“和尚尚未结婚”、“中外科学研究”、“商品和服务”“研究生命起源”“当下雨天地面积水”“结婚的和尚未结婚的”“欢迎新老师生前来就餐”,检查对应的分词结果

三、实现代码

#my_dic为自定义字典,内容可更改
my_dic = ["项目", "研究", "目的", "商品", "服务", "和服", "和尚", "尚未", "生命", "起源", "当下", "雨天", "地面", "积水", "下雨天", "欢迎", "老师", "生前", "就餐", "迎新", "师生", "前来"];#在双向匹配中调用,用于比较列表元素位置
def select_word(text):result = 0for i in text:if (len(i) == 1):result += 1return result#在main函数中调用,将输入数据初始化为列表数据
def fully_segment(text, dic):word_list = []for i in range(len(text)):for j in range(i + 1, len(text) + 1):word = text[i:j]if word in dic:word_list.append(word)return word_list#正向最大匹配
def positive_max_match(text, dict):word_list = []i = 0while(i<len(text)):longest_word = text[i]for j in range(i+1, len(text) + 1):#从字典里开始找词,如果找到,先记录,如果有更长的,保存,直到遍历结束word = text[i:j]if word in dict:if len(word) > len(longest_word):longest_word = wordword_list.append(longest_word)i += len(longest_word)return word_list#逆向最大匹配
def backward_segment(text, dict):word_list = []i = len(text) - 1while (i >= 0):longest_word = text[i]for j in range(0, i):word = text[j:i + 1]if word in dict:if len(word) > len(longest_word):longest_word = wordword_list.insert(0, longest_word)i -= len(longest_word)return word_list#双向最大匹配
def all_segment(text, dic):list_forward = positive_max_match(text, dic)list_backward = backward_segment(text, dic)list_final = []if (len(list_forward) > len(list_backward)):list_final = list_backward[:]elif (len(list_forward) < len(list_backward)):list_final = list_forward[:]else:if (select_word(list_forward) > select_word(list_backward)):list_final = list_backward[:]elif (select_word(list_forward) < select_word(list_backward)):list_final = list_forward[:]else:list_final = list_backward[:]return list_finalif __name__ == "__main__":#使用自定义词库进行分词练习while (1):a = input("请输入你要分词的句子:(输入0结束输入)")if (a == '0'):print("输入结束!")breakb = fully_segment(a, my_dic)print("分词的结果", b)list_forward = positive_max_match(a, my_dic)list_backward = backward_segment(a, my_dic)list_all = all_segment(a, my_dic)print("正向最长匹配", list_forward)print("逆向最长匹配", list_backward)print("双向最长匹配", list_all)

2、使用jieba库进行中文分词、词组特性标注、关键词提取的相关方法 

一、实验内容

安装jieba分词库,并调用其中的分词、词组特性标注、关键词提取的相关方法,查看对应的功能。

二、实现步奏

1.安装jieba工具包:pip install jieba;

2.调用jieba分词功能:

seq_list = jieba.cut(“中外科学研究”,cut_all=True)

print(“全模式”+“/”.join(seq_list))

seq_list = jieba.cut(“中外科学研究”,cut_all=False)

print(“精确模式”+“/”.join(seq_list))

seq_list = jieba.cut_for_search(“中外科学研究”)

print(“全模式”+“/”.join(seq_list))

三、实现代码 

if __name__ == "__main__":# 使用jieba词库进行不同模式的分词,词性标注方法和关键字的提取seq_list = jieba.cut("中外科学研究", cut_all=True)print("全模式:" + "/".join(seq_list))seq_list = jieba.cut("中外科学研究", cut_all=False)print("精确模式:" + "/".join(seq_list))seq_list = jieba.cut_for_search("中外科学研究")print("搜索模式:" + "/".join(seq_list))

二、实现步奏

1.调用词性标注功能;

import jieba.posseg as psg

text=”去北京大学学习”

seg = psg.cut(text)

for ele in seg:

    print(ele)

三、代码实现 

import jieba.posseg as psgif __name__ == "__main__":# 使用jieba词库进行不同模式的分词,词性标注方法和关键字的提取text = "去北京大学学习"seg = psg.cut(text)for ele in seg:print(ele)

相关文章:

自然语言处理(jieba库分词)

1、完全切分法、正向最大匹配算法、逆向最大匹配算法和双向最大匹配算法 一、实验内容 一个好的NLP系统一定要有完备的词典&#xff0c;用于判断算法分出的词是否是具有实际意义的词。自定义一个词典&#xff0c;比如dic ["项目", "研究", "目的&q…...

MYSQL-查看函数创建语句语法(五)

SHOW CREATE FUNCTION 语句 SHOW CREATE FUNCTION func_name此语句类似于 SHOW CREATE PROCEDURE 的方法&#xff0c;但用于存储过程。 mysql> show create function world.sum \G *************************** 1. row ***************************Function: sumsql_mode:…...

图解IRF

FW1 配置思路 ① 配置IRF优先级 确认设备的主次 ② 设置批量操作的接口方便后续操作 interface range name fw-irf interface GigabitEthernet1/0/2 to GigabitEthernet1/0/3 ③ 接口 showdown 关闭接口 ④ 创建的IRF 1/1 成员的对应的接口的是 GE1/0/2 GE/1/0/3 ⑤ 开放IRF对…...

关于Chrome浏览器F12调试,显示未连接到互联网的问题

情况说明 最近笔者更新下电脑的Chrome浏览器&#xff0c;在调试前端代码的时候&#xff0c;遇到下面一个情况&#xff1a; 发现打开调试面板后&#xff0c;页面上显示未连接到互联网&#xff0c;但实际电脑网络是没有问题的&#xff0c;关闭调试面板后&#xff0c;网页又能正…...

南沙csp-j/s一对一家教 解一本通题: 1937:【06NOIP普及组】数列

【题目描述】 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列&#xff0c;例如&#xff0c;当k3时&#xff0c;这个序列是&#xff1a; 1&#xff0c;3&#xff0c;4&#xff0c;9&#xff0c;10&#xff0c;12&#xff0c;13&a…...

【分布式微服务云原生】K8s(Kubernetes)基本概念和使用方法

Kubernetes简称K8S,是一个强大的开源容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它最初由Google设计&#xff0c;并由Cloud Native Computing Foundation&#xff08;CNCF&#xff09;维护。以下是Kubernetes的一些基本概念和使用方法。 基本概念 集…...

引入Scrum激发研发体系活力

引言 在当今快速变化的技术环境中&#xff0c;IT企业面临着持续的市场压力和竞争&#xff0c;传统的瀑布式开发模式已经难以满足现代企业的需要。瀑布模型过于僵化&#xff0c;缺乏灵活性&#xff0c;导致项目经常延期&#xff0c;成本增加&#xff0c;最终可能无法达到预期效果…...

JAVA开源项目 技术交流分享平台 计算机毕业设计

本文项目编号 T 053 &#xff0c;文末自助获取源码 \color{red}{T053&#xff0c;文末自助获取源码} T053&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…...

Linux学习笔记之重点概念、实用技巧和常见问题解答。

Linux学习笔记的内容涵盖了从基础知识到高级应用的各个方面&#xff0c;包括重点概念、实用技巧和常见问题解答。以下是对这些内容的详细描述&#xff1a; 一、重点概念 1. Linux简介&#xff1a;Linux是一种自由和开放源代码的类UNIX操作系统&#xff0c;由林纳斯本纳第克特托…...

“数字武当”项目荣获2024年“数据要素×”大赛湖北分赛文化旅游赛道一等奖

9月26日&#xff0c;由国家数据局、湖北省人民政府指导的首届湖北省数据要素创新大会暨2024年“数据要素”大赛湖北分赛颁奖仪式在湖北武汉举行。由大势智慧联合武当山文化旅游发展集团有限公司参报的武当山“数字武当”项目&#xff0c;荣获文化旅游赛道一等奖。 据悉&#x…...

开箱即用的大模型应用跟踪与批量测试方案

背景介绍 最近抽空参加了一个讯飞的 RAG 比赛&#xff0c;耗时两周终于在最后一天冲上了榜首。 整体的框架是基于 RAG 能力有点弱弱的 Dify 实现。在比赛调优的过程中&#xff0c;经常需要批量提交几百个问题至 Dify 获取回答&#xff0c;并需要跟踪多轮调优的效果差异。借助…...

在MySQL中,要查询所有用户及其权限,您可以使用以下命令:

文章目录 1、查询所有用户1.1、登录数据库1.2、select user,host from mysql.user; 2、查看用户的权限 1、查询所有用户 1.1、登录数据库 [rootlocalhost ~]# docker exec -it spzx-mysql /bin/bash rootab66508d9441:/# mysql -uroot -p123456 mysql: [Warning] Using a pas…...

VMware下载安装教程

目录 一.下载二.安装 一.下载 官网地址&#xff1a;官网 下载的时候选择Workstation Player&#xff0c;这个是免费的&#xff0c;当然你也可以选择下载Workstation Pro。 二.安装 下载完成之后点击安装包按照需要安装即可。 安装之后启动&#xff0c;可以看到这个能够免费使…...

AI跟踪报道第58期-新加坡内哥谈技术-本周AI新闻: OpenAI动荡时刻和Meta从未如此动人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

深入理解 Nuxt.js 中的 app:error:cleared 钩子

title: 深入理解 Nuxt.js 中的 app:error:cleared 钩子 date: 2024/9/28 updated: 2024/9/28 author: cmdragon excerpt: Nuxt.js 中的 app:error:cleared 钩子的用途及其实现方式。这个钩子为开发者提供了一种优雅的方式来处理错误清除后的状态恢复和用户反馈。 categor…...

国内白帽子能赚多少钱?有多少白帽子全职挖洞能养活自己?零基础兼职挖漏洞收藏这一篇就够了

经常会有粉丝朋友私信大白&#xff0c;想探究一下国内的SRC&#xff08;安全响应中心&#xff09;平台究竟支持了多少白帽黑客的生活&#xff1f;又有多少白帽黑客能够不依赖于传统工作&#xff0c;全职从事漏洞挖掘并以此维生&#xff1f;以下信息或许可以为那些有意踏上这条道…...

速盾:cdn是怎么加速视频的?

CDN&#xff08;Content Delivery Network&#xff09;是一种网络加速服务&#xff0c;通过将内容分发到全球各地的服务器节点上&#xff0c;提供更快速度和更可靠的内容传输。当涉及到视频内容时&#xff0c;CDN起到了至关重要的作用&#xff0c;它通过一系列的技术和策略来加…...

前台项目启动/打包报错 Error: error:0308010C:digital envelope routines::unsupported

在package.json中修改启动/打包语句 如图&#xff0c;我这里是打包时候报错&#xff0c;就在build里前面加上 set NODE_OPTIONS--openssl-legacy-provider && 再次打包&#xff0c;成功。...

IPEmotion 2024 R2现支持Amazon S3和Windows SMB服务器

新版IPEmotion 2024 R2软件推出了许多新功能&#xff0c;其中的一大功能是支持Amazon S3、Windows SMB服务器以及新的IPE-CAM-007 USB摄像头。IPEmotion 2024 R2还支持直接写入TEDS数据和配置可装载电池的新款IPE833记录仪。 — 创新成果一览 — ■ 支持Amazon S3、Windows SM…...

Cache与内存-系统架构师(七十三)

1逆向工程导出的信息可以分为实现级、结构级、功能级和领域级四个抽象层次。程序的抽象语法树属于&#xff08;&#xff09;&#xff0c;反映程序分量之间相互依赖的关系信息属于&#xff08;&#xff09;。 问题1 问题2 A实现级 B结构级 C功能级 D领域级 解析&#xff1a…...

Python 3.14 JIT为何在ARM64上降频17%?源码级定位_pyltopt_arch.c中2个未对齐的寄存器分配bug(已提交CPython PR#12894)

第一章&#xff1a;Python 3.14 JIT编译器性能降频现象概览Python 3.14 引入的实验性 JIT 编译器&#xff08;基于 Pyjion 与新式 AST 优化管道&#xff09;在部分工作负载下表现出非预期的性能降频现象——即启用 JIT 后&#xff0c;某些计算密集型循环或 I/O 绑定协程的执行耗…...

seo页面优化公司如何进行网站内容优化

SEO页面优化公司如何进行网站内容优化 在当今数字化时代&#xff0c;网站内容优化已经成为了每个企业在SEO&#xff08;搜索引擎优化&#xff09;中的关键步骤。SEO页面优化公司通过一系列策略和技术&#xff0c;帮助企业提高网站在搜索引擎中的排名&#xff0c;从而吸引更多的…...

【JDK21虚拟线程生产就绪 checklist】:8类典型场景配置模板(WebFlux/Quarkus/Vert.x/RSocket全覆盖)

第一章&#xff1a;JDK21虚拟线程核心机制与生产就绪定义虚拟线程&#xff08;Virtual Threads&#xff09;是 JDK 21 中正式引入的里程碑特性&#xff08;JEP 444&#xff09;&#xff0c;其本质是轻量级、用户态调度的 Java 线程抽象&#xff0c;由 JVM 在平台线程&#xff0…...

单片机调试:问题复现与定位的实战技巧

1. 单片机开发中的问题复现方法论在单片机项目开发过程中&#xff0c;遇到问题是不可避免的。作为一名从业多年的嵌入式工程师&#xff0c;我认为问题复现是整个调试过程中最关键的第一步。很多新手开发者常常急于解决问题&#xff0c;却忽略了问题复现的重要性&#xff0c;结果…...

从豆瓣到StyleTalk:手把手教你用真实场景数据微调你的中文对话模型

从豆瓣到StyleTalk&#xff1a;手把手教你用真实场景数据微调你的中文对话模型 当你已经掌握了基座模型微调的基础技能&#xff0c;如何让模型真正理解特定领域的专业术语&#xff0c;或是模仿某种独特的说话风格&#xff1f;本文将带你深入实战&#xff0c;从数据清洗到效果评…...

Agent调试技巧:LangSmith与日志分析

Agent开发最痛苦的部分是调试。传统代码调试&#xff0c;你能看到每一行执行的结果。Agent调试&#xff0c;你只能看到"输入 → 输出"&#xff0c;中间的推理过程是个黑盒。 这篇文章&#xff0c;我们讨论Agent调试的方法和工具&#xff1a;怎么追踪Agent的推理过程…...

Vue3+ECharts水球图实战:手把手教你打造个性化数据展示组件

Vue3与ECharts水球图深度整合&#xff1a;打造企业级数据可视化组件 在数据驱动的时代&#xff0c;可视化呈现已成为现代Web应用的核心竞争力。水球图&#xff08;Liquid Fill Chart&#xff09;作为一种直观展示百分比数据的可视化形式&#xff0c;在仪表盘、进度监控和数据看…...

数字斯德哥尔摩:用户爱上折磨人的bug

在软件测试领域&#xff0c;我们经常面对一个悖论&#xff1a;用户有时会对那些反复出现、折磨人的bug产生一种依赖甚至“爱”的情感&#xff0c;这种现象被称为“数字斯德哥尔摩综合征”。它源于心理学中的斯德哥尔摩综合征——人质对劫持者产生情感依赖——在数字世界中&…...

Simulink SVPWM模块输出对不上?别慌,可能是这两个参数没设对(附24V电机FOC仿真案例)

Simulink SVPWM模块输出差异排查指南&#xff1a;从参数配置到波形修正 引言 在电机控制系统的仿真与开发过程中&#xff0c;Simulink的SVPWM模块是工程师们常用的工具之一。然而&#xff0c;许多开发者在对比自带模块与自建模型输出时&#xff0c;经常会遇到令人困惑的波形不一…...

MCP服务器越权访问漏洞零容忍方案(基于Open Policy Agent的动态策略引擎实战)

第一章&#xff1a;MCP服务器越权访问漏洞零容忍方案总览MCP&#xff08;Microservice Control Plane&#xff09;服务器作为微服务架构中权限调度与策略执行的核心组件&#xff0c;其任意越权访问均可能导致全链路认证绕过、敏感配置泄露甚至横向渗透。本方案坚持“零容忍”原…...