NLP--jieba(1)

1.基本分词函数与用法

jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)

jieba.cut 方法接受三个输入参数:

  • 需要分词的字符串
  • cut_all 参数用来控制是否采用全模式
  • HMM 参数用来控制是否使用 HMM 模型

jieba.cut_for_search 方法接受两个参数

  • 需要分词的字符串
  • 是否使用 HMM 模型。
    该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
import jieba

seg_list=jieba.cut("我在学习自然语言处理",cut_all=True)
print(seg_list)
print("Full Mode:"+"/".join(seg_list)) #全模式
seg_list1=jieba.cut('我在学习自然语言处理',cut_all=False)
print("Default Mode:"+"/".join(seg_list1)) #精确模式
seg_list2 = jieba.cut("他毕业于上海交通大学,在百度深度学习研究院进行研究")  # 默认是精确模式
print(", ".join(seg_list2))
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在哈佛大学深造")  # 搜索引擎模式
print(", ".join(seg_list))

Full Mode:// 学习/ 自然/ 自然语言/ 语言/ 处理
Default Mode:// 学习/ 自然语言/ 处理
他, 毕业,, 上海交通大学,,, 百度, 深度, 学习, 研究院, 进行, 研究
小明, 硕士, 毕业,, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所,,,, 哈佛, 大学, 哈佛大学, 深造

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

result_lcut = jieba.lcut("小明硕士毕业于中国科学院计算所,后在哈佛大学深造")
print(result_lcut)
print(" ".join(result_lcut))
print( " ".join(jieba.lcut_for_search("小明硕士毕业于中国科学院计算所,后在哈佛大学深造")))

[u'\u5c0f\u660e', u'\u7855\u58eb', u'\u6bd5\u4e1a', u'\u4e8e', u'\u4e2d\u56fd\u79d1\u5b66\u9662', u'\u8ba1\u7b97\u6240', u'\uff0c', u'\u540e', u'\u5728', u'\u54c8\u4f5b\u5927\u5b66', u'\u6df1\u9020']
小明 硕士 毕业 于 中国科学院 计算所 , 后 在 哈佛大学 深造
小明 硕士 毕业 于 中国 科学 学院 科学院 中国科学院 计算 计算所 , 后 在 哈佛 大学 哈佛大学 深造

添加用户自定义词典

很多时候我们需要针对自己的场景进行分词,会有一些领域内的专有词汇。

  • 可以用jieba.load_userdict(file_name)加载用户字典

  • 少量的词汇可以自己用下面方法手动添加:

    • 用 add_word(word, freq=None, tag=None) 和 del_word(word) 在程序中动态修改词典
    • 用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来
print('/'.join(jieba.cut('如果放到旧字典中将出错。', HMM=False)))
如果/放到//字典/中将/出错/。
jieba.suggest_freq(('中', '将'), True)
494
print('/'.join(jieba.cut('如果放到旧字典中将出错。', HMM=False)))
如果/放到//字典///出错/

猜你喜欢

转载自blog.csdn.net/lgy54321/article/details/90669712