词性标注--头歌

13 篇文章 1 订阅
任务描述

本关任务:根据本关所学有关词性标注的知识,完成基于 jieba 模块进行词性标注的程序编写并通过所有测试用例。

相关知识

为了完成本关任务,你需要掌握:

  1. 词性标注的含义;

  2. 使用 Jieba 进行词性标注的方法。

词性标注简介

在自然语言分析中,机器需要模拟理解语言。为了实现这一点,自然语言处理过程中必须在一定程度上能够了解自然语言的规则。首先需要理解的是词,特别是每一个词的性质,判断它是一个名词还是一个形容词?如果它是一个动词的屈折形式,那么它的不定形式是什么,以及该屈折形式使用了什么对应的时态、人称和数?这个任务被称为词性标注。

词性标注的目标是用一个单独的标签标记每一个词,该标签表示了用法和其句法作用,比如名词、动词、形容词等。词性标注的正确与否将会直接影响到后续的句法分析、语义分析,它是中文信息处理的基础性课题之一。

常用的词性标注模型有 N 元模型、隐马尔可夫模型、最大熵模型、基于决策树的模型等。其中,隐马尔可夫模型是应用较广泛且效果较好的模型之一。

词性标注规范

词性标注需要有一定的标注规范,如将词分为名词、形容词、动词,然后用 n 、 adj 、 v 等来进行表示。中文领域中尚无统一的标注标准,较为主流的主要为北大的词性标注集和宾州词性标注集两大类。两类标注方式各有千秋,一般我们任选一种。如图下表所示,即为目前常用的词性标注规范表。

标记词性说明
ag形语素形容词性语素。形容词代码为 a ,语素代码 g 前面置以 a
a形容词取英语形容词 adjective 的第1个字母
ad副形词直接作状语的形容词。形容词代码 a 和副词代码 d 并在一起
b区别词取汉字“别”的声母
z状态词取汉字“状”的前一个字母
v动词取英语动词 verb 的第一个字母
Jieba 分词中的词性标注

类似 Jieba 分词的分词流程, Jieba 的词性标注同样是结合规则和统计的方式,具体为在词性标注的过程中词典匹配和 HMM 共同作用。

词性标注流程如下:

  1. 首先基于正则表达式进行汉字判断;

  2. 若符合汉字正则表达式,则基于前缀词典构建有向无环图,再基于有向无环图计算最大概率路径,同时在前缀词典中找出它所分出的词性,若在词典中未找到,则赋予词性为 x (代表未知)。当然,若在这个过程中,设置使用 HMM ,且待标注词为未登录词,则会通过 HMM 方式进行词性标注;

  3. 若不符合上面的正则表达式,那么将继续通过正则表达式进行类型判断,分别赋予 x 、 m (数词)和 eng (英文)。

示例:

 
  1. import jieba.posseg as pseg
  2. words = pseg.cut("我爱北京天安门") # 进行分词
  3. for word, flag in words:
  4. print('%s %s' % (word, flag))

对应输出为:

 
  1. 我 r
  2. 爱 v
  3. 北京 ns
  4. 天安门 ns
编程要求

在右侧编辑器中的 Begin-End 之间补充 Python 代码,实现使用 jieba 进行词性标注,完成对所输入文本的词性标注并输出标注结果,其中文本内容通过 input 从后台获取。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

测试输入:还有什么是比jieba更好的中文分词工具呢?

预期输出:

 
  1. Building prefix dict from the default dictionary ...
  2. Loading model from cache /tmp/jieba.cache
  3. Loading model cost 0.612 seconds.
  4. Prefix dict has been built successfully. # 接口附加信息
  5. 还有/v 什么/r 是/v 比/p jieba/eng 更好/d 的/uj 中文/nz 分词/n 工具/n 呢/y ?/x

import jieba.posseg as psg
text=input()
#任务:使用jieba模块的函数对text完成词性标注并将结果存储到result变量中
# ********** Begin *********#

result = ''
words = psg.cut(text) # 进行分词
for word,flag in words:
    result += word + '/' + flag + ' '



# ********** End **********#
print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值