>>> from env_helper import info; info()
页面更新时间: 2024-05-09 15:22:44
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-20-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
1.3.3. jieba词性标注¶
jieba.posseg.POSTokenizer(tokenizer=None)新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer分词器。jieba.posseg.dt为默认词性标注分词器。标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
除了jieba默认分词模式,提供paddle模式下的词性标注功能。paddle模式采用延迟加载方式,通过
enable_paddle()安装paddlepaddle-tiny,并且import相关代码;
paddle模式词性标注对应表如下:
paddle模式词性和专名类别标签集合如下表,其中词性标签 24
个(小写字母),专名类别标签 4 个(大写字母)。
标签 |
含义 |
|---|---|
n |
普通名词 |
f |
方位名词 |
s |
处所名词 |
t |
时间 |
nr |
人名 |
ns |
地名 |
nt |
机构名 |
nw |
作品名 |
nz |
其他专名 |
v |
普通动词 |
vd |
动副词 |
vn |
名动词 |
a |
形容词 |
ad |
副形词 |
an |
名形词 |
d |
副词 |
m |
数量词 |
q |
量词 |
r |
代词 |
p |
介词 |
c |
连词 |
u |
助词 |
xc |
其他虚词 |
w |
标点符号 |
PER |
人名 |
>>> import jieba.posseg as jp
>>> print(jp.lcut('转载<请>附上原文出处链接及本声明.'))
[pair('转载', 'v'), pair('<', 'x'), pair('请', 'v'), pair('>', 'x'), pair('附上', 'f'), pair('原文', 'n'), pair('出处', 'v'), pair('链接', 'n'), pair('及', 'c'), pair('本', 'r'), pair('声明', 'n'), pair('.', 'x')]
>>> from jieba import enable_paddle, posseg
>>> # import paddle
>>> # paddle.enable_static()
>>>
>>> s='我今天来到l北京的清华大学。'
>>>
>>> print('精确模式:')
>>> print(posseg.lcut(s))
精确模式:
[pair('我', 'r'), pair('今天', 't'), pair('来到', 'v'), pair('l', 'x'), pair('北京', 'ns'), pair('的', 'uj'), pair('清华大学', 'nt'), pair('。', 'x')]
>>> print('paddle模式:')
>>> print(posseg.lcut(s, use_paddle=True))
paddle模式:
[pair('我', 'r'), pair('今天', 't'), pair('来到', 'v'), pair('l', 'x'), pair('北京', 'ns'), pair('的', 'uj'), pair('清华大学', 'nt'), pair('。', 'x')]
>>> s = '''
>>> 其一,中国的城市,包括直辖市、副省级市、普通地级市、县级市,但不包括县。
>>> 正如《中国城市大趋势》一书所分析的,县与县级市虽然级别相同,但定位有巨大差别。县是以农业为基础的管理单元,县级市则以工商业为主。
>>> 对于县,地级市进行直管;对于县级市,地级市则只是代管。
>>> 名义之别,导致了县级市与其所在地级市,均被视为独立城市,从而单薄市级层面的人口规模,如昆山与苏州,晋江与泉州,义乌与金华。
>>> 其二,衡量城市规模,看的是城区人口,而非全市人口。
>>> 城区人口,顾名思义,不包括镇区及乡村人口,明显低于全市常住人口。城区人口占全市人口比例最高可达9成以上,最低甚至不到20%。
>>> 凡是城镇化率不高的地区,或者下辖县乡过多的城市,即使全市人口迈过了千万大关,也未必能晋级为超大特大城市。
>>> 02
>>> 7个超大城市:4大一线+成渝津
>>> 超大城市,是我国城市规模层级的金字塔尖城市。
>>> 目前,我国共有7个超大城市,除了北上广深四大一线城市,还有重庆、天津两大直辖市,以及成都。
>>> '''
>>> results = posseg.lcut(s)
对于结果中的每一项,其有属性 flag 与 word 。
通过这种方式可以过滤出与地点相关的要素。
>>> for obj in results:
>>> if obj.flag == 'ns':
>>> print(obj.word)
中国
城市
中国
城市
城市
昆山
苏州
晋江
泉州
城市
镇区
城市
大关
特大城市
城市
城市
城市
城市
城市
城市
重庆
天津
成都
>>> s = '''
>>> ①长度为海拉尔河源至乌苏里江口,国内流域面积为903418平方千米。
>>> ②国内流域面积为56690平方千米。
>>> ③包括浑河、太子河。
>>> ④国内流域面积为32466平方千米。
>>> ⑤国内流域面积为22561平方千米。
>>> 图中数字代表的流域
>>> 1、黑龙江流域
>>> 2、绥芬河流域
>>> 3、图们江流域
>>> 4、鸭绿江流域
>>> 5、辽东半岛诸河流域
>>> 6、辽河流域
>>> 7、辽西诸河流域
>>> 8、滦河流域
>>> 9、海河流域'''
>>>
>>> results = posseg.lcut(s, use_paddle=True)
>>> for obj in results:
>>> if obj.flag == 'ns':
>>> print(obj.word)
长度
海拉尔河
乌苏里江
浑河
黑龙江
绥芬河
图们江
鸭绿江
辽东半岛
辽河流域
辽西
滦河
海河
尽管jieba分词可以自动提取文本中相关的信息,但是由于自然语言的复杂性与非严谨性,得到的结果并非完全可信, 需要根据场景对结果进行分析与处理。