【NLP】Jieba中文分词

Jieba分词是一个用于中文文本分词的开源工具。它可以将一段连续的中文文本切分成一个一个的词语,这对于中文自然语言处理(NLP)任务如文本分类、情感分析、机器翻译等非常重要。Jieba分词具有以下特点:

  1. 支持三种分词模式
    • 精确模式:试图将句子最精确地切开,适合文本分析。
    • 全模式:把句子中所有的可以成词的词语都扫描出来,速度快,但不能解决歧义。
    • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
  2. 支持自定义词典:用户可以通过添加自定义词典来提高分词的准确性,尤其是对一些专有名词和新词的识别。
  3. 内置多种分词词典:Jieba自带了多种分词词典,能够识别大量常用词汇。

Jieba基础使用

安装

可以使用pip安装Jieba:

pip install jieba

使用示例

import jieba# 精确模式
text = "我来到北京清华大学"
seg_list = jieba.cut(text, cut_all=False)
print("精确模式: " + "/ ".join(seg_list))# 全模式
seg_list = jieba.cut(text, cut_all=True)
print("全模式: " + "/ ".join(seg_list))# 搜索引擎模式
seg_list = jieba.cut_for_search(text)
print("搜索引擎模式: " + "/ ".join(seg_list))

输出:

精确模式: 我/ 来到/ 北京/ 清华大学
全模式: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
搜索引擎模式: 我/ 来到/ 北京/ 清华/ 华大/ 大学/ 清华大学

通过这种方式,Jieba可以高效地将中文文本分割成词语,为后续的自然语言处理任务提供基础支持。

自定义词典

Jieba分词支持自定义词典功能,允许用户添加特定领域或特定应用场景的词汇,以提高分词的准确性和识别率。以下是关于自定义词典功能的详细介绍:

自定义词典的使用方法

  1. 创建自定义词典文件: 自定义词典是一个纯文本文件,每行一个词汇,格式如下:

    词语 词频 词性
    
    • 词语:需要添加的词汇。
    • 词频:可选,词频越高,分词时越倾向于将此词作为一个整体分出。默认值是1。
    • 词性:可选,词语的词性标注。

    例如:

    自然语言处理 3 n
    机器学习 5 n
    深度学习 2 n
    
  2. 加载自定义词典: 使用jieba.load_userdict方法加载自定义词典:

    import jiebajieba.load_userdict('user_dict.txt')
    
  3. 添加单个词汇: 除了加载整个词典文件,还可以动态添加单个词汇:

    jieba.add_word('自定义词')
    jieba.add_word('深度学习', freq=20000, tag='n')
    
  4. 删除单个词汇: 如果需要移除某个词汇,可以使用jieba.del_word方法:

    jieba.del_word('不需要的词')
    

自定义词典示例

假设有一个文本需要处理,并且有一些特定领域的词汇需要添加:

自定义词典文件 (user_dict.txt):
人工智能 5 n
区块链 3 n
数据挖掘 4 n
加载自定义词典并进行分词
import jieba# 加载自定义词典
jieba.load_userdict('user_dict.txt')# 测试文本
text = "人工智能和区块链是当今的热门技术,数据挖掘也是非常重要的技能。"# 分词
seg_list = jieba.cut(text, cut_all=False)
print("精确模式: " + "/ ".join(seg_list))
输出结果
精确模式: 人工智能/ 和/ 区块链/ 是/ 当今/ 的/ 热门/ 技术/ ,/ 数据挖掘/ 也是/ 非常/ 重要/ 的/ 技能/ 。

词性划分

要查看每个词的词性,你可以使用 Jieba 的 jieba.posseg 模块,它提供了词性标注的功能。jieba.posseg 模块可以分词并同时返回词性标注。

示例代码

以下是使用 jieba.posseg 模块进行分词和词性标注的示例代码:

import jieba.posseg as pseg# 测试文本
text = "人工智能和区块链是当今的热门技术,数据挖掘也是非常重要的技能。"# 分词并标注词性
words = pseg.cut(text)# 输出分词结果和词性
for word, flag in words:print(f'{word} ({flag})')

解释

  • jieba.posseg.cut(text):对文本进行分词并返回一个生成器,每个生成器项是一个包含词语和词性标记的元组。
  • word:表示分词结果中的词语。
  • flag:表示词语的词性标记(例如,n 表示名词,v 表示动词等)。

词性标记

常见的词性标记包括:

  • n:名词
  • v:动词
  • a:形容词
  • d:副词
  • p:介词
  • m:数词
  • q:量词

这将帮助你在分词结果中看到每个词汇的词性,从而进行更深入的文本分析。

关键词提取

Jieba 提供了 jieba.analyse 模块来进行关键词提取,常用于从文本中提取出重要的词汇。

示例代码

import jieba.analysetext = "人工智能是计算机科学的一个重要领域,近年来得到了广泛的应用。"# 提取关键词
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=False)print("关键词: " + "/ ".join(keywords))
  • topK:返回前 K 个关键词。
  • withWeight:是否返回词语的权重,默认为 False。

TF-IDF 算法

jieba.analyse 还支持 TF-IDF 算法来提取关键词。

示例代码
import jieba.analysetext = "人工智能是计算机科学的一个重要领域,近年来得到了广泛的应用。"# 提取关键词及其权重
keywords_with_weight = jieba.analyse.extract_tags(text, topK=5, withWeight=True)for word, weight in keywords_with_weight:print(f'{word}: {weight}')

TextRank 算法

jieba.analyse 模块也支持 TextRank 算法,这是一种图排序算法,用于提取关键词。

示例代码
import jieba.analysetext = "人工智能是计算机科学的一个重要领域,近年来得到了广泛的应用。"# 使用 TextRank 算法提取关键词
keywords = jieba.analyse.textrank(text, topK=5, withWeight=False)print("关键词: " + "/ ".join(keywords))

工程技巧

位置获取

地名提取

要从文本中分出地名,可以使用jieba结合词性标注来识别地名。地名通常标记为ns(名词性地名)。你可以使用jieba.posseg模块进行词性标注,然后筛选出标记为ns的词汇。

以下是从文本中提取地名的示例代码:

import jieba.posseg as pseg# 测试文本
text = "我去了北京和上海,最近还计划去东京和纽约旅游。"# 分词并标注词性
words = pseg.cut(text)# 提取地名
places = [word for word, flag in words if flag == 'ns']
经纬查询

尝试通过两个不同的地图服务API(腾讯地图和高德地图)来获取指定地点的经纬度坐标。

requests 是一个用 Python 编写的第三方 HTTP 库,它使得发送 HTTP/1.1 请求变得非常简单。使用 requests,你可以很容易地发送各种 HTTP 请求(如 GET、POST、PUT、DELETE 等),并获取服务器响应的内容。requests 库的设计哲学是简洁易用,同时又不失强大和灵活性

import requestsdef tencentMap(location):   #调用腾讯api查找城市经纬度url = "https://apis.map.qq.com/jsapi?"  # 腾讯地图API接口para = {"qt": "geoc","addr": location,  # 传入地址参数"output": "jsonp","key": "xxxxxxxxxx",  # 即腾讯地图API的key"pf": "jsapi","ref": "jsapi"}req = requests.get(url, para).json()  # 请求数据并转为json格式geted = req["detail"]return float(geted['pointx']),float(geted['pointy'])def aliMap(location):   #调用阿里api查找城市经纬度para = {'key':'xxxxxxxxxx',   # 高德Key'address':location} # 地址参数url = 'https://restapi.amap.com/v3/geocode/geo?'    # 高德地图地理编码API服务地址result = requests.get(url,para).json()  # GET方式请求lon_lat = result['geocodes'][0]['location']lon,lat = map(float, lon_lat.split(','))return lon,latdef getLonLat(location):try:return tencentMap(location)except:return aliMap(location)return None,None

自定义缺省词典词性

可以通过在加载词典文件后遍历词汇并动态添加这些词汇到 Jieba 的分词库中,同时指定词性。

def add_dict(self, dict_path:str,tag:str):with open(dict_path, 'r', encoding='utf-8') as file:for line in file:word = line.strip()jieba.add_word(word, tag=tag)

找到第一个该词性的词

从一个句子中返回第一个指定词性的词,可以使用 jieba.posseg 模块进行词性标注,并在遍历分词结果时找到第一个匹配的词性。

import jieba.posseg as psegdef find_first_word_of_type(text, word_type):# 分词并标注词性words = pseg.cut(text)# 遍历分词结果,寻找第一个指定词性的词for word, flag in words:if flag == word_type:return wordreturn None

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】FlyFlowerSong【人工智能】资源指南

一、引言 FlyFlowerSong是一个创新的音乐合成与处理项目,它利用先进的机器学习算法,为用户提供了一个简单而有趣的音乐创作平台。作为人工智能领域的技术自媒体创作者,我整理了关于FlyFlowerSong的完整教程、论文复现指南以及demo项目源代码…

前端post提交一次会有两次请求?

1 问题:前端post只提交一次会有两次请求? 前端post只提交一次会有两次请求?如下图: 这里是执行了两次post提交,每个post都有两次(一次是preflight以options方式,一次是xhr,原本…

安装docker-18.06报错Error: libseccomp conflicts with docker-18.06

安装dockers报错 Error: libseccomp conflicts with docker-18.06.1ce-6.amzn2.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 这个是libseccomp版本跟docker版本不对,要升级docker版…

【笔记-软考】架构演化

Author:赵志乾 Date:2024-07-20 Declaration:All Right Reserved!!! 1. 概念 架构都会经历初始设计、实际使用、修改完善和退化弃用的过程,其中修改完善即为架构的演化过程,其演化的…

STM32+USART串口(1)

GPIO口的复用功能是有对应的,作USART使用的话要选择对应的GPIO;可以参考引脚定义; (1)串口通信分为:串行通信和并行通信; (2)通信波特率 :通常用波特率&…

Yolo-World网络模型结构及原理分析(三)——RepVL-PAN

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1. 网络结构2. 特征融合3. 文本引导(Text-guided)4. 图像池化注意力(Image-Pooling Attention)5. 区域文本匹配&…

springboot+vue+mybatis校园热点新闻系统+PPT+论文+讲解+售后

21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到…

Tomcat长连接源码解析

长连接: 客户端发送Http请求至服务端,请求发送完之后socket连接不断开,可以继续接收下一个Http请求并且解析返回。接手并解析这些Http请求的时候socket连接不断开,这种过程被称为长连接。 需要注意的点就在于,在满足什么条件的情况…

如何在 Windows 上恢复丢失或删除的文件

意外删除重要文件或文档的历史与 Windows 本身一样悠久,这就是为什么有许多内置方法来恢复它。从深入回收站到挖掘 Microsoft 的 Windows 文件恢复实用程序,以下是如何在 Windows 中恢复丢失和删除的文件。 检查回收站 Windows 帮助您恢复已删除并需要再…

IO多路复用之poll、epoll和select区分

epoll和select 假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。 select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。 而epoll版宿管大妈会先记下每位同学的房间号, 你的朋友来时,只需告诉你…

【Langchain大语言模型开发教程】链

🔗 LangChain for LLM Application Development - DeepLearning.AI 学习目标 1、LLMChain 2、Sequential Chains 3、Router Chain LLMChain import warnings warnings.filterwarnings(ignore) import os import pandas as pdfrom dotenv import load_dotenv, find…

德国汉堡大学、清华大学联合英国布里斯托机器人实验室的研究工作分享:基于视觉遥操作的多指机械手灵巧操作

德国汉堡大学(张建伟院士团队)、清华大学(孙富春教授和方斌)联合英国布里斯托机器人实验室等单位在基于视觉信息遥操作的多指机械手灵巧操作研究方面取得进展。该工作得到了德国科学基金会(DFG)与中国国家自…

Git分支管理基本原理

原文全文详见个人博客: Git分支管理基本原理上文已讨论过svn分支管理的基本原理,本文将继续探讨Git分支管理的基本原理,以便后续进行进一步的理解和对比:https://www.coderli.com/git-branch-method/【Java学习交流(982860385)】…

Linux journalctl日志太长,如何倒序查看journalctl --reverse,journalctl -xeu

文章目录 需求实验方法一方法二 需求 Linux journalctl日志太长,如何倒序查看 我们通常关心的是最近的日志,但是每次打开日志都是按时间先后顺序显示的,如何倒序查看,请看下面: 实验 方法一 journalctl 命令默认按…

关于限定视频码率的问题

这几天有人对码率提出要求。其实这本来不是问题。码率是设给编码器的,编码器根据复杂度编码,有时高有时低。 他希望设定码率之后,码率不超过这个值。 你说他无理取闹?强词夺理?其实他的想法也有道理。我现在带宽就这…

Linux工具相关介绍

目录 1.linux安装软件 2.Linux软件生态问题 3.linux软件包管理器yum 4.linux里面好玩的小命令 4.1安装源 4.2小火车 4.3人物说话情景 5.vim简单介绍 5.1简单认识 5.2代码编写 5.3命令模式 1.linux安装软件 1.1源代码安装:这个里面可能根据代码bug需要修改…

AI模型大比拼:Claude 3系列 vs GPT-4系列最新模型综合评测

AI模型大比拼:Claude 3系列 vs GPT-4系列最新模型综合评测 引言 人工智能技术的迅猛发展带来了多款强大的语言模型。本文将对六款领先的AI模型进行全面比较:Claude 3.5 Sonnet、Claude 3 Opus、Claude 3 Haiku、GPT-4、GPT-4o和GPT-4o Mini。我们将从性能…

huawei USG6001v1学习---防火墙高可靠性(双机热备)

1.什么是双机热备 如图:当左图的防火墙发生故障时,整个系统都会收到影响,而右图即使有防火墙发生故障,但是还有一台防火墙做备份,相对于只有一台防火墙,要可靠些。 由于防火墙上不仅需要同步配置信息&…

C# 中的委托

委托的概念 在C#中,委托是一种引用类型,它表示对方法的引用,即委托就是一种用来指向一个方法的引用类型变量。委托的声明类似于方法签名,但是关键字是delegate。下面是一个委托的声明和使用的例子: // 声明一个委托 p…

【数据分享】2013-2022年我国省市县三级的逐月SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000——2022年的省市县三级的逐月PM2.5数据和2013-2022年的省市县三级的逐月CO数据(均可查看之前的文章获悉详情)! 本次我们分享的是我国2013——2022年的省…