【自然语言处理】实验二:基于NLP工具的词性标注实验

devtools/2024/10/7 23:17:29/

目录

前言

1.词性标注模块

1.1 导入中文文本

1.2 给出字典映射

1.3 cut词性标注

1.4 lcut词性标注

2.统计人名次数

2.1 精确模式

2.2 统计存储单词

2.3 生成文本输出


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

词性标注是自然语言处理中的一种任务,是指为文本中的每一个词分配一个相应的词性标签,即确定每个单词是名词、动词、形容词或者其他词性的过程。


实验步骤:

1.词性标注模块

1.1 导入中文文本

导入jieba库中的词性标注模块和中文文本

代码:

python">import jieba.posseg as psg
sentence ="""现如今,人工智能已经成为大众耳熟能详的词汇,而自然语言处理却很少有人了解,
自然语言处理属于人工智能的一个子领域,它对计算机和人类的交互方式有许多重要的影响。"""
1.2 给出字典映射

给出词性标注的标签含义字典映射,便于输出结果查看

代码:

python">dict_en2cn = {'a': '形容词', 'ad': '副形词', 'ag': '形语素', 'an': '名形词', 'b': '区别词','c': '连词', 'd': '副词', 'df': '不要', 'dg': '副语素','e': '叹词', 'f': '方位词', 'g': '语素', 'h': '前接成分','i': '成语', 'j': '简称略语', 'k': '后接成分', 'l': '习用语','m': '数词', 'mg': '数语素', 'mq': '数量词','n': '名词', 'ng': '名语素', 'nr': '人名', 'nrg': '古代人名', 'nrt': '外国人名','ns': '地名', 'nt': '机构团体', 'nz': '其他专名','o': '拟声词', 'p': '介词', 'q': '量词','r': '代词', 'rg': '代语素', 'rr': '代词', 'rz': '代词','s': '处所词', 't': '时间词', 'tg': '时间语素','u': '助词', 'ud': '得', 'ug': '过', 'uj': '的', 'ul': '了', 'uv': '地', 'uz': '着','v': '动词', 'vd': '副动词', 'vg': '动语素', 'vi': '动词', 'vn': '名动词', 'vq': '动词','x': '非语素字', 'y': '语气词', 'z': '状态词', 'zg': '状态语素'
}
1.3 cut词性标注

利用词性标注方法cut进行词性标注

代码:

python">sent_psg = psg.cut(sentence)  
psg_list = []
for word, pos in sent_psg:psg1 = '{0}/{1}'.format(word, pos)  psg_list.append(psg1)  
print("词性标注的结果为:", "".join(psg_list))

截图:

1.4 lcut词性标注

利用词性标注方法lcut进行词性标注

代码:

python">seg_list = psg.lcut(sentence) 
print('词性标注的结果为:', seg_list)

截图:

2.统计人名次数

利用词性标注进行一个简单应用:统计文本中出现的人名(词性为nr),并按出现次数从大到小排序输出

2.1 精确模式

读取文本并使用精确模式对文本进行词性标注(包括分词)

代码:

python">text = open('./Desktop/实验二.txt', 'r', encoding='utf-8').read()
text_psg = psg.lcut(text)
print('人物名词性标注为:\n', ''.join(['{0}/{1}'.format(w, t) for w, t in text_psg]))

截图:

说明:运行代码前,先在桌面上新建文本,我将其命名为"实验二",文本内容如下:

林黛玉
薛宝钗
贾宝玉
贾元春
贾迎春
贾探春
贾惜春
李纨
妙玉
史湘云
王熙凤
巧姐
秦可卿
林黛玉
薛宝钗
贾探春
李纨
妙玉
史湘云
王熙凤
林黛玉
薛宝钗
秦可卿

2.2 统计存储单词

统计词性为nr且长度>1的单词,存储在字典中

代码:

python">name_counts = {}
for word_pair in text_psg:if len(word_pair.word) == 1:continueelse:if word_pair.flag == 'nr':name_counts[word_pair.word] = name_counts.get(word_pair.word, 0) + 1
print('人物名词统计结果:', name_counts)

截图:

2.3 生成文本输出

将字典中统计数据进行排序并输出

代码:

python">item = name_counts.items() 
items = list(item) 
items.sort(key=lambda x: x[1], reverse=True) name_list = open('人名及出现次数.txt', 'w', encoding='utf-8')
for i in range(len(items)):name = items[i][0]count = items[i][1]name_count = name + str(count)name_list.write(name_count + '\n')
name_list.close()

截图:

说明:在文件夹目录下查看统计结果。


http://www.ppmy.cn/devtools/110355.html

相关文章

49. 丑数

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9849.%20%E4%B8%91%E6%95%B0/README.md 面试题 49. 丑数 题目描述 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。…

qtdraw-使用qt绘图之开源源码学习

1. 资源介绍 功能:使用qt在画板上绘制各种形状,并保持绘制内容到xml文件中。 项目源码:https://github.com/egan2015/qdraw 软件界面: 1.1 支持shape 6种 1.2 支持的功能 6种,分别是对绘制的图形进行撤销undo&…

8K回报率10枚自定义按键,PC游戏丝滑操作,雷柏VT1 Pro MAX鼠标体验

现在喜欢玩PC游戏的朋友越来越多,《黑神话:悟空》等3A游戏也吸引到了更多的新玩家,想要完美运行此类游戏,不仅需要高性能的电脑硬件,还需要操控精准、反应敏捷的鼠标、键盘等外设。前端时间雷柏推出了VT1系列鼠标&…

【C++学习笔记】数组与指针(三)

目录 一、数组 1.1 数组声明与赋值 1.2 数组的特点 特点1:任意类型均可创建数组 特点2:固定大小 特点3:内存连续且有序 特点4:C无数组下标越界错误 特点5:数组变量不记录数据 1.3 遍历数组 普通for循环 for…

HarmonyOS开发之路由跳转

文章目录 一、路由跳转模式与实例1.router.pushUrl2.router.replaceUrl3.router.back 一、路由跳转模式与实例 跳转模式 有点类似于vue的路由跳转 router.pushUrl 保留路由栈,保留当前的页面;router.replaceUrl 销毁当前页面,跳转一个新的页…

【30天玩转python】文件操作

文件操作 Python 提供了一组强大且简单的文件操作功能,使得读写文件变得非常容易。通过 Python 的内置函数和标准库,我们可以方便地处理各种文件格式,如文本文件、二进制文件等。本节将详细介绍文件的基本操作,包括文件的打开、读…

游戏开发引擎___unity位置信息和unlit shader(无光照着色器)的使用,以桌子的渲染为例

unity是左手坐标系 1.位置信息 1.1 代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class positionTest : MonoBehaviour {public Camera Camera;private void OnGUI(){//世界坐标系,GUI里的标签GUI.Label(new Rec…

docker操作问题总结

登录 sudo docker login mogohub.tencentcloudcr.com --username 100002889649 --password eyJhbGciOiJSUzI1NiIsImtpZCI6IldOSFY6MjdCNTpGSlVOOlRPR1I6QlRYTDpZUldJOkNKNlI6U0pQVTpJRDJCOkU2UEY6SEwzRDozT0pGIn0.eyJvd25lclVpbiI6IjEwMDAwMjg4OTY0OSIsIm9wZXJhdG9yVWluIjoiMT…