美文网首页工作生活
自然语言处理之文本预处理(一)

自然语言处理之文本预处理(一)

作者: fighting_7c21 | 来源:发表于2019-06-30 16:36 被阅读0次

    本文主要参考Coursera上国立高等经济大学的自然语言处理课程。

    文本是什么?

    在自然语言处理问题中,我们可以讲文本当成是下述成分组成的序列(sequence):

    - 字

    词语

    - 句子

    - 段落

    - 文章

    - ...

    本文主要以词语来举例。

    token

    什么是 token 呢?

    可以将 token 认为是语义处理过程中的一个有意义的单元

    token 可以是,,段落等等。

    tokenization

    自然语言处理的第一步通常是 tokenization,即将 输入的文本(sequence)转换为 token 的过程

    由于中文的表示与英文不同,英文中通常有空格来标识每一个单词,中文没有明确的标识,所以中文的分词比较复杂;

    通常使用而言,一些常用的分词库已经可以满足大部分需求。

    eg. 使用 jieba 将一段文本分词。

    import jieba

    seg_list = jieba.cut("我来到北京清华大学", cut_all=False)

    print("Default Mode: " + "/ ".join(seg_list))

    > 我/ 来到/ 北京/ 清华大学

    上述例子中的过程就是 tokenization 过程。

    tokenization normalization

    仅关注中文处理可以仅看概念

    英文预处理过程中的第二步叫做 tokenization normalization

    这个过程是指 将相同含义但是不同形式的词转换成同一个词(token)

    eg.

    - wolf, wolves -> wolf

    - talk, talks -> talk

    通常有两种方式来实现这个过程:

    - 词干提取(stemming)

    - 词性还原(lemmatization)

    因为我想主要集中在中文预处理,所以这两个过程就不叙述了,可以通过 nltk.stem.PorterStemmernltk.stem.WordNetLemmatizer 来实现这两种方式。

    标点符号

    在将文本转化为 token 的过程中,标点符号仅对阅读有用,而对语义理解没有太大作用。

    eg.

    我来到北京清华大学

    我来到,北京清华大学。

    上述两个句子的语义完全相同,而在 tokenization 过程中却得到两种不同的结果。所以在文本预处理过程中需要去除标点符号

    停用词

    和标点符号相似,在文本预处理过程中还需要去除之如“着”,“和”等一些对语义理解帮助不大的词,这些词就被称为停用词

    常用中文停用词下载地址见文章末尾。

    英文停用词可以直接用 nltk 提供的

    import nltk

    nltk.download('stopwords')

    from nltk.corpus import stopwords

    可以在停用词中加入标点符号,这样就可以统一两个过程。

    总结

    本文主要将了文本预处理中的几个概念:

    - 文本的组成

    - tokenization

    - 标点符号和停用词

    下一篇文章将继续讲解 文本向量化表示的方式(传统机器学习)

    - BoW

    - BoW + n-gram

    - tf-idf

    参考文献

    https://www.coursera.org/learn/language-processing/home/welcome

    https://github.com/fxsjy/jieba

    中文常用停止词下载地址

    相关文章

      网友评论

        本文标题:自然语言处理之文本预处理(一)

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