『NLP自然语言处理』中文文本的分词、去标点符号、去停用词、词性标注

利用Python代码实现中文文本的自然语言处理,包括分词、去标点符号、去停用词、词性标注&过滤。

在刚开始的每个模块,介绍它的实现。最后会将整个文本处理过程封装成 TextProcess 类。

结巴分词

jieba 是比较好的中文分词库,在此之前,需要 pip install jieba

结巴分词有三种模式:

  • 全模式 :把句子中所有的可以成词的词语都扫描出来
jieba.cut(text, cut_all=True)
  • 精确模式 :将句子最精确地切开,适合文本分析
jieba.cut(text, cut_all=False)  # 默认模式
  • 搜索引擎模式 :在精确模式的基础上,对长词再次切分,适合用于搜索引擎分词
jieba.cut_for_search(txt)

三种分词效果如下图所示:在这里插入图片描述
想要进一步了解 jieba 三种模式,请参考 详细介绍 。因为我要做的是文本分析,所以选用的是默认的精确模式。

对于一些词,比如“吃鸡”,jieba 往往会将它们分成 “吃” 和 “鸡” ,但是又不太想让它们分开,这该怎么做呢?这时候就需要加载自定义的词典 dict.txt。建立该文档,在其中加入“吃鸡”,执行以下代码:

file_userDict = 'dict.txt'  # 自定义的词典
jieba.load_userdict(file_userDict)

效果对比图:
在这里插入图片描述
在这里插入图片描述

词性标注

在用 posseg 分词后,结果是一对值,包括 wordflag ,可以用 for 循环获取。关于汉语词性对照表,请看 词性标注表

import jieba.posseg as pseg
sentence = "酒店就在海边,去鼓浪屿很方便。"
words_pair = pseg.cut(sentence)
result = " ".join(["{0}/{1}".format(word, flag) for word, flag in words_pair])
print(result)

在这里插入图片描述
在此基础上,可以进一步做词性过滤,只保留特定词性的词。首先在 tag_filter 表明想要留下哪些词,接着对于词性标注后的句子中的每一个词,如果词性符合,则加入到 list 中。在这里只保留了名词和动词。

import jieba.posseg as pseg
list = []
sentence = "人们宁愿去关心一个蹩脚电影演员的吃喝拉撒和鸡毛蒜皮,而不愿了解一个普通人波涛汹涌的内心世界"
tag_filter = ['n', 'v']  # 需要保留的词性
seg_result = pseg.cut(sentence)  # 结果是一个pair,有flag和word两种值
list.append([" ".join(s.word for s in seg_result if
  • 34
    点赞
  • 210
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值