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

自然语言处理-词性标注的基本概念

在自然语言处理过程中,进行词性标注是很有必要的一个步骤,词性揭示了一个词的类别,识别每个词的词性可以分析句子的语法和结构,从而为后续的命名实体识别、句法分析、情感分析、信息抽取以及机器翻译等文本分析任务提供必要且有用的信息。相比较英文词性标注,中文词性标注的难度要更大,很多中文词汇有多个词性,并且中文在做词性标注之前必须要对句子进行分词,这大大增加了词性标注的复杂度与难度。

本篇博客主要介绍了词性标注的基本原理与发展过程,然后提供了一些常用的统计机器学习方法或基于规则的方法进行词性标注,希望对读者产生一些启发。

词性标注的基本概念

词性是词的基本语法属性,根据词在句子中的角色与功能,词性可以分为主语、谓语、定语、状语、补语等。不同语言有不同的词性划分体系,汉语中,经常将词分为两大类:实词和虚词,其中虚词包括连词、介词、助词、叹词等,而实词主要包括名词、动词、形容词等。在英语中,词性被划分为10类,包括名词、动词、形容词、副词、连词、介词、叹词、代词和冠词。

词性标注指对句子中的每个词的词性进行标注的过程。通过词性标注可以分析句子的语法规则,短语结构和句子成分之间的关系。

词性标注集由标签与词构成,包含了一些前人标注完成的词集合。常见的词性标注集有PKU(北京大学)词性标注集、863词性标注集、CTB(Chinese Treebank,中文树库)词性标注集等,常见的英语词性标注集有布朗语料库(Brown corpus)的词性标注集、宾州树库(Penn Treebank)的词性标注集等。一个常见词性标注集如下表。

序号符号词性名称示例序号符号词性名称示例
1Ag形语素前程似锦23nt机构团体国防科大
2a形容词美丽24nx外文字符Win11
3ad副形词韶华易逝25nz其他专名京港澳高速公路
4an名形词外交26o拟声词哈哈
5Bg区别语素赤橙黄27p介词为人民服务
6b区别词慢性咽炎28q量词首次
7c连词支持与帮助29Rg代语素于斯为盛
8Dg副语素交谈甚欢30r代词本书
9d副词进一步交流31s处所词家里的空调
10e叹词32Tg时语素现阶段
11f方位词眼睛里33t时间词2025年
12h前接成分准新郎34u助词技术的特点
13i成语义无反顾35Vg动语素洗了个舒服的澡
14j简称略词科教兴国36v动词扩大
15k后接成分朋友们37vd副动词持续升温

我们可以使用Python中的NLTK库查看语料库中词性标注结果,代码如下:

import nltk# nltk.download('brown') # 如果没有下载过布朗语料库需要先进行下载,下载以后即可注释掉
# nltk.download('treebank')
print(nltk.corpus.brown.tagged_words())  # 输出结果:[('The', 'AT'), ('Fulton', 'NP-TL'), ...]
print(nltk.corpus.treebank.tagged_words())  # 输出结果:[('Pierre', 'NNP'), ('Vinken', 'NNP'), (',', ','), ...]brown_tagged = nltk.corpus.brown.tagged_words()  # 获取布朗语料库中的标记
tag_fd = nltk.FreqDist(tag for (word, tag) in brown_tagged)  # 统计词性使用频率
print(tag_fd.most_common(10))  # 输出结果:[('NN', 152470), ('IN', 120557), ('AT', 97959), ('JJ', 64028), ...]

基于规则的词性标注方法

词典

在了解到词性的基本概念与常见的词性标注集后,我们现在已经对词性标注的结果有了一个比较清晰的认知,所谓词性标注就是给不同的词打上对应的标签。

基于规则的词性标注方法是最早提出的词性标注方法,其主要根据语言学规则、专业知识和经验手动设计,也可以通过机器学习方法学习到。其基本思想是按兼类词搭配关系和上下文语境来建造词性消歧规则,主要包括词汇信息规则和上下文信息规则两类。

中文基于规则的词性标注方法步骤主要为:

  1. 构建词典和规则库。利用专家经验构建尽可能完善的词典和规则库,这种方法虽然易于实现,但仍有穷尽,无法覆盖到所有的规则。
  2. 分词。基于已构建的词典对待标注文本进行分词处理。
  3. 词典匹配。查词典,匹配待标注文本中各词所有可能的词性标记。
  4. 规则匹配。应用规则库中的规则进行词性消歧,,逐步删除初始标注结果中的错误标记。

基于上述步骤,我们来使用Python代码认识一下词典。

from nltk.corpus import wordnet as wn # 导入WordNet词典synsets = wn.synsets('help')  # 在词典中查询"love"的所有同义项
posList = [] # 保存词性信息
for synset in synsets:  # 获取词words = synset.lemma_names()  # 获取词for word in words:  # 遍历该义项中的所有词if word == 'help':  # 获取并保存“love”的词性posList.append(synset.pos())
from collections import Counterprint(Counter(posList))  # Counter({'n': 6, 'v': 4})

正则表达式

下面展示一下使用正则表达式进行基于规则的匹配,输出匹配精确度

from nltk.tag.sequential import RegexpTaggerreggexp_tagger = RegexpTagger([(r'^-?\d+(.\d+)?$', 'CD'),  # cardinal numbers(数字)(r'(The|the|A|a|An|an)$', 'AT'),  # articles(冠词)(r'.*able$', 'JJ'),  # adjectives (形容词)(r'.*(ness)$', 'NN'),  # nouns (名词单数形式)(r'.*ly', 'RB'),  # adverbs (副词)(r'.*(s)$', 'NNS'),  # plural nouns (名词复数形式)(r'.*ing$', 'VBG'),  # gerunds (动词的现在分词)(r'.*ed$', 'VBD'),  # past tense verbs (动词的过去式)(r'.*', 'NN')  # nouns (默认为名词)
])
from nltk.corpus import browntagged_sents = brown.tagged_sents()
test_data = tagged_sents[0:int(len(tagged_sents) * 0.1)]
print(reggexp_tagger.evaluate(test_data))  # 输出结果,准确率为:0.29721798738603233

基于统计机器学习的词性标注方法

常用的统计机器学习模型包括隐马尔可夫模型、最大熵模型、条件随机场等,基于统计机器学习的词性标注方法利用大规模已标注语料库训练机器学习模型,通过词的统计规律来预测词标签。其基本思想是将词性标注看作一个序列标注问题,即给定一段词预测下一个词的概率。

http://www.xdnf.cn/news/4945.html

相关文章:

  • 黄金、碳排放期货市场API接口文档
  • 【阿里云免费领取域名以及ssl证书,通过Nginx反向代理web服务】
  • BUUCTF——杂项渗透之赛博朋克
  • 操作系统导论——第27章 插叙:线程API
  • softmax传递函数+交叉熵损失
  • ACTF2025 - Web writeup
  • C++编程语言:标准库:标准库概观(Bjarne Stroustrup)
  • 第六章 进阶09 我的人才观
  • 【设计模式】GoF设计模式之策略模式(Strategy Pattern)
  • rust 中的 EBNF 介绍
  • Uniapp编写微信小程序,使用canvas进行绘图
  • uni-app,小程序中的addPhoneContact,保存联系人到手机通讯录
  • 不止是UI库:React如何重塑前端开发范式?
  • Java中的内部类详解
  • iOS创建Certificate证书、制作p12证书流程
  • eNSP中路由器RIP协议配置完整实验实验和命令解释
  • Starrocks 的 ShortCircuit短路径
  • Rspress-快如闪电的静态站点生成器
  • Linux 学习笔记1
  • cilium路由模式和aws-eni模式下的IPAM
  • MySQL有哪些高可用方案?
  • CommunityToolkit.Mvvm详解
  • 前端面试每日三题 - Day 29
  • JavaScript性能优化实战,从理论到落地的全面指南
  • 阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
  • webpack代理天地图瓦片
  • 【C++设计模式之Template Method Pattern】
  • mysql 已经初始化好,但是用 dbeaver 连接报错:Public Key Retrieval is not allowed
  • 2025数字孪生技术全景洞察:从工业革命到智慧城市的跨越式发展
  • Vue项目---懒加载的应用