分词工具与方法:jieba、spaCy等

这篇具有很好参考价值的文章主要介绍了分词工具与方法:jieba、spaCy等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分词是自然语言处理中的一项重要任务,将一段文本划分成一系列有意义的词语或单词,是很多文本处理任务的基础,如文本分类、情感分析、机器翻译等。在中文分词中,jieba是一个常用的分词工具,而在英文分词中,spaCy是一个较为流行的选择。本文将介绍jieba和spaCy的使用方法和原理。

1. jieba分词

jieba是一个优秀的中文分词工具,其主要特点是支持三种分词模式:精确模式、全模式和搜索模式。同时,jieba还提供了用户自定义字典和并行分词等功能,适用于不同的中文文本处理任务。

1.1 安装

使用pip命令即可安装jieba:

pip install jieba

1.2 精确模式

精确模式是jieba默认的分词模式,它将文本按照最大概率分成词语。使用方法如下:

import jieba

text = "我们在学习自然语言处理。"
words = jieba.cut(text)
print(list(words))

输出结果为:

['我们', '在', '学习', '自然语言处理', '。']

1.3 全模式

全模式将文本中所有可能的词语都分出来,速度较快,但是会产生一些冗余的词语。使用方法如下:

import jieba

text = "我们在学习自然语言处理。"
words = jieba.cut(text, cut_all=True)
print(list(words))

输出结果为:

['我们', '在', '学习', '自然', '自然语言', '语言', '处理', '']

1.4 搜索模式

搜索模式将文本中所有可能的词语都扫描出来,有利于搜索引擎等应用。使用方法如下:

import jieba

text = "我们在学习自然语言处理。"
words = jieba.cut_for_search(text)
print(list(words))

输出结果为:

['我们', '在', '学习', '自然', '语言', '自然语言', '处理', '语言处理', '。']

2. 用户自定义字典

虽然分词工具都预先加载了大量的词库,但有时候我们可能需要加入一些特定的词汇,比如产品名、人名、地名、行业术语等。这时候,就需要使用用户自定义字典了。jieba和spaCy都支持用户自定义字典。

jieba的用户自定义字典是一个文本文件,每行一条记录,格式为:词汇 词频 词性(可选)。其中,词频和词性是可选的,如果不指定,jieba会自动计算词频并使用默认词性。下面是一个例子:

阿里巴巴 5 nr
华为 3 nz

以上例子表示将“阿里巴巴”和“华为”作为词汇加入到分词器的词库中,并指定它们的词频和词性。将自定义字典文件加载到jieba分词器中的代码如下:

import jieba

jieba.load_userdict('my_dict.txt')

spaCy的用户自定义字典是一个Python文件,其中定义了一个字典对象。字典的键是词汇,值是一个字典对象,其中包含了该词汇的属性信息。下面是一个例子:

my_dict = {
    "阿里巴巴": {"pos": "PROPN"},
    "华为": {"pos": "PROPN"}
}

以上例子表示将“阿里巴巴”和“华为”作为词汇加入到分词器的词库中,并指定它们的词性为专有名词。将自定义字典加载到spaCy分词器中的代码如下:

import spacy

nlp = spacy.load('en_core_web_sm')

from spacy.tokens import Doc

Doc.set_extension('my_dict', default={})

nlp.vocab['阿里巴巴'].is_stop = True
nlp.vocab['阿里巴巴'].my_dict = {'pos': 'PROPN'}
nlp.vocab['华为'].is_stop = True
nlp.vocab['华为'].my_dict = {'pos': 'PROPN'}

3. 分词效果评估

分词效果的好坏对于自然语言处理任务的成功与否有着至关重要的影响。因此,在使用分词工具时,我们需要对分词效果进行评估。

分词效果评估通常使用准确率(Precision)、召回率(Recall)和F1值(F1-Score)这三个指标来衡量。其中,准确率表示正确分词的数量与分词器分出的总词数之比;召回率表示正确分词的数量与参考标准中的总词数之比;F1值是准确率和召回率的调和平均数。

3.1 准确率(Accuracy)

准确率是最简单和最直观的评估指标。它表示分词器正确切分出的单词数占所有单词数的比例。

A c c u r a c y = C o r r e c t T o t a l Accuracy = \frac{Correct}{Total} Accuracy=TotalCorrect

其中, C o r r e c t Correct Correct 表示分词器正确切分出的单词数, T o t a l Total Total 表示总的单词数。

3.2 召回率(Recall)

召回率是指标示正确的单词数量占总单词数量的比例。它衡量的是模型发现的所有正确答案的数量。

R e c a l l = C o r r e c t R e f e r e n c e Recall = \frac{Correct}{Reference} Recall=ReferenceCorrect

其中, C o r r e c t Correct Correct 表示分词器正确切分出的单词数, R e f e r e n c e Reference Reference 表示正确答案的单词数。

3.3 精度(Precision)

精度是指正确的单词数量占分词器预测单词数量的比例。它衡量的是模型的预测是否准确。

P r e c i s i o n = C o r r e c t P r e d i c t e d Precision = \frac{Correct}{Predicted} Precision=PredictedCorrect

其中, C o r r e c t Correct Correct 表示分词器正确切分出的单词数, P r e d i c t e d Predicted Predicted 表示分词器预测出的单词数。

3.4 F1-Score

F1-Score 是精度和召回率的调和平均数,可以综合反映模型的预测能力和发现正确答案的能力。

F 1 − S c o r e = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1-Score = 2 \times \frac{Precision \times Recall}{Precision + Recall} F1Score=2×Precision+RecallPrecision×Recall

可以使用 Python 中的 sklearn 库来计算这些指标。下面是一个示例代码:

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 分词器预测结果
pred_tokens = ['这', '是', '一个', '句子', '。']
# 正确答案
true_tokens = ['这', '是', '一个', '句子', '。']

# 计算准确率
accuracy = accuracy_score(true_tokens, pred_tokens)
# 计算精度
precision = precision_score(true_tokens, pred_tokens, average='macro')
# 计算召回率
recall = recall_score(true_tokens, pred_tokens, average='macro')
# 计算 F1-Score
f1 = f1_score(true_tokens, pred_tokens, average='macro')

print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1-Score:', f1)

4. spaCy分词

spaCy是一种比jieba更为先进的自然语言处理工具,其分词效果更加准确且支持多种语言。同样地,spaCy也有其自带的词库,但是我们也可以添加自定义的词汇。

安装spaCy:

pip install spacy

安装中文模型:

pip install spacy-legacy-thinc
python -m spacy download zh_core_web_sm

加载中文模型:

import spacy

nlp = spacy.load("zh_core_web_sm")

使用spaCy分词:

doc = nlp("这是一个测试句子")

for token in doc:
    print(token.text)

输出结果:

这
是
一个
测试
句子

与jieba类似,spaCy也提供了分词效果的评估工具。我们可以通过比较文本的真实分词结果和工具的分词结果,计算得到各种指标,如精确率、召回率、F1值等。

from spacy.scorer import Scorer
from spacy.gold import GoldParse

text = "我喜欢自然语言处理"
doc = nlp(text)
gold = GoldParse(doc, words=["我", "喜欢", "自然语言处理"])

scorer = Scorer()
scorer.score(doc, gold)

print(scorer.scores)

输出结果:

{'uas': 0.0, 'las': 0.0, 'las_per_type': {'': {'p': 0.0, 'r': 0.0, 'f': 0.0}}, 'tags_acc': 0.0, 'token_acc': 0.0, 'textcat_score': 0.0}

其中,uaslas分别代表无标签和有标签的依存关系准确率(Unlabeled Attachment Score和Labeled Attachment Score),tags_acc代表词性标注准确率,token_acc代表分词准确率,textcat_score代表文本分类准确率。

spaCy除了分词外还有一些其他的功能,如词性标注、实体识别、依存关系分析等。在实际应用中,我们可以将其与其他机器学习模型结合起来,完成更复杂的自然语言处理任务。

参考文献:文章来源地址https://www.toymoban.com/news/detail-613910.html

  • spaCy官网
  • spaCy使用教程
  • 基于spaCy的中文分词器

到了这里,关于分词工具与方法:jieba、spaCy等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python——jieba优秀的中文分词库(基础知识+实例)

    Hello,World! 从去年开始学习Python,在长久的学习过程中,发现了许多有趣的知识,不断充实自己。今天我所写的内容也是极具趣味性,关于优秀的中文分词库——jieba库。          🐒什么是jieba? 1、jieba 是目前表现较为不错的 Python 中文分词组件,它主要有以下特性: 中

    2024年02月03日
    浏览(29)
  • spaCy库的实体链接踩坑,以及spaCy-entity-linker的knowledge_base下载问题

    1)问题 写了一个实体链接类,代码如下: 结果总是提示 ‘ entityLinker ’ 不能找到,明明是有这个模块的: 2)解决方法 后来发现,在从自己的电脑移动到服务器的时候,下载requirements.txt的时候,包 spacy-entity-linker 并没有被写入到requirements.txt依赖中。 因此,安装 spacy-enti

    2024年02月09日
    浏览(32)
  • 使用 spaCy 增强 NLP 管道

    spaCy 是一个用于自然语言处理 (NLP) 的 Python 库。SpaCy 的 NLP 管道是免费且开源的。开发人员使用它来创建信息提取和自然语言理解系统,例如 Cython。使用该工具进行生产,拥有简洁且用户友好的 API。 如果您处理大量文本,您会想了解更多相关信息。例如,它是关于什么的?

    2024年02月12日
    浏览(20)
  • spacy 中文语义分析下载安装使用

    spaCy  安装spacy 安装模型 https://github.com/explosion/spacy-models/releases 找到对应的模型,下载,如下图 下载是gz,下载后安装    参考 spaCy中文实体识别实战-《动物庄园》 - 知乎 https://www.cnblogs.com/rumenz/articles/13709437.html

    2024年02月09日
    浏览(20)
  • [自然语言处理] 自然语言处理库spaCy使用指北

    spaCy是一个基于Python编写的开源自然语言处理库。基于自然处理领域的最新研究,spaCy提供了一系列高效且易用的工具,用于文本预处理、文本解析、命名实体识别、词性标注、句法分析和文本分类等任务。 spaCy的官方仓库地址为:spaCy-github。本文主要参考其官方网站的文档,

    2024年02月15日
    浏览(79)
  • NLP基础—jieba分词

    支持四种分词模式 精确模式 试图将句子最精确地切开,适合文本分析; 全模式 把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式 在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 paddle模式 利用Paddl

    2024年04月17日
    浏览(32)
  • 安装spacy+zh_core_web_sm避坑指南

    目录 一、spacy简介 二、安装spacy 三、安装zh_core_web_sm 四、安装en_core_web_sm 五、效果测试 5.1 英文测试 5.2 中文测试 spacy是Python自然语言处理(NLP)软件包,可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化等。 使用“pip install

    2024年02月17日
    浏览(31)
  • python之jieba分词库使用

    一. 介绍 A. 什么是jieba库 jieba库是一款开源的中文分词工具,能够将中文文本切分成词语。 B. jieba库的特点和优势 支持四种分词模式:精确模式、全模式、搜索引擎模式和paddle模式。 提供自定义词典功能,可以添加、删除词语。 支持提取和词性标注。 提供Tokenize接口

    2024年02月16日
    浏览(25)
  • Python中文分词库——jieba的用法

    jieba是优秀的中文分词第三方库。由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词。而jieba是Python计算生态中非常优秀的中文分词第三方库,需要通过安装来使用它。 jieba库提供了三种分词模式,但实际上要达到

    2023年04月25日
    浏览(38)
  • 自然语言处理(NLP)-spacy简介以及安装指南(语言库zh_core_web_sm)

    spacy 简介 spacy 是 Python 自然语言处理软件包,可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化等。 使用 “pip install spacy\\\" 报错, 或者安装完 spacy,无法正常调用,可以通过以下链接将 whl 文件下载到本地,然后 cd 到文件路径下

    2024年01月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包