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

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 0 引言   jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性: 支持 3 种分词模...
    Gaius_Yao阅读 117,585评论 3 82
  • 在接下来的分词练习中将使用到四川大学公共管理学院的一篇新闻进行练习,文本如下: 为贯彻落实党的十九大精神,不断提升...
    nicokani阅读 1,231评论 0 4
  • 参考:Python 中文分词组件 jiabaPython中文分词 jieba 十五分钟入门与进阶jieba完整文档...
    领悟悟悟阅读 4,298评论 1 1
  • 注:参考文档 一、在线词云图工具# (1)、使用### 在正式使用jieba分词之前,首先尝试用在线分词工具来将自...
    DearIreneLi阅读 6,040评论 1 8
  • 运行项目遇到以下问题: 解决方案: 1.在清单文件增加代码: 2.在清单文件清单再加一句代码: 好了,重新运行解决...
    柴江朋阅读 3,911评论 4 2