美文网首页人工智能/模式识别/机器学习精华专题
自然语言处理笔记-基础知识(中文分词)

自然语言处理笔记-基础知识(中文分词)

作者: godzilla_2019 | 来源:发表于2019-08-26 11:42 被阅读0次

jieba 中文分词

与英文等不同,中文的一句话中,词与词之间是没有空格分开的。而且自然语言处理是无法直接对整个句子进行分析的,所以要进行分词

jieba.cut() 接受三个参数

  • 需要分词的字符串
  • cut_all 是否采用全模式
  • HMM 是否使用 HMM 模型
import jieba
str_list = jieba.cut('我在学习自然语言处理')
print('/'.join(str_list))
# 全模式
str_list = jieba.cut('我在学习自然语言处理', cut_all = True)
print('/'.join(str_list))
我/在/学习/自然语言/处理
我/在/学习/自然/自然语言/语言/处理

jieba.cut_for_search() 该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。两个参数

  • 需要分词的字符串;
  • 是否使用 HMM 模型
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

str_list = jieba.lcut('我在学习自然语言处理')
print(str_list)
['我', '在', '学习', '自然语言', '处理']

添加自定义词典

有一些专有名词,公司名等,不希望被切分开。

# 如果数据过少,直接使用 jieba.add_word() 添加
str_list = jieba.lcut('李小福是创新办主任也是云计算方面的专家')
print('未添加之前:', str_list)

jieba.add_word('创新办', freq = None, tag = None)
jieba.add_word('云计算', freq = None, tag = None)

str_list = jieba.lcut('李小福是创新办主任也是云计算方面的专家')
print('添加之后:', str_list)

# 使用jieba.del_word()删除

# 如果词组过多可以使用jieba.load_userdict()加载用户自定义的词典
未添加之前: ['李小福', '是', '创新', '办', '主任', '也', '是', '云', '计算', '方面', '的', '专家']
添加之后: ['李小福', '是', '创新办', '主任', '也', '是', '云计算', '方面', '的', '专家']

用jieba.suggest_freq()可调节单个词语的司频,使其能(或不能)被分出来

str_list = jieba.cut('如果放到旧字典中将出错', HMM=False)
print('/'.join(str_list))
jieba.suggest_freq(('中', '将'), True)
str_list = jieba.cut('如果放到旧字典中将出错', HMM=False)
print('/'.join(str_list))
如果/放到/旧/字典/中将/出错
如果/放到/旧/字典/中/将/出错

关健词提取

基于TF-IDF 算法的关键词抽取

TF-IDF 简单点说 比如‘的’,‘地’,‘得’这些词在分析语意时毫无意义,每个段中会出现很多次,如果在整个文本中也会出现多次,那么就会降低这些词的权重

jieba.analyse.extract_tags()
  • sentence 要提取的文本
  • topK 返回多少个权重最大的关键词 (默认值为20)
  • withWeight 是否同时返回关键词的权重 (默认值为False)
  • allowPOS 是否仅包括指定词性的词,如动词,名词等 (默认值为空)
# 对西游记进行关健词提取
import jieba.analyse as analyse
lines = open(u'西游记.txt').read()
print(' '.join(analyse.extract_tags(lines, topK=20, withWeight=False, allowPOS=())))
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/lm/g1tl9_317k38bh6pdrrg_2nr0000gn/T/jieba.cache
Loading model cost 0.581 seconds.
Prefix dict has been built succesfully.


行者 八戒 师父 三藏 大圣 唐僧 沙僧 菩萨 妖精 和尚 那怪 甚么 那里 长老 呆子 怎么 徒弟 不知 老孙 悟空

插图

# 雷音寺
from PIL import Image
from IPython.display import Image as IMG

path = 'lys.png'
display(Image.open(path))
lys.png

基于TextRank 算法的关键词抽取

TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘

lines = open(u'西游记.txt').read()
print(' '.join(analyse.textrank(lines, topK=20, withWeight=False, allowPOS=('ns','n','vn','v'))))
行者 师父 八戒 三藏 大圣 菩萨 不知 只见 妖精 长老 国王 呆子 徒弟 却说 悟空 小妖 不见 不能 不得 出来

词性标注

  • 返回每个词的记性
import jieba.posseg as posseg
words = posseg.cut('我在学习自然语言处理')
for word , flag in words:
    print('%s %s' % (word, flag))
我 r
在 p
学习 v
自然语言 l
处理 v

相关文章

  • 中文分词工具及中文语料资源

    关键词: 中文分词;分词;自然语言处理;中文语料 最近要做中文自然语言处理相关任务,牵涉到使用中文分词工具和相关算...

  • 基于Trie 树实现简单的中文分词

    中文分词简介 中文分词是中文自然语言处理的基础,中文分词的正确率如何直接影响后续的词性标注(也有些词性标注算法不需...

  • 1. jieba中文处理

    jieba中文处理 1. 中文分词 jieba是一个在中文自然语言处理中用的最多的工具包之一,它以分词起家,目前已...

  • 自然语言处理笔记-基础知识(中文分词)

    jieba 中文分词 与英文等不同,中文的一句话中,词与词之间是没有空格分开的。而且自然语言处理是无法直接对整个句...

  • 中文分词方法

    中文分词是中文自然语言处理的基础,现代语言分析处理算法基本是以词为单位进行计算的。 1、词典匹配 词典匹配是分词最...

  • python 结巴分词学习

    结巴分词(自然语言处理之中文分词器) jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可...

  • 中文分词算法初探之最大匹配

    中文分词是中文自然语言处理中十分重要的基础性工作,基本后续的一切工作都依赖分词。本文主要探讨MMSEG这个分词系统...

  • NLP自然语言处理-第三章中文分词技术

    第三章中文分词技术 [toc] 本章将讲解中文自然语言处理的第一项核心技术:中文分词技术。在语言理解中,词是最小的...

  • 自然语言处理系列七》中文分词》规则分词

    *注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书 自然语言处理系列七 中文分词 中文分词(C...

  • Python中文分词工具:Jieba的基本使用

    今日分享:Jieba中文分词基础入门 近年来,随着NLP自然语言处理技术的日益成熟,开源实现的分词工具也越来越多,...

网友评论

    本文标题:自然语言处理笔记-基础知识(中文分词)

    本文链接:https://www.haomeiwen.com/subject/qerrectx.html