自然语言处理(二):文本预处理之文本处理的基本方法

自然语言处理笔记总目录


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

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

文本处理的基本方法

  • 分词
  • 词性标注
  • 命名实体识别

文本张量表示方法

  • one-hot编码
  • Word2vec
  • Word Embedding

文本语料的数据分析

  • 标签数量分布
  • 句子长度分布
  • 词频统计与关键词词云

文本特征处理

  • 添加n-gram特征
  • 文本长度规范

数据增强方法

  • 回译数据增强法

一、jieba

1.多种分词模式

1.1 精确模式

import jieba
content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
jieba.lcut(content, cut_all=False)

结果:

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

注:用lcut而不用cut是因为cut返回的是一个迭代器,如果想要读取可以使用for循环加推导式读取到列表当中

1.2 全模式分词

cut_all改为True即可(cut_all默认为False)

jieba.lcut(content, cut_all=True)

1.3 搜索引擎模式

在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

jieba.lcut_for_search(content)

结果:

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

2.中文繁体分词

content = "煩惱即是菩提,我暫且不提"
jieba.lcut(content) # cut_all默认为False,即为精确模式
['煩惱', '即', '是', '菩提', ',', '我', '暫且', '不', '提']

3.用户自定义词典

jieba.lcut("八一双鹿更名为八一南昌篮球队")
# ['八', '一双', '鹿', '更名', '为', '八一', '南昌', '篮球队']

本目录下创建一个txt文件
在这里插入图片描述

jieba.load_userdict("./userdict.txt")
jieba.lcut("八一双鹿更名为八一南昌篮球队")
# ['八一双鹿', '更名', '为', '八一', '南昌', '篮球队']

二、hanlp

import hanlp

# 中文分词
content = "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作"
tokenizer = hanlp.load('CTB6_CONVSEG')  # 加载预训练模型
a = tokenizer(content)
print(a)

# 英文分词
# tokenizer = hanlp.utils.rules.tokenize_english
from hanlp.utils.lang.en.english_tokenizer import tokenize_english
tokenizer = tokenize_english

b = tokenizer('Mr. Hankcs bought hankcs.com for 1.5 thousand dollars.')
print(b)
['工信处', '女', '干事', '每', '月', '经过', '下', '属', '科室', '都', '要', '亲口', '交代', '24口', '交换机', '等', '技术性', '器件', '的', '安装', '工作']
['Mr.', 'Hankcs', 'bought', ' hankcs.com ', 'for', '1.5', 'thousand', 'dollars', '.']

三、命名实体识别(NER)

中文:

import hanlp

recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
recognizer(list('上海华安工业(集团)公司董事长谭旭光和秘书张晚霞来到美国纽约现代艺术博物馆参观。'))
# [('上海华安工业(集团)公司', 'NT', 0, 12), ('谭旭光', 'NR', 15, 18), ('张晚霞', 'NR', 21, 24), ('美国', 'NS', 26, 28), ('纽约现代艺术博物馆', 'NS', 28, 37)]

英文:

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)]

四、词性标注(POS)

使用jieba中文标注:

import jieba.posseg as pseg
pseg.lcut("我爱北京天安门")
# [pair('我', 'r'), pair('爱', 'v'), pair('北京', 'ns'), pair('天安门', 'ns')]

使用hanlp中文标注:

import hanlp
tagger = hanlp.load(hanlp.pretrained.pos.CTB5_POS_RNN_FASTTEXT_ZH)
tagger(['我', '的', '希望', '是', '希望', '和平'])
# ['PN', 'DEG', 'NN', 'VC', 'VV', 'NN']

使用hanlp英文标注:

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', '.']

你可能感兴趣的:(自然语言处理,自然语言处理,人工智能,深度学习,nlp,神经网络)