当前位置: 首页 > news >正文

NLP - 数据预处理 - 文本按句子进行切分

NLP - 数据预处理 - 文本按句子进行切分

文章目录

  • NLP - 数据预处理 - 文本按句子进行切分
  • 一、前言
    • 二、环境配置
      • 1、安装nltk库
      • 2、下载punkt分句器
    • 三、运行程序
    • 四、额外补充

一、前言

  在学习对数据训练的预处理的时候遇到了一个问题,就是如何将文本按句子切分,使用传统的jieba切割的颗粒度在词的程度,不能满足训练word2vec模型的需要。(py,手动实现自然也是可以,不过感觉斯,有py社区辣么发达相比有人实现了伐,就没有重复造轮子)

  要对文本按句子进行切分,可以使用Python的nltk库,它提供了一个名为sent_tokenize的函数,用于将文本切分为句子。以下是如何实现这个功能的示例:

二、环境配置

1、安装nltk库

pip install nltk

2、下载punkt分句器

如果使用的是nltk的第一次,需要下载punkt资源
下载地址:https://www.nltk.org/nltk_data/
手动下载所需punkt包(运行程序也能下载,不过由于一些网络原因比较难直接下载下来)
在这里插入图片描述
将下载的文件解压放到这个文件夹:C:\Users\Admin\AppData\Roaming\nltk_data\tokenizers
在这里插入图片描述
注:如果找不到路径:nltk_data\tokenizers,则手动创建

三、运行程序

使用sent_tokenize函数对文本进行按句切分:

import nltk
from nltk.tokenize import sent_tokenize# 如果使用的是nltk的第一次,需要下载punkt资源
nltk.download('punkt')# 示例文本
text = "This is an example sentence. Here is another one! And what about this one? Let's try it out."# 将文本切分为句子
sentences = sent_tokenize(text)# 输出切分后的句子
for i, sentence in enumerate(sentences):print(f"Sentence {i+1}: {sentence}")

在这个示例中,我们首先从nltk.tokenize模块中导入sent_tokenize函数。然后,我们定义了一个包含多个句子的文本。接下来,我们使用sent_tokenize函数将文本切分为句子,最后输出切分后的句子。

运行参考结果:
在这里插入图片描述

sent_tokenize函数使用预训练的Punkt分句器,它能够处理多种语言,并能很好地处理复杂的句子切分。在使用sent_tokenize时,您还可以通过提供一个可选参数language来指定文本的语言,以便更好地适应不同语言的句子切分规则。例如:

sentences = sent_tokenize(text, language='english')

四、额外补充

注:punkt 该库不支持中文,中文分句子比较的是另外一个库:pkuseg
这个库配好环境后下面的就可以直接使用了

import pkuseg# 示例中文文本
text = "这是一个示例句子。这是另一个!这个怎么样?让我们试试看。"# 配置pkuseg
seg = pkuseg.pkuseg()# 将文本切分为句子
sentences = seg.cut(text)# 输出切分后的句子
for i, sentence in enumerate(sentences):print(f"句子 {i + 1}: {sentence}")
http://www.lryc.cn/news/186748.html

相关文章:

  • 【轻松玩转MacOS】常用软件篇
  • Akshare简记
  • Jmeter常用断言之断言持续时间简介
  • C/C++/VS2022/指针/数组 调试出现debug
  • 【设计模式】使用原型模式完成业务中“各种O”的转换
  • [C++ 网络协议] IOCP(Input Output Completion Port)
  • R实现地图相关图形绘制
  • 【Jmeter】性能测试脚本开发——性能测试环境准备、Jmeter脚本编写和执行
  • 看好你家电视盒的后门!数千个Android电视盒感染了与欺诈相关的危险恶意软件
  • LeetCode 1251. 平均售价
  • TypeScript 笔记:String 字符串
  • 蓝牙技术|Matter或能改变中国智能家居市场,蓝牙技术将得到进一步应用
  • VB.NET vs. VB6.0:现代化编程语言 VS 经典老旧语言
  • ViewPager、RecycleView实现轮播图
  • 【FreeRTOS】【STM32】01从零开始的freertos之旅 浏览源码下的文件夹
  • 【PPT】ppt里面使用svg图标
  • uni-app:实现页面效果4(echarts数据可视化)
  • vue实现echarts中 9种 折线图图例
  • redis实战-实现用户签到UV统计
  • 作为创始人的价值观与心法,构建系统
  • Go语言基础面经
  • 服务器文件备份
  • 剑指offer——JZ68 二叉搜索树的最近公共祖先 解题思路与具体代码【C++】
  • [Spring] @Bean 修饰方法时如何注入参数
  • docker拉取镜像错误 missing signature key
  • 基于可解释性特征矩阵与稀疏采样全局特征组合的人体行为识别
  • OpenCV4(C++)—— 仿射变换、透射变换和极坐标变换
  • http.header.Set()与Add()区别;
  • vue-7-vuex
  • SSO单点登录和OAuth2.0区别