第四章 词性标注
目录前置案例——Jieba 中文词性标注的三种用法1. 基础词性标注2. 词性过滤抽取3. 简单句法骨架一、概念介绍二、技术难点2.1 一词多词性问题2.2 未登录词处理难题2.3 标注标准不统一问题三、标注规范3.1 北大词性标注规范PKU POS Tagset3.2 其他主流中文词性标注规范四、主要方法4.1 基于规则的方法4.2基于统计的方法4.3基于深度学习方法五、 工具应用5.1 Jieba中文词性标注5.2 NLTK英文词性标注5.3 SpaCy多语言词性标注摘要本文系统介绍了自然语言处理中的词性标注POS Tagging技术。首先通过 Jieba 的三个实用案例基础标注、词性过滤、简单句法骨架展示其应用价值随后详细阐述了词性标注的基本概念、面临的技术难点一词多词性、未登录词、标准不统一以及主流标注规范如北大 PKU、哈工大 LTP、通用词性标注集等接着分析了基于规则、统计和深度学习的三大主流方法最后介绍了 Jieba、NLTK、SpaCy 等常用工具的实际应用。文章旨在为读者提供从理论到实践的完整知识脉络。前置案例——Jieba 中文词性标注的三种用法借助 jieba 的词性标注能力可以在分词基础上获取每个词语的语法属性。我们可以依靠词性标签筛选词汇、搭建简易句法抽取规则。下面由浅入深演示三种常用实践方式从基础标注、词性筛选到简易主谓宾提取逐步掌握基于词性的文本处理思路。1. 基础词性标注概念说明Jieba 的 posseg 模块能在分词的同时为每个词标注词性。词性标签是一组简短的字母例如 n代表名词、v代表动词、a代表形容词。对于一句话我们只要遍历标注结果就能看到每个词被分配了什么标签,后续的任何高级处理都建立在这些标签之上。代码演示讲解import jieba.posseg as pseg words pseg.cut(张三买了一本有趣的书) for word, flag in words: print(f{word}/{flag})运行结果张三/nr 买/v 了/ul 一本/m 有趣/a 的/uj 书/n2. 词性过滤抽取概念说明很多场景下我们只关心某一类词。比如抽取关键词时常认为名词和动词蕴含最多信息做情感分析时形容词和副词是关键。利用词性标签我们可以从句子中只保留特定词性的词。Jieba 的标签体系让我们可以通过前缀匹配轻松过滤出名词、动词等大类。代码演示讲解import jieba.posseg as pseg def extract_by_pos(text, target_posn): 抽取句中词性以 target_pos 开头的所有词 words pseg.cut(text) result [word for word, flag in words if flag.startswith(target_pos)] return result sentence 一个优秀的工程师设计了一套灵活的架构 nouns extract_by_pos(sentence, n) # 所有名词 verbs extract_by_pos(sentence, v) # 所有动词 adjs extract_by_pos(sentence, a) # 所有形容词 print(名词, nouns) print(动词, verbs) print(形容词, adjs)运行结果名词 [工程师, 架构] 动词 [设计] 形容词 [优秀, 灵活]3. 简单句法骨架概念说明在不借助复杂句法分析器的情况下仅凭词性标注序列我们也可以做出一些实用的小工具。比如假设句子中的第一个名词是主语第一个动词是谓语动词后的第一个名词是宾语就能得到一个粗糙的“主-谓-宾”骨架。代码演示讲解import jieba import jieba.posseg as pseg def crude_svo(sentence): seg_words jieba.cut_for_search(sentence) words list(pseg.cut( .join(seg_words))) subj verb obj None for word, flag in words: if subj is None and flag.startswith(n): subj word elif verb is None and flag.startswith(v): verb word elif verb is not None and flag.startswith(n): obj word break if subj and verb and obj: return f{subj} --{verb}-- {obj} elif subj and verb: return f{subj} --{verb}-- (无宾语) else: return 未识别出主谓结构 print(crude_svo(老师批改作业)) print(crude_svo(雨停了))运行结果老师 --批改-- 作业 雨 --停-- (无宾语)一、概念介绍词性标注Part-of-Speech Tagging简称POS标注是自然语言处理NLP领域的基础任务之一指的是对文本中的每个词语根据其在特定语境下的语法功能和语义含义赋予相应词性标签的过程。这些标签通常包括名词、动词、形容词、副词、代词、介词等基本类别部分标注体系还会对词性进行更细致的划分比如将名词细分为普通名词、专有名词、抽象名词等。从本质上来说词性标注是架起人类自然语言与计算机可理解语言之间的一座桥梁。人类在理解语言时会本能地根据词语的词性来判断其在句子中的角色而词性标注就是让计算机拥有这种“本能”的关键步骤。例如在句子“我爱自然语言处理”中通过词性标注可以得到“我/代词爱/动词自然语言/名词处理/动名词”的结果这让计算机能够清晰地识别每个词语的功能为后续的语言处理任务奠定基础。词性标注作为NLP的基础性任务其作用贯穿于众多高阶应用场景是实现复杂语言处理功能的重要前提。在句法分析中只有明确每个词语的词性才能准确分析句子的语法结构确定词语之间的依存关系在命名实体识别中词性标注可以帮助筛选出可能的实体候选比如专有名词通常是命名实体的重要组成部分在机器翻译中词性标注能够辅助源语言和目标语言之间的词语映射提升翻译的准确性。二、技术难点尽管词性标注是基础任务但在实际应用中仍面临诸多难点这些难点主要源于自然语言的复杂性和多样性。2.1 一词多词性问题统计数据显示中文的一词多词性的概率高达22.5%且越常用的词多词性现象越严重。比如“学习”既可以作为动词表示“通过阅读、听讲等获得知识或技能”如“学习编程”也可以作为名词表示“从阅读、听讲等中获得的知识或技能”如“取得了良好的学习效果”。如何根据上下文准确判断词语的词性是词性标注的一大挑战。2.2 未登录词处理难题未登录词指的是不在现有词表中或者模型在训练过程中未遇到过的词语如新兴的网络用语、专业领域术语、人名地名等。这些词语无法通过传统的字典查询方式获取词性需要模型具备一定的泛化能力和知识迁移能力来进行判断。例如随着人工智能技术的发展出现了“大模型”“生成式AI”等新词如何准确为这些词语标注词性对现有标注方法提出了考验。2.3 标注标准不统一问题目前不同的研究机构和应用场景采用的词性标注标准并不统一。比如中文词性标注中北京大学语料库将词性划分为26类而LDC标注语料则将汉语一级词性划分为33类。标注标准的不统一导致不同模型之间的兼容性较差也增加了跨场景应用的难度。三、标注规范经过多年的发展词性标注形成了一定的规范不同语言有不同的词性标签集。英文通常使用八大基本标签包括名词N、动词V、代词P、形容词ADJ、副词ADV等这些标签还可以进一步细分其中应用最广的细分标准是宾州树库Penn Treebank词性标签集—— 也就是 NLTK 等工具默认采用的标注体系它将八大类拆分为 36 个细粒度标签例如将名词细分为普通单数名词NN、普通复数名词NNS、专有单数名词NNP将代词细分为人称代词主格PRP、物主代词PRP$等。中文词性标签集则更为丰富一般包括名词、动词、形容词、副词、代词、介词、连词、数词、量词、助词、感叹词、拟声词等类别部分标注体系还会对每个类别进行更细致的划分。国内中文词性标注以北大词性标注规范为核心基准同时衍生出多个适配不同场景的行业规范3.1 北大词性标注规范PKU POS Tagset由北京大学计算语言学研究所制定是国内中文信息处理领域影响力最大、应用最广泛的标注标准配套百万字级《人民日报》标注语料也是绝大多数中文分词、词性标注工具的底层参照体系。该规范采用小写英文字母作为标签标识设置 26 个一级词性大类每个大类可通过字母后缀进一步拆分二级小类核心分类如下名词相关n普通名词细分 nr人名、ns地名、nt机构团体名、nz其他专有名词另独立设置 t时间词、s处所词、f方位词三个相关大类动词v动词细分 vd副动词、vn名动词如 “研究、建设”等形容词a形容词细分 ad副形词、an名形词另独立设置 z状态词如 “红彤彤、干干净净”虚词类p介词、c连词、u助词可细分 “的 / 地 / 得、着、了、过” 等十余小类、y语气词其他实词m数词、q量词、r代词分人称、指示、疑问三类、d副词、b区别词如 “大型、男式”特殊词类i成语、l惯用语、j简称略语、e叹词、o拟声词、w标点符号等3.2 其他主流中文词性标注规范国家 863 词性标注集国内早期由国家 863 计划中文信息处理专家组制定的官方评测标准分类框架与北大规范高度接近标签命名略有差异主要用于早期中文 NLP 技术的评测与学术研究是国内词性标注体系的重要奠基规范。哈工大 LTP 词性标注集由哈尔滨工业大学社会计算与信息检索研究中心推出配套 LTP 中文语言技术平台使用。该体系在北大规范基础上做了精简优化共 34 个词性标签兼顾标注粒度与实用性在句法分析、语义角色标注等下游任务中表现优异学术界与工业界均有广泛应用。清华 THULAC 词性标注集由清华大学自然语言处理实验室制定配套 THULAC 中文分词工具。其标注体系参考北大规范同时针对书面语、口语混合场景做了适配标签粒度适中、标注准确率高适合通用文本处理场景。百度 LAC 词性标注集面向工业级应用的标注体系配套百度 LAC 中文词法分析工具。该体系在传统词性分类基础上融合了实体识别标签如作品名、品牌名、职位名等将词性标注与实体识别打通更适配搜索引擎、推荐系统、智能客服等实际业务场景。通用词性标注集Universal POS Tags国际跨语言统一标注标准中文有对应适配版本共 17 个粗粒度大类如 NOUN、VERB、ADJ 等不做细粒度拆分。其核心优势是支持跨语言对齐spaCy 等国际主流 NLP 工具的中文模型均采用该体系适合多语言联合研究场景。四、主要方法词性标注方法与分词方法类似也分为三类如下。4.1 基于规则的方法基于规则的词性标注方法主要依靠人工设计的规则来进行标注通常以字典查询为基础优先选择词语的高频词性。比如对于“研究”一词根据其在语料库中的使用频率若作为动词的使用占比更高则在没有特殊上下文的情况下将其标注为动词。这种方法简单易懂但规则的制定需要耗费大量的人力且难以捕捉复杂的语言规律对一词多词性和未登录词的处理效果不佳。4.2基于统计的方法基于统计的词性标注方法利用已标注的语料库来训练模型通过计算条件概率来预测未标注词语的词性。其中隐马尔可夫模型HMM是应用较为广泛的一种统计模型。在HMM中将词语视为观测序列词性视为隐藏序列通过计算初始状态概率、状态转移概率和观测概率利用维特比算法来寻找最可能的词性序列。这种方法能够较好地处理一词多词性问题但对语料库的依赖程度较高且难以处理长距离的上下文依赖关系。4.3基于深度学习方法随着深度学习技术的发展基于神经网络的词性标注方法逐渐成为主流。循环神经网络RNN、长短期记忆网络LSTM、门控循环单元GRU等模型被广泛应用于词性标注任务中。这些模型能够捕捉词语之间的长距离依赖关系更好地理解上下文语义。例如LSTM通过引入输入门、忘记门和输出门能够有效解决RNN的梯度消失问题在处理长文本时表现出更好的性能。此外预训练语言模型如BERT、GPT等也被应用于词性标注通过在大规模语料上进行预训练模型能够学习到丰富的语言知识进一步提升词性标注的准确性。五、 工具应用目前市面上有许多成熟的词性标注工具这些工具能够帮助开发者快速实现词性标注功能。5.1 Jieba中文词性标注Jieba是一款广泛应用的中文分词工具同时也具备词性标注功能。它综合了基于字符串匹配的字典查找算法和基于统计的HMM算法对于已登录词直接从字典中查找其词性对于未登录词则使用HMM模型进行预测。以下是使用Jieba进行词性标注的示例代码import jieba.posseg as pseg words pseg.cut(我爱北京天安门) for word, flag in words: print(f{word}/{flag})运行上述代码将输出我/r 爱/v 北京/ns 天安门/ns其中“r”代表代词“v”代表动词“ns”代表地名。5.2 NLTK英文词性标注NLTKNatural Language Toolkit是Python中常用的NLP库提供了丰富的文本处理功能包括词性标注。以下是使用NLTK进行英文词性标注的示例代码from nltk import word_tokenize, pos_tag text I love natural language processing. words word_tokenize(text) tagged_words pos_tag(words) print(tagged_words)运行结果为[(I, PRP), (love, VBP), (natural, JJ), (language, NN), (processing, NN), (., .)]这里“PRP”代表人称代词“VBP”代表动词“JJ”代表形容词“NN”代表名词。5.3 SpaCy多语言词性标注SpaCy是一款功能强大的NLP库支持多种语言的词性标注。它采用了深度学习模型能够提供准确的标注结果。以下是使用SpaCy进行英文词性标注的示例import spacy nlp spacy.load(en_core_web_sm) doc nlp(I love natural language processing.) for token in doc: print(f{token.text}/{token.pos_})输出结果为I/PRON love/VERB natural/ADJ language/NOUN processing/NOUN ./PUNCT这里 “PRON” 代表代词“VERB” 代表动词“ADJ” 代表形容词“NOUN” 代表名词“PUNCT” 代表标点符号。

相关新闻