文本分词综述

  • 文本分词
    • 介绍
    • 应用场景
    • 常见算法
    • 常用的分词库
    • 代码demo
      • jieba分词:
        • 特点
        • 流程
        • demo
      • NLTK分词:
        • 特点
        • 流程
        • demo
      • spaCy分词:
        • 特点
        • 流程
        • demo
      • StanfordNLP分词:
        • 特点
        • 流程
        • demo
      • THULAC分词:
        • 特点
        • 流程
        • demo

文本分词

介绍

分词是自然语言处理中的一个关键任务,目的是将文本分解为语言单元(如单词、词组等),以便进一步处理。

  • 规则分词:是基于词典和语法规则的分词方法,通过在词典中查找词语,再通过语法规则对不在词典中的词语进行处理。规则分词算法具有语言知识丰富、实现简单等特点,但不能很好地处理一些未登录词(OOV)和新词。

  • 统计分词:是基于统计模型的分词方法,通过学习大量语料来建立分词模型,从而解决规则分词的一些不足。统计分词算法通常使用HMM、CRF等算法,能够更好地处理OOV和新词,但语料要求比较高,而且实现较为复杂。

  • 混合分词是规则分词和统计分词的结合,它既利用了语法规则,也参考了统计模型的结果。

    混合分词的流程一般如下:首先用规则分词得到初步的分词结果,然后再利用统计模型对规则分词的结果进行修正,得到最终的分词结果。

规则分词:首先我们有一个词典,里面有"小明"、"是"、"一名"、"工程师"等词语,然后通过语法规则(比如在词典中找不到的词语就认为是一个整体),对该文本进行分词,得到的结果是 ["小明", "是", "一名", "AI工程师"]。统计分词:通过学习大量语料,我们建立了一个统计模型,这个模型学会了对中文文本进行分词,当我们输入文本 "小明是一名AI工程师" 时,得到的结果是 ["小明", "是", "一名", "AI", "工程师"]。混合分词:先利用规则分词技术将文本分割["小明", "是", "一名", "AI工程师"],然后再利用统计分词技术将其中"AI工程师"分割成"AI",工程师"。

从上面的结果可以看出,规则分词和统计分词的区别在于统计分词更好地处理了OOV词语,将 “AI工程师” 分为了 “AI” 和 “工程师” 两个词语。

混合分词的优势在于利用了两种分词方法的优点,能够有效地处理复杂的分词问题,获得更好的分词效果。

应用场景

NLP分词的应用场景有:

  1. 文本挖掘:分词是文本挖掘的前提,分词结果可以作为进一步分析的基础。
  2. 语音识别:分词可以提高语音识别的准确率。
  3. 情感分析:分词可以方便对文本进行情感分析。
  4. 文本分类:分词可以方便对文本进行分类。
  5. 文本摘要:分词可以帮助生成文本摘要。
  6. 文本生成:分词结果可以作为文本生成模型的输入。

常见算法

常见的NLP分词算法有:

  1. 基于规则的分词:如正则表达式分词、字典分词等。
  2. 基于统计的分词:如HMM分词、CRF分词等。
  3. 基于深度学习的分词:如Bi-LSTM分词、Transformer分词等。
  4. 基于N-gram的分词:利用N-gram模型对文本进行分词。
  5. 其他:还有一些特殊的分词方法,如隐马尔科夫分词等。

常用的分词库

常用的NLP分词库有:

  1. jieba:中文分词库,支持基于规则和统计的分词。
  2. NLTK:自然语言处理工具包,包含分词功能。
  3. StanfordNLP:由斯坦福大学开发的自然语言处理工具包,包含分词功能。
  4. spaCy:自然语言处理工具包,包含分词功能。
  5. THULAC:中文分词库,支持基于统计的分词。

代码demo

jieba分词:

特点

jieba分词器是一种中文分词工具,用于将中文文本分割为单独的词语。它采用了基于字典和统计模型的混合方法,可以实现准确和高效的中文分词。

jieba分词器具有以下特点:

  • 准确性高:基于字典和统计模型,可以识别出多种词语,包括人名、地名、机构名等。
  • 可定制:可以通过扩展字典,调整分词策略等方式进行定制,以适应不同的应用场景。
  • 性能优秀:采用C++编写,具有较高的运行效率。
  • 易于使用:提供了Python、C++等多种语言的接口,易于集成到各种应用程序中。

总的来说,jieba分词器是一款功能强大,性能优秀的中文分词工具,广泛应用于信息检索、自然语言处理等领域。

流程

jieba分词器的实现流程大致如下:

  1. 加载字典:加载词典文件,词典中包含了大量的常用词语。
  2. 分词:将输入的文本分割为单独的词语。
  3. 初始化:初始化分词结果数组。
  4. 分词算法:jieba分词器采用了基于字典和统计模型的混合方法,首先使用字典识别词语,如果不能识别,则使用统计模型进行识别。
  5. 分词策略:jieba分词器支持多种分词策略,例如全模式、索引模式、搜索引擎模式等。用户可以根据需求选择适合的分词策略。
  6. 返回结果:将分词结果返回给用户。

总的来说,jieba分词器的实现流程简单易懂,具有很好的灵活性和扩展性。

demo

import jieba
text = "我是一名NLP工程师"
words = jieba.cut(text)
print(" ".join(words))

NLTK分词:

特点

NLTK(Natural Language Toolkit)是一个用于自然语言处理的开源 Python 库。它提供了诸多的 NLP 工具,其中包括分词功能。

NLTK 的分词器是基于规则分词和统计分词的混合模型实现的,并可以支持多种语言。它通过使用词典、词干提取、词性标注等手段,来实现对文本的分词。

NLTK 分词器的使用方法很简单,只需要调用相应的 API,并传入需要分词的文本即可。此外,NLTK 还提供了额外的配置选项,例如语言选择、分词模式选择等,以满足不同的分词需求。

流程

NLTK 分词的实现流程如下:

  1. 加载语料库:加载大量的文本数据,以便于训练统计分词模型。
  2. 预处理:对文本数据进行预处理,包括词干提取、词性标注等。
  3. 训练统计模型:使用预处理后的文本数据,训练统计分词模型,以便于后续分词。
  4. 分词:调用分词 API,将文本分词。
  5. 后处理:对分词结果进行后处理,如词性标注、去除停用词等。

请注意,NLTK 分词是一个非常复杂的过程,它涉及到大量的 NLP 技术和算法,例如规则分词、统计分词、词典、词干提取、词性标注等。

demo

import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenize
text = "我是一名NLP工程师"
words = word_tokenize(text)
print(words)

spaCy分词:

特点

spaCy是一种自然语言处理库,它的特点包括:

  1. 快速的文本分析速度,能够在线性时间内处理大量文本。
  2. 完整的语法分析,包括命名实体识别、词性标注、句法分析等功能。
  3. 自定义词性标注和命名实体识别。
  4. 简单易用的API接口。
  5. 支持多种语言,包括英语、德语、法语、西班牙语等。
  6. 提供丰富的文本向量化方法。

流程

spaCy的实现流程包括:

  1. 读取文本数据
  2. 文本预处理,包括词干提取、词性标注、语法分析
  3. 命名实体识别
  4. 文本分句、语义解析
  5. 依存句法分析
  6. 关系抽取和事件抽取等NLP任务的实现。

demo

import spacy
nlp = spacy.load("zh_core_web_sm")
text = "我是一名NLP工程师"
doc = nlp(text)
words = [token.text for token in doc]
print(words)

StanfordNLP分词:

特点

StanfordNLP是一种自然语言处理工具包,它的特点如下:

  1. 支持多种语言:包括英语、法语、德语、俄语等。
  2. 多种NLP任务:包括词法分析、语法分析、命名实体识别、依存句法分析等。
  3. 精确性高:通过大量训练数据和深度学习技术,StanfordNLP可以提供高精确性的结果。
  4. 可扩展性强:可以方便地与其他NLP工具包或模型进行集成,以满足多样化的需求。

流程

StanfordNLP的实现流程大致包括以下几步:

  1. 分词:将文本分成单独的词语。
  2. 词性标注:为每个词语标记它的词性,例如名词、动词、形容词等。
  3. 命名实体识别:识别文本中的命名实体,例如人名、地名、机构名等。
  4. 依存句法分析:识别词语在句子中的语法关系,例如主语、宾语、核心词等。
  5. 语义解析:识别词语的语义,以了解整个句子的语义。

demo

from stanfordnlp.server import CoreNLPClient
text = "我是一名NLP工程师"
with CoreNLPClient(annotators=["tokenize"], timeout=30000, memory='4G') as client:ann = client.annotate(text)
words = [token.word for sent in ann.sentence for token in sent.token]
print(words)

THULAC分词:

特点

THULAC分词的特点包括:

  1. 兼顾分词准确性和速度,是中文分词的高效工具。
  2. 采用了动态规划算法,对于未登录词的识别能力强。
  3. 具有多种词性标注的功能,为文本挖掘、信息提取等应用提供了更多信息。

流程

THULAC是一种基于统计和机器学习的中文分词工具。实现流程如下:

  1. 数据预处理:预处理语料库,构建词典。
  2. 训练:使用语料库训练模型。
  3. 分词:对输入文本进行分词,输出分词结果。
  4. 评估:使用测试集评估模型性能。

demo

import thulac
thulac = thulac.thulac(seg_only=True)
text = "我是一名NLP工程师"
words = thulac.cut(text, text=True)
print(words)

NLP之文本分词综述相关推荐

  1. 【NLP】文本分类综述 (上)

    NewBeeNLP公众号原创出品 公众号专栏作者 @lucy 北航博士在读 · 文本挖掘/事件抽取方向 本系列文章总结自然语言处理(NLP)中最基础最常用的「文本分类」任务,主要包括以下几大部分: 综 ...

  2. NLP实现文本分词+在线词云实现工具

    实现文本分词+在线词云实现工具 词云是NLP中比较简单而且效果较好的一种表达方式,说到可视化,R语言当仍不让,可见R语言︱文本挖掘--词云wordcloud2包 当然用代码写词云还是比较费劲的,网上也 ...

  3. 【NLP】深度文本匹配综述

    目  录 1.研究背景与意义  2.深度学习在自然语言处理的应用  3.深度文本匹配与传统文本匹配  4.深度文本匹配国内外研究现状  4.1基于单语义表达的文本匹配 4.2基于多语义表达的文本匹配 ...

  4. 初学文本摘要——综述报告

    ** 本报告是本人在自学自然语言处理文本摘要方向初期研读综述性论文.博客.网站等后总结的综述报告. ** 主要内容: 1)文本摘要简介(是什么?) 2)文本摘要现状(怎么样?) 3)文本摘要分类(有哪 ...

  5. 自然语言处理——文本分类综述

    最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM.贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写 ...

  6. Task01——零基础入门NLP - 新闻文本分类之赛题理解

    本篇目标 首先本篇文章会对赛题进行介绍以及个人对赛题的理解,带大家接触NLP的预处理.模型构建和模型训练等知识点. 赛题介绍 赛题名称:零基础入门NLP - 新闻文本分类 赛题任务:赛题以自然语言处理 ...

  7. nlp算法文本向量化_NLP中的标记化算法概述

    nlp算法文本向量化 This article is an overview of tokenization algorithms, ranging from word level, characte ...

  8. 计算机基础知识 综述题,计算机应用的基础知识:文本表示综述及其改进

    文本表示综述及其改进 主要内容: 现阶段文本表示的主要技术 已有的工作对我们的启发 已有的改进工作的介绍 我们的改进(可行性?) 计算机如何解决文本分类问题? 一个中文文本表现为一个由汉字和标点符号组 ...

  9. NLP基本功-文本相似度 | AI产品经理需要了解的AI技术通识

    转自:https://zhuanlan.zhihu.com/p/33567268 前言:本文作者Insight ,是我们"AI产品经理大本营"成员,下面是他分享的第3篇文章,欢迎更 ...

最新文章

  1. ACE之Reactor模式使用实例
  2. HALCON示例程序forest.hdev识别森林中的树
  3. Effulgent的《深入理解Direct3D9》整理版(转)
  4. C语言2020年作业,2020年c语言上机报告范文【四篇】
  5. 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
  6. Webstorm相关设置
  7. 1.2 Zend_Acl (2)
  8. 关于移动端video-player点击播放自动全屏
  9. VMware Workstation Pro下载密钥
  10. 《Redis视频教程》(p8)
  11. 典型医疗场景数据安全风险态势感知方案
  12. 5款好用的项目管理软件推荐
  13. Magento(CE1.X)自带模块解析七
  14. 10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 scre
  15. 剩余运算符和展开运算符
  16. 数据库、表的创建与修改
  17. cleintHeight、offsetHeight、scrollHeight、cleintTop、offsetTop、scrollTop、getClientRects、getBoundingClien
  18. 前端开发学习笔记(二)JavaScript DOM编程技术(一、二)
  19. 网易实况足球获取服务器信息,网易实况足球:游戏疑难杂症解惑,快速通过“老司机”的考核...
  20. 解决:flash cs5运行时出现“java运行时环境初始化时出现错误,你可能需要重装Flash”

热门文章

  1. 低秩矩阵(Low-Rank)的意义
  2. 关闭hp服务器风扇检测能进系统吗,cpu风扇如何关闭检测
  3. IT十年人生过客-终篇-十年总结
  4. 使用阿里云接口进行手机号(三网)实名认证
  5. VS207修改主题背景为自己喜欢的图片
  6. 鸡叫与天亮:大数据中的关联与因果
  7. Python实现桌面悬浮窗(显示网速,内存,CPU)
  8. MATLAB强化学习工具箱(十二)强化学习智能体创建总览
  9. html的过渡属性,CSS3 transition 过渡属性
  10. Java 根据字符串格式日期 转化出当前属于哪一年的第几周