文章目录

  • 一、认识文本预处理
    • 1 文本预处理及其作用
    • 2. 文本预处理中包含的主要环节
    • 3. 概览
  • 二、文本处理的基本方法
    • 1. 分词
      • 1.1 什么是分词
      • 1.2 分词的作用
      • 1.3 流行中文分词工具jieba
        • (1)jieba的特性:
        • (2)jieba的安装
        • (3)jieba的使用
      • 1.4 流行中英文分词工具hanlp:
        • (1)hanlp的安装:
        • (2)使用hanlp进行中文分词:
        • (3)使用hanlp进行英文分词:
    • 2. 命名实体识别
      • 2.1 什么是命名实体识别
      • 2.2 命名实体识别的作用
      • 2.3 使用hanlp进行中文命名实体识别
      • 2.4 使用hanlp进行英文命名实体识别:
    • 3. 词性标注
      • 3.1 什么是词性标注
      • 3.2 词性标注的作用
      • 3.3 使用jieba进行中文词性标注
      • 3.4 使用hanlp进行中文词性标注:
      • 3.5 使用hanlp进行英文词性标注:

一、认识文本预处理

1 文本预处理及其作用

文本语料在输送给模型前一般需要一系列的预处理工作, 才能符合模型输入的要求, 如: 将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效指导模型超参数的选择, 提升模型的评估指标.

2. 文本预处理中包含的主要环节

  • 文本处理的基本方法
  • 文本张量表示方法
  • 文本语料的数据分析
  • 文本特征处理
  • 数据增强方法

3. 概览

  • 文本处理的基本方法

    • 分词
    • 词性标注
    • 命名实体识别
  • 文本张量表示方法

    • one-hot编码
    • Word2vec
    • Word Embedding
  • 文本语料的数据分析

    • 标签数量分布
    • 句子长度分布
    • 词频统计与关键词词云
  • 文本特征处理

    • 添加n-gram特征
    • 文本长度规范
  • 数据增强方法

    • 回译数据增强法

重要说明
在实际生产应用中, 我们最常使用的两种语言是中文和英文, 因此, 文本预处理部分的内容都将针对这两种语言进行讲解.

二、文本处理的基本方法

1. 分词

1.1 什么是分词

分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符, 分词过程就是找到这样分界符的过程.

举个栗子:

工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作 ==> ['工信处', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']

1.2 分词的作用

词作为语言语义理解的最小单元, 是人类理解文本语言的基础. 因此也是AI解决NLP领域高阶任务, 如自动问答, 机器翻译, 文本生成的重要基础环节.

1.3 流行中文分词工具jieba

愿景: “结巴”中文分词, 做最好的 Python 中文分词组件.

(1)jieba的特性:

  • 支持多种分词模式
  • 精确模式
  • 全模式
  • 搜索引擎模式
  • 支持中文繁体分词
  • 支持用户自定义词典

(2)jieba的安装

pip install jieba

(3)jieba的使用

  • 精确模式分词:
    试图将句子最精确地切开,适合文本分析.
>>> import jieba
>>> content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
>>> jieba.cut(content, cut_all=False)  # cut_all默认为False# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使用jieba.lcut即可
>>> jieba.lcut(content, cut_all=False)
['工信处', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']
  • 全模式分词:
    把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能消除 歧义.
>>> import jieba
>>> content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
>>> jieba.cut(content, cut_all=True)  # cut_all默认为False# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使用jieba.lcut即可
>>> jieba.lcut(content, cut_all=True)
['工信处', '处女', '女干事', '干事', '每月', '月经', '经过', '下属', '科室', '都', '要', '亲口', '口交', '交代', '24', '口交', '交换', '交换机', '换机', '等', '技术', '技术性', '性器', '器件', '的', '安装', '安装工', '装工', '工作']
  • 搜索引擎模式分词:
    在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词.
>>> import jieba
>>> content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
>>> jieba.cut_for_search(content)# 将返回一个生成器对象
<generator object Tokenizer.cut at 0x7f065c19e318># 若需直接返回列表内容, 使用jieba.lcut_for_search即可
>>> jieba.lcut_for_search(content)
['工信处', '干事', '女干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24', '口', '交换', '换机', '交换机', '等', '技术', '技术性', '器件', '的', '安装', '工作']# 对'女干事', '交换机'等较长词汇都进行了再次分词.
  • 中文繁体分词:
    针对中国香港, 台湾地区的繁体文本进行分词.
>>> import jieba
>>> content = "煩惱即是菩提,我暫且不提"
>>> jieba.lcut(content)
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']
  • 使用用户自定义词典:

    • 添加自定义词典后, jieba能够准确识别词典中出现的词汇,提升整体的识别准确率.
    • 词典格式: 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒.

词典样式如下, 具体词性含义请参照附录: jieba词性对照表, 将该词典存为userdict.txt, 方便之后加载使用.

云计算 5 n
李小福 2 nr
easy_install 3 eng
好用 300
韩玉赏鉴 3 nz
八一双鹿 3 nz
>>> import jieba
>>> jieba.lcut("八一双鹿更名为八一南昌篮球队!")
# 没有使用用户自定义词典前的结果:
>>> ['八', '一双', '鹿', '更名', '为', '八一', '南昌', '篮球队', '!']>>> jieba.load_userdict("./userdict.txt")
# 使用了用户自定义词典后的结果:
['八一双鹿', '更名', '为', '八一', '南昌', '篮球队', '!']

1.4 流行中英文分词工具hanlp:

中英文NLP处理工具包, 基于tensorflow2.0, 使用在学术界和行业中推广最先进的深度学习技术.

(1)hanlp的安装:

# 使用pip进行安装
pip install hanlp

(2)使用hanlp进行中文分词:

>>> import hanlp
# 加载CTB_CONVSEG预训练模型进行分词任务
>>> tokenizer = hanlp.load('CTB6_CONVSEG')
>>> tokenizer("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作")
['工信处', '女', '干事', '每', '月', '经过', '下', '属', '科室', '都', '要', '亲口', '交代', '24口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']

(3)使用hanlp进行英文分词:

# 进行英文分词, 英文分词只需要使用规则即可
>>> tokenizer = hanlp.utils.rules.tokenize_english
>>> tokenizer('Mr. Hankcs bought hankcs.com for 1.5 thousand dollars.')
['Mr.', 'Hankcs', 'bought', 'hankcs.com', 'for', '1.5', 'thousand', 'dollars', '.']

2. 命名实体识别

2.1 什么是命名实体识别

  • 命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.
  • 顾名思义, 命名实体识别(Named Entity Recognition,简称NER)就是识别出一段文本中可能存在的命名实体.

举个栗子:

鲁迅, 浙江绍兴人, 五四新文化运动的重要参与者, 代表作朝花夕拾.==>鲁迅(人名) / 浙江绍兴(地名)/ 五四新文化运动(专有名词) / 重要参与者 / 代表作 / 朝花夕拾(专有名词)

2.2 命名实体识别的作用

同词汇一样, 命名实体也是人类理解文本的基础单元, 因此也是AI解决NLP领域高阶任务的重要基础环节.

2.3 使用hanlp进行中文命名实体识别

>>> import hanlp
# 加载中文命名实体识别的预训练模型MSRA_NER_BERT_BASE_ZH
>>> recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
# 这里注意它的输入是对句子进行字符分割的列表, 因此在句子前加入了list()
# >>> list('上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美 国纽约现代艺术博物馆参观。')
# ['上', '海', '华', '安', '工', '业', '(', '集', '团', ')', '公', '司', '董', '事', '长', '谭', '旭', '光', '和', '秘', '书', '张', '晚', '霞', '来', '到', '美', '国', '纽', '约', '现', '代', '艺', '术', '博', '物', '馆', '参', '观', '。']
>>> recognizer(list('上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美国纽约现代艺术博物馆参观。'))
[('上海华安工业(集团)公司', 'NT', 0, 12), ('谭旭光', 'NR', 15, 18), ('张晚霞', 'NR', 21, 24), ('美国', 'NS', 26, 28), ('纽约现代艺术博物馆', 'NS', 28, 37)]# 返回结果是一个装有n个元组的列表, 每个元组代表一个命名实体, 元组中的每一项分别代表具体的命名实体, 如: '上海华安工业(集团)公司'; 命名实体的类型, 如: 'NT'-机构名; 命名实体的开始索引和结束索引, 如: 0, 12.

2.4 使用hanlp进行英文命名实体识别:

>>> import hanlp
# 加载英文命名实体识别的预训练模型CONLL03_NER_BERT_BASE_UNCASED_EN
>>> recognizer = hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_UNCASED_EN))
# 这里注意它的输入是对句子进行分词后的结果, 是列表形式.
>>> recognizer(["President", "Obama", "is", "speaking", "at", "the", "White", "House"])
[('Obama', 'PER', 1, 2), ('White House', 'LOC', 6, 8)]
# 返回结果是一个装有n个元组的列表, 每个元组代表一个命名实体, 元组中的每一项分别代>表具体的命名实体, 如: 'Obama', 如: 'PER'-人名; 命名实体的开始索引和结束索引, 如: 1, 2.

3. 词性标注

3.1 什么是词性标注

  • 词性: 语言中对词的一种分类方法,以语法特征为主要依据、兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等.
  • 顾名思义, 词性标注(Part-Of-Speech tagging, 简称POS)就是标注出一段文本中每个词汇的词性.

举个栗子:

我爱自然语言处理==>/rr,/v, 自然语言/n, 处理/vnrr: 人称代词
v: 动词
n: 名词
vn: 动名词

3.2 词性标注的作用

词性标注以分词为基础, 是对文本语言的另一个角度的理解, 因此也常常成为AI解决NLP领域高阶任务的重要基础环节.

3.3 使用jieba进行中文词性标注

>>> import jieba.posseg as pseg
>>> pseg.lcut("我爱北京天安门")
[pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]# 结果返回一个装有pair元组的列表, 每个pair元组中分别是词汇及其对应的词性, 具体词性含义请参照[附录: jieba词性对照表]()

3.4 使用hanlp进行中文词性标注:

>>> import hanlp
# 加载中文命名实体识别的预训练模型CTB5_POS_RNN_FASTTEXT_ZH
>>> tagger = hanlp.load(hanlp.pretrained.pos.CTB5_POS_RNN_FASTTEXT_ZH)
# 输入是分词结果列表
>>> tagger(['我', '的', '希望', '是', '希望', '和平'])
# 结果返回对应的词性
['PN', 'DEG', 'NN', 'VC', 'VV', 'NN']

3.5 使用hanlp进行英文词性标注:

>>> import hanlp
# 加载英文命名实体识别的预训练模型PTB_POS_RNN_FASTTEXT_EN
>>> tagger = hanlp.load(hanlp.pretrained.pos.PTB_POS_RNN_FASTTEXT_EN)
# 输入是分词结果列表
>>> tagger(['I', 'banked', '2', 'dollars', 'in', 'a', 'bank', '.'])
['PRP', 'VBD', 'CD', 'NNS', 'IN', 'DT', 'NN', '.']

自然语言处理 文本预处理(上)(分词、词性标注、命名实体识别等)相关推荐

  1. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  2. Pytorch:jieba分词、hanlp分词、词性标注、命名实体识别、one-hot、Word2vec(CBOW、skipgram)、Word Embedding词嵌入、fasttext

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本预处理及其作用: 文本语料在输送给模型前一般需要一系列的预 ...

  3. 简单NLP分析套路(2)----分词,词频,命名实体识别与关键词抽取

    文章大纲 中文分词技术 评测参考 云服务 哈工大语言云 ltp 基于深度学习方法的中文分词 一个领域细分的中文分词工具包(北大最新开源) 信息检索与关键词提取 TF-IDF TEXTRANK word ...

  4. 自然语言处理(NLP)之命名实体识别

    本文将会简单介绍自然语言处理(NLP)中的命名实体识别(NER). 命名实体识别(Named Entity Recognition,简称NER)是信息提取.问答系统.句法分析.机器翻译等应用领域的重要 ...

  5. 面向新闻媒体的命名实体识别技术

    ☝点击上方蓝字,关注我们! [导读] 媒体资讯对新闻事件进行报导或评论,这些新闻事件的基本要素可以使用命名实体识别技术(NER)进行提取,如人物.机构.地点.时间.专有名词等.提取文章中的实体对于自媒 ...

  6. xmlstreamexception 参数实体未进行声明_命名实体识别研究进展概述

    Future丨Intelligence丨Nutrition丨Energy 让阅读成为习惯,让灵魂拥有温度 点击关注PKUFineLab  一起进步 命名实体识别研究进展概述 命名实体识别任务旨在从自然 ...

  7. 命名实体识别以及词性自动标注

    一.命名实体识别 大数据风靡的今天,不从里面挖出点有用的信息都不好意思见人,人工智能号称跨过奇点,统霸世界,从一句话里都识别不出一个命名实体?不会的,让我们大话自然语言处理的囊中取物,看看怎么样能让计 ...

  8. 基于深度学习的命名实体识别研究综述——论文研读

    基于深度学习的命名实体识别研究综述 摘要: 0引言 1基于深度学习的命名实体识别方法 1.1基于卷积神经网络的命名实体识别方法 1.2基于循环神经网络的命名实体识别方法 1.3基于Transforme ...

  9. 命名实体:中文命名实体识别简介

    一.概念 1.实体 一切具有特定属性集合的物体都可以称为实体. 2.命名实体 一般包括三大类(实体类.时间类.数字类),七小类(人名.机构名.地名.时间.日期.货币和百分比). 3.命名实体识别过程 ...

最新文章

  1. [转]如何提升你的沟通技巧
  2. 安徽工程大学C语言程序设计实验报告,安徽工业大学嵌入式实验报告.docx
  3. 拉取git的分支项目
  4. 关于cacti图形显示不正常的解决办法
  5. 微信公众平台开发(150)——从新浪云SAE上传图片到图文消息
  6. java开发工具eli_Java 学习线路图是怎样的?
  7. Mac系统访问Windows共享文件的详细步骤
  8. 点石成金:访客至上的网页设计秘笈pdf
  9. 学生网站模板——我的家乡-云南(9页) HTML+CSS+JavaScript 关于我的家乡的HTML网页设计-----云南
  10. 微步在线【威胁情报】
  11. nginx静态资源优化配置方法
  12. 超强实用:中国各地特产风味大搜捕!
  13. javascript 模拟退格键_js实现模拟计算器退格键删除文字效果的方法
  14. 逻辑思维题及答案解析
  15. 2023年湖北武汉中级工程师怎么申请?申报渠道有哪些?启程别
  16. 南大科院Java工程实训
  17. Java神奇代码奇葩代码
  18. jquery限制只能输入英文逗号和数字
  19. Java static与final详细讲解
  20. Laya微信小游戏开发问题汇总以及解决方案(一)

热门文章

  1. 通过栈(LIFO)实现FIFO
  2. 怎么样在3个月左右从0基础成为一个独立完成项目的工程师?
  3. 光标实现为员工涨工资
  4. 端子型号,PH,XH,ZH,EH,VH
  5. 外部存储之SDcard
  6. 感动中国感动谁(转)
  7. DIV+CSS浏览器兼容问题
  8. 使用命令的脚本来停止或启动IIS中的某个站点
  9. 【海森推荐】图灵奖得主:约书亚 本吉奥
  10. 会当凌绝顶 一览众山小