中文分词

这里写目录标题

  • 中文分词
    • 基于词典的分词方法
      • 最大匹配算法:(正向/逆向)
      • 预处理优化
    • 基于统计的分词方法
    • 基于语义、理解的分词方法
    • 分词工具
      • jieba算法:
      • thula分词工具包
    • 练习

基于词典的分词方法

机械分词方法字符串匹配的分词方法

按照一定的策略将待分词的汉字串与一个充分大的机器词典中的词条进行匹配。
三个要素:1.分词词典 2.文本扫描顺序 3.匹配原则

按照扫描句子的顺序,可以分为正向扫描、逆向扫描和双向扫描

匹配的原则主要有最大匹配、最小匹配、逐词匹配和最佳匹配

最大匹配算法:(正向/逆向)

  1. 设词典中的最长词的长度为n;
  2. 从待分句子中取出长度为n的字符串,与词典进行匹配;
  3. 如果匹配成功,作为一个词;
  4. 如果匹配不成功,将该从句子中去掉一个汉字再次匹配,重复进行直至完成匹配。

正向最大匹配算法每次去除最后一个字,错误率0.6%。逆向最大匹配算法每次去除第一个字,错误率0.4%。

预处理优化

  1. 对句子:设立切分标志

    1. 自然切分标志:非字符号(标点符号)
    2. 非自然切分标志:利用词缀和不构成词的词(们,啊)
  2. 对词典:将词典按照词频大小排列。

缺点:歧义;未登录词;

基于统计的分词方法

词是字的稳定组合,相邻的字同时出现的频率越大,越有可能构成一个词。

算法实现:计算文本中相邻的字的组合频度,计算互现信息,高于某一个阈值则认为可能构成了一个词。

主要应用模型:ngram模型HMM模型最大熵模型

互信息:两个离散随机变量X、Y的相互依赖(关联、影响)程度。

实际应用中一般将基于统计的方法与基于词典的方法相结合。

基于语义、理解的分词方法

评测一个分词系统的效果的主要指标:精度(查准率)、召回率(查全率)、F值

N:标准分割的单词数、e:分词器错误标注的单词数、c:分词器正确标注的单词数

精度(查准率),表明分词器分词的准确程度。R = C/N

召回率(查全率),表明分词器切分正确的词有多么全。P = c/(c + e)

F值,综合反应整体的指标。F = 2PR/(P + R)

错误率,表明分词器的错误程度。ER = e/N

R、P、F越大越好,ER越小越好。一个完美的分词器的P、R、F的值均为1,ER值为0。

分词工具

jieba算法:

基本原理:对于需要划分的词,如果在词典中,则直接读取、划分;如果不在词典中,用Viterbi算法进行分词。

jieba的三种分词模式:精确模式:对语句进行最精确的划分;全模式:扫描出句子中所有可以成词的词语;搜索引擎模式

jieba.cut()函数是中文语句分词的主要函数。调用方式:

import jieba
jieba.cut(sentence, cut_all=False, HMM=True)
# sentence:需要分词处理的字符串
# cut_all:分词模式。True全模式,False精准模式。
# HMM:是否使用HMM模型

例:

import jieba
s=jieba.cut(sentence) # 字符串
list(s)

thula分词工具包

thulac分词工具包中的thulac()函数,生成模型:

thulac(user_dict=None, model_path=None, T2S=False, seg_only=False, filt=False)# 初始化程序,进行自定义设置
# user_dict:设置用户词典。

thulac模型的调用方式:

  1. cut()进行一句话分词
cut(sentence, text=False)
  1. cut_f()对文件进行分词
cut_f(Text, text=False)# text表示是否返回文本,默认Falsecut_f(input_text, output_text)# 输入文件 输出文件

例:

import thulac
thu1 = thulac.thulac() # 默认模式
text = thu1.cut("我爱北京天安门", text=True) #进行一句话分词
# 结果:我_r 爱_v 北京_ns 天安门_ns
print(text)

练习

切分以下句子:

import thulac
thu1 = thulac.thulac() #默认模式 # 结果:他_r 用_v 了_u 两_m 个_q 半天_m 写_v 完_v 了_u 这_r 篇_q 文章_n 。_w
text1 = thu1.cut("他用了两个半天写完了这篇文章。", text=True)
print(text1)# 结果:我等_r 她_r 等_v 了_u 半天_m 。_w
text2 = thu1.cut("我等她等了半天。", text=True)
print(text2)
import jieba# 结果:['人们', '朝向', '不同', '的', '出口', '。']
s1 = jieba.cut("人们朝向不同的出口。", cut_all=False, HMM=True)
print(list(s1))# 结果:['我们', '出发', '的', '时间', '不同', '。']
s2 = jieba.cut("我们出发的时间不同。", cut_all=False, HMM=True)
print(list(s2))

python的中文分词相关推荐

  1. Python实现中文分词--正向最大匹配和逆向最大匹配

    编译原理实验二:Python实现中文分词–正向最大匹配和逆向最大匹配 最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数 ...

  2. 使用Python做中文分词和绘制词云

    使用Python做中文分词和绘制词云 李小璐出轨云词图 作为一门编程语言,Python的编写简单,支持库强大,应用场景多,越来越多的人开始将它作为自己的编程入门语言. Python一个比较重要的场景是 ...

  3. 用Python做中文分词和绘制词云图

    用Python做中文分词和绘制词云图 Python窗体布局 def __init__(self):self.root=Tk()self.root.wm_title('绘制词云')self.root.r ...

  4. Python pytagcloud 中文分词 生成标签云 系列(一)

    转载地址:https://zhuanlan.zhihu.com/p/20432734 工具 Python 2.7 (前几天试了试 Scrapy 所以用的 py2 .血泪的教训告诉我们能用 py3 千万 ...

  5. python用中文怎么说-如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  6. python 英语分词_如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  7. Python做中文分词

    中文分词 所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等). 由于英文词与词自带空格作为分隔符,相比于中文分词要简单的多.我们在做中文分词时,需要把 ...

  8. python tokenizer_中文分词工具 MiNLP-Tokenizer

    MiNLP-Tokenizer 1. 工具介绍 MiNLP-Tokenizer是小米AI实验室NLP团队自研的中文分词工具,基于深度学习序列标注模型实现,在公开测试集上取得了SOTA效果.其具备以下特 ...

  9. (Python实现中文分词最大匹配算法)研究生命的起源

    正向进行中文分词匹配: # -*- coding: utf-8 -*- # 待分词语句 str_1='研究生命的起源' # 最大长度 M=3 # 词典列表 list_1=['研究','研究生','生命 ...

最新文章

  1. 矩阵拼接 cat padding_pytorch
  2. 【flutter】把Google官方的历史时间demo跑起来
  3. 一个比较明显的OOM的排查过程
  4. 插入排序之Java实现
  5. 数智工厂是如何炼成的?从最佳实践案例找答案
  6. 31. 如何计算对象已死(引用计数器算法、可达性分析算法)32.对象是否可 GC?33. Minor GC 和 Full GC
  7. 漫画:IT人的大阅兵,十分精彩!
  8. php memcached windows,php memcached windows安装
  9. java对redis的基本操作
  10. 浅谈基于Linux的Redis环境搭建
  11. 万字长文剖析Redis分布式锁到底安不安全
  12. 一对矩阵的相关性_矩阵分析学习笔记(1)
  13. python数据类型-列表
  14. bp神经网络预测模型python,bp神经网络预测模型
  15. [和秋叶一起学ppt]四步教你变身高富帅ppt(笔记)
  16. 无线路由器分流时用迅雷下载限速时不能每位用户支持良好的信息交换
  17. 关于平面束方程的理解
  18. solidity 合约地址转钱包、钱包地址转合约
  19. 深度学习为什么会出现validation accuracy大于train accuracy的现象?
  20. 为什么我选择移民新西兰?

热门文章

  1. Ansys Zemax / SPEOS | 光源文件转换器
  2. three.js学习笔记(六)——创建简单鬼屋
  3. 上海迪士尼度假区将迎来五周年庆典;百胜中国新增两个共享服务分中心;深圳首个“药厂上楼”园区将开工 | 美通企业周刊...
  4. 电脑里的记事本文件永久删除怎么办
  5. 中兴电信光纤猫F612管理员密码获取方法
  6. java中的键值对_java中单个键值对的表示方式
  7. C#实现一个控制台飞行棋小游戏(附源码)
  8. C#基础-飞行棋小游戏
  9. 【离散数学】计算机考研复试问答题总结
  10. 【解决方案】电力巡检进入智能化时代,无人机+EasyDSS开启智能巡检新模式