中文NLP数据预处理程序分享

本文作者分享了自己编写的中文NLP数据预处理Python代码,涵盖去除无意义符号、非中文字符、分词、停用词过滤等功能。程序基于pyltp库,特别指出需要单独下载特定的语义角色标注模型。文章还提供了安装依赖和解决pyltp在不同平台安装问题的建议,并鼓励读者在评论区提出问题和改进建议。
摘要由CSDN通过智能技术生成

转眼间,接触NLP已经一年多了,虽然大部分时间是在打杂,但也多少积累了一点东西。今天在这里我就把我自己写的中文NLP数据预处理代码分享一下,代码基于python 3.6.5win 10通过测试,涵盖了我自己常用的一些操作。
程序大致包括的功能如下表:

文件操作 去噪操作 其他
读写文本 删除空行 分词
合并文件 删除中英文标点 词性标注
分割数据集 删除停用词 命名实体识别
- 删除乱码和特殊符号 依存句法分析
- 删除英文字符 语义角色标注

一般来说,中文NLP中数据预处理的步骤是:去除无意义符号、去除非中文、分词、去除停用词、向量化。除了向量化,其他步骤我的程序中都有写到,向量化一般使用TF-IDFWord2Vec比较多。
另外,上表中其他这一列的功能借助了工具pyltp。对于pyltp的模型,有一点需要注意,我使用的语义角色标注模型是pisrl_win.model,需要另外下载,而Linux平台下直接使用ltp_data_v3.4.0文件夹下的pisrl.model文件就可以了。这里是所有模型的下载链接
使用代码之前需要安装一些依赖:

pip install numpy
pip install pyltp
pip install zhon

如果windows平台下安装pyltp报错,可以使用这个链接下载python 3.6的版本,还有python 3.5版本。然后使用命令pip install xxx.whl安装对应的文件即可。
下面直接看程序preprocess.py,因为注释比较详细,我就不再解释了。

"""本文件包含中文NLP预处理常用的一些代码"""

import os
import re
import string
import numpy as np
from pyltp import *
from zhon.hanzi import punctuation


class Preprocess(object):
    """中文NLP预处理类"""

    # 用来处理数据的正则表达式
    DIGIT_RE = re.compile(r'\d+')
    LETTER_RE = re.compile(r'[a-zA-Z]+')
    SPECIAL_SYMBOL_RE = re.compile(r'[^\w\s\u4e00-\u9fa5]+')  # 用以删除一些特殊符号
    NAMED_ENTITY = re.compile(r'[SBIE]+')
    STOPS = ['。', '.', '?', '?', '!', '!']  # 中英文句末字符

    # 句子所限制的最小,最大长度
    SENTENCE_MIN_LEN = 5
    SENTENCE_MAX_LEN = 50

    def __init__(self, ltp_model_dir):
        self._cws_model_path = os.path.join(ltp_model_dir, 'cws.model')
        self._pos_model_path = os.path.join(ltp_model_dir, 'pos.model')
        self._ner_model_path = os.path.join(ltp_model_dir, 'ner.model')
        self._par_model_path = os.path.join(ltp_model_dir, 'parser.model')
        self._srl_model_path = os.path.join(ltp_model_dir, 'pisrl_win.model')

    @staticmethod
    def read_text_file(text_file):
        """读取文本文件,并返回由每行文本作为元素组成的list."""
        with open(text_file, 'r', encoding='utf-8') as file:
            lines = [line.strip() for line in file]
        return lines

    @staticmethod
    def write_text_file(text_list, target_file):
        """将文本列表写入目标文件

        Args:
            text_list: 列表,每个元素是一条文本
            target_file: 字符串,写入目标文件路径
        """
        
  • 12
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值