当前位置: 首页 > 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…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...