NLP 预处理总结

作者: dreampai | 来源:发表于2021-07-09 17:10 被阅读0次

在处理 NLP 相关任务的时候(文本分类、聚类,智能客服等),首要任务是对文本数据进行预处理。结合自己的实践经验,总结了 N 条预处理的方法。

去掉一些无用的符号

文本中可能会出现连续的符号(比如感叹号!!!或一些奇怪的单词等。)我们将文本按照符号进行分割然后再组装。

def tokenizer(ori_list):
   SYMBOLS = re.compile('[\s;\"\",.!?\\/\[\]]+')
   new_list = []
   for q in ori_list:
       words=SYMBOLS.split(q.lower().strip())
       new_list.append(' '.join(words))
   return new_list

停用词过滤

网上有很多开源的停用词集合,也可以根据自己业务建立领域停用词表。(或者直接使用NLTK自带的)

def removeStopWord(ori_list):
   new_list = []
   #nltk中stopwords包含what等,但是在QA问题中,这算关键词,所以不看作stop words
   restored = ['what','when','which','how','who','where']
   english_stop_words = list(set(stopwords.words('english')))
   for w in restored:
       english_stop_words.remove(w)
   for q in ori_list:
       sentence = ' '.join([w for w in q.strip().split(' ') if w not in english_stop_words])
       new_list.append(sentence)
   return new_list

去掉出现频率很低的词

我们去除低频词,可以基于词典设置一个阈值,比如出现次数少于10,20....

def removeLowFrequence(ori_list,vocabulary,thres = 10):
    #根据thres筛选词表,小于thres的词去掉
    new_list = []
    for q in ori_list:
        sentence = ' '.join([w for w in q.strip().split(' ') if w in vocabulary and vocabulary[w] >= thres])
        new_list.append(sentence)
    return new_list

对于数字的处理

分词完只有有些单词可能就是数字比如44,415,把所有这些数字都看成是一个单词,这个新的单词我们可以定义为 "#number"

def replaceDigits(ori_list,replace = '#number'):
    #将数字统一替换replace,默认#number
    DIGITS = re.compile('\d+')
    new_list = []
    for q in ori_list:
        q = DIGITS.sub(replace,q)
        new_list.append(q)
    return new_list

关于我

dreampai(公众号,简书,知乎同名),专注于 NLP和金融。

相关文章

  • NLP 预处理总结

    在处理 NLP 相关任务的时候(文本分类、聚类,智能客服等),首要任务是对文本数据进行预处理。结合自己的实践经验,...

  • 自然语言处理N天-AllenNLP学习(How-to 01)

    有一篇帖子总结了学习处理NLP问题中间的坑。NLP数据预处理要比CV的麻烦很多。 去除停用词,建立词典,加载各种预...

  • 自然语言处理N天-AllenNLP学习(Laziness in

    有一篇帖子总结了一下学习处理NLP问题中间的坑。NLP数据预处理要比CV的麻烦很多。 去除停用词,建立词典,加载各...

  • NLP预处理

    英语: 1.去杂乱: 1.1 转化为小写字母 1.2 数字转化为words 或者移除数字 1.3 移除标点符号其他...

  • Note - Pytorch + AllenNLP

    AllenNLP是基于pytorch 的NLP研究库,提供一些训练好的模型,对NLP过程中的数据预处理(读写数据集...

  • NLP in TensorFlow:数据预处理

    Explore the BBC news archive。主要知识点为tokenizer和pad_sequence...

  • NLP 文本预处理utils

    1、中文标点 2、strip() 的正则表达式版本 示例:去除字符串首尾的中文标点 参考文献 https://bl...

  • NLP中的预处理

    最近在做nlp相关的项目,对新手而言真的是从零开始造轮子...刚开始mentor了个相关性分析的任务,我开始了激情...

  • 预处理数预处理数据的方法总结(使用sklearn-preproc

    预处理数预处理数据的方法总结(使用sklearn-preprocessing) https://blog.csdn...

  • 分类学习器的构建

    目录 变量选择 变量筛选 模型选择 变量预处理 模型设计和训练 模型优化 模型检验 1、特征选择 在NLP模型、机...

网友评论

    本文标题:NLP 预处理总结

    本文链接:https://www.haomeiwen.com/subject/efwfpltx.html