自然语言处理-学习笔记①
1.概要
2.文本预处理作用及其主要环节
- 作用:
文本语料在输送给模型前一般需要一系列的预处理工作,才能符合模型输入的要求,例如:将文本转化为模型所需要的张量,规范张量的尺寸,而且科学的文本预处理环节将会有效的知道模型超参数的选择,提升模型的评估指标. - 环节:
- 文本处理的基本方法
- 文本张量的表示方法
- 文本语料的数据分析
- 文本特征处理
- 数据增强方法
2.1文本处理的基本方法:
2.1.1分词
- jieba的使用
- 精确模式分词
- 适合将句子最为精确的切开,适合文本分析
import jieba
content = "工信部女干事每月经过下属科室都要亲口交待24口交换机等技术性器件的安装工作"
#将返回一个生成器对象
jieba.cut(content,cut_all=False)
<generator object Tokenizer.cut at 0x000001DE14573660>
#直接返回列表内容,使用jieba.lcut即可
jieba.lcut(content,cut_all=False)
[‘工信部’,
‘女干事’,
‘每月’,
‘经过’,
‘下属’,
‘科室’,
‘都’,
‘要’,
‘亲口’,
‘交待’,
‘24’,
‘口’,
‘交换机’,
‘等’,
‘技术性’,
‘器件’,
‘的’,
‘安装’,
‘工作’]
- 全模式分词
- 把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能消除歧义
jieba.lcut(content,cut_all=True)#cut_all默认为False
[‘工’,
‘信’,
‘部’,
‘女干事’,
‘干事’,
‘每月’,
‘月经’,
‘经过’,
‘下属’,
‘科室’,
‘都’,
‘要’,
‘亲口’,
‘口交’,
‘交待’,
‘24’,
‘口交’,
‘交换’,
‘交换机’,
‘换机’,
‘等’,
‘技术’,
‘技术性’,
‘性器’,
‘器件’,
‘的’,
‘安装’,
‘安装工’,
‘装工’,
‘工作’]
- 搜索引擎模式分词
- 在精确模式的基础上,对长词再次切分,提高召回率,适用于搜索引擎分词
jieba.lcut_for_search(content)
[‘工信部’,
‘干事’,
‘女干事’,
‘每月’,
‘经过’,
‘下属’,
‘科室’,
‘都’,
‘要’,
‘亲口’,
‘交待’,
‘24’,
‘口’,
‘交换’,
‘换机’,
‘交换机’,
‘等’,
‘技术’,
‘技术性’,
‘器件’,
‘的’,
‘安装’,
‘工作’]
#对"女干事","交换机"等长词汇都进行了再次分词
- 中文繁体分词
- 针对中国香港.'台湾地区的繁体文本进行分词
import jieba
content2="煩惱即是菩提,我暫且不提"
jieba.lcut(content)
[‘工信部’,
‘干事’,
‘女干事’,
‘每月’,
‘经过’,
‘下属’,
‘科室’,
‘都’,
‘要’,
‘亲口’,
‘交待’,
‘24’,
‘口’,
‘交换’,
‘换机’,
‘交换机’,
‘等’,
‘技术’,
‘技术性’,
‘器件’,
‘的’,
‘安装’,
‘工作’]
- 使用用户自定义词典
- 添加自定义词典后,jieba能准确识别出词典中出现的词汇,提升整体的准确率.
- 词典格式:每一行分三部分:词语.词频(可省略).词性(可省略).用空格隔开.顺序不可颠倒
- 词典样式如下,具体词性含义请参照附录.jieba词性对照表,将该词典存为userdict.txt,方便之后加载使用.
'''
云计算 5 n
easy_install 3 eng
好用 300
韩玉赏鉴 3 nz
八一双鹿 3 nz
'''
jieba.lcut('八一双鹿更名为八一南昌篮球队!')
#没有使用用户自定义词典的结果:
[‘八’, ‘一双’, ‘鹿’, ‘更名’, ‘为’, ‘八一’, ‘南昌’, ‘篮球队’, ‘!’]
jieba.load_userdict(r'D:\NLP\user_dict.txt')
[‘八一双鹿’, ‘更名’, ‘为’, ‘八一’, ‘南昌’, ‘篮球队’, ‘!’]
- 流行中英文分词工具hanlp
- 中英文NLP处理工具包,基于tensorflow2.0,使用在学术界和行业中推广最先进的深度学习技术
- 使用hanlp进行中文分词:
import hanlp
HanLP=hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_SMALL_ZH) # 世界最大中文语料库
doc = HanLP(['2021年HanLPv2.1为生产环境带来次世代最先进的多语种NLP技术。', '阿婆主来到北京立方庭参观自然语义科技公司。'])
-
Native API的输入单位为句子,需使用多语种分句模型或基于规则的分句函数先行分句。特别地,Python HanLPClient也支持当作函数调用,在语义上完全一致。简洁的接口也支持灵活的参数,常用的技巧有:
- 灵活的tasks任务调度,任务越少,速度越快。如HanLP(‘商品和服务’, tasks=‘tok’)指定仅执行分词;大多数任务依赖分词,tasks='dep’会执行分词和依存句法分析;而tasks=[‘pos’, ‘dep’], skip_tasks='tok*'表示跳过分词仅执行词性标注和依存句法分析,此时需传入单词列表;skip_tasks='tok/fine’表示使用粗分标准分词并执行后续任务。在内存有限的场景下,用户还可以删除不需要的任务达到模型瘦身的效果。
- 高效的trie树自定义词典,以及强制、合并、校正3种规则,请参考demo和文档。规则系统的效果将无缝应用到后续统计模型,从而快速适应新领域
-
输出结果是一个可以json化的dict,键为NLP任务名,值为分析结果。通过.pretty_print,可以在等宽字体环境中得到可视化,你需要取消换行才能对齐可视化结果(我们准备发布HTML环境的可视化)。