文本预处理-中文分词
讲解中文分词技术,及常见中文分词库的使用示例
分词
Jieba
支持中文简体和繁体分词
精确模式分词
将句子的分词最准确的切开,适合文本分析
import jieba
content = '需要分割的字符串'
jieba.cut(content,cut_all = False) # 默认为False,返回一个生成器对象
jieba.lcut(content,cut_all = False) # 返回列表
全模式分词
将句子的分词按照所有的可能性切割
import jieba
content = '需要分割的字符串'
jieba.cut(content,cut_all = True) # 默认为False,返回一个生成器对象
jieba.lcut(content,cut_all = True) # 返回列表
搜索引擎模式分词
在精确分词的基础上,对长词在此切分,适用于搜索引擎分词
import jieba
content = '需要分割的字符串'
jieba.cut_for_search(content,cut_all = True) # 默认为False,返回一个生成器对象
jieba.lcut_for_search(content,cut_all = True) # 返回列表
用户自定义字典
设置用户自定义字典,提高准确率
词典格式(空格隔开)
词 词频(可省略) 词性(可省略)
import jieba
jieba.load_userdict('./userdict.txt') # 装载用户自定义字典
content = '需要分割的字符串'
jieba.cut_for_search(content,cut_all = True) # 默认为False,返回一个生成器对象
jieba.lcut_for_search(content,cut_all = True) # 返回列表
hanlp
中英文NLP工具包,基于tensorflow2.0
#使用pip安装
pip install hanlp
中文分词
import hanlp
#加载CTB_CONVSEG预训练模型进行分词
tokenizer = hanlp.load('CTB6_CONVSEG')
tokenizer('需要分割的句子')
英文分词
tokenizer = hanlp.utils.rules.tokenize_english
tokenizer('A sentence that need to tokenize!')
命名实体识别
命名实体识别(Named Entity Recognition,NER),识别一段文本中的实体;
hanlp
中文
import hanlp
recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_BERT_BASE_ZH)
recognizer(list('需要命名实体识别的具体'))
#
返回的是一个装有n个元祖的列表,每个元组代表一个命名实体
英文
import hanlp
recognizer = hanlp.load(hanlp.pretrained.ner.CONLL03_NER_BERT_BASE_UNCASED_EN)
# 注意输入是对句子进行分词后的结果,是列表的形式
recognizer(['this','is','a','sentence'])
# 返回结果是一个装有n个元祖的列表,每个元祖中的每一项代表一个命名实体
词性标注(POS)
词性标注(part-of-Speech tagging,简写POS)就是标注出一段文本中每个词汇的词性;
jieba
import jieba.posseg as pseg
pseg.lcut('我爱自然语言处理')
# 返回一个装有pair元祖的列表,每个pair元祖中分别是词汇,以及对应的词性
hanlp
# 中文
import hanlp
tagger = hanlp.load(hanlp.pretrained.pos.CTB5_POS_RNN_FASTTEXT_ZH)
# 输入分词的结果列表
tagger(list('我爱自然语言处理'))
# 结果以列表形式返回对应的词性
# 英文
import hanlp
tagger = hanlp.load(hanlo.pretrained.pos.PTB_POS_RNN_FASTTEXT_EN)
tagger(['i','love','natrual','language','processing'])
# 结果以列表形式返回对应的词性