NLP数据预处理

  0.当前最火热的项目之一就是机器学习了,而机器学习中有一座大山,就是NLP(天然语言处理)天然语言处理处理的是非结构化的数据,并且是字符串git

,咱们知道计算机擅长处理的是数字,最好是0 1,十六进制什么的,实在不行10进制也凑合用,因此,要进行NLP第一关就是数据预处理。在此我只讲解过github

程和简要代码,具体代码能够去https://github.com/Ericgoodboy/NLP查看,这个库持续更新,有兴趣的给个星星。话很少说开整。网络

  1.处理标点符号,这个标点其实很搞的,有一个库叫zhon里面有中文的符号,但中文符号太多了,那个库好像处理不太干净,能够尝试用正则的方式断定机器学习

中文字符的范围,由于中文字符的unicode范围是必定的。能够尝试以下正则:学习

deleteChar = re.compile(u"[^a-zA-Z0-9\u4e00-\u9fa5]")

  2.分词。英文直接用空格符等分词就好了,但中文比较复杂,在中文分词上,结巴分词作的仍是挺好的,用了隐马尔可夫,很方便。用起来也很简单。代码以下:spa

import jieba
jieba.cut(sentence)

   3.统计词频,由于咱们不可能吧全部的词都用上。由于有些词的频率真的很小。对模型的影响很小,还会被当作噪声。因此咱们只统计频率比较大的词代码也很简单code

以下:blog

resDic = {}
    for line in data:
        for word in line:
            if word in resDic:
                resDic[word]+=1
            else:
                resDic[word]=1

  4.给每个单词一个id,并将原来的句子替换成id的表现形式,方法很简单,就不贴代码了直接去github里面有详细代码,在文件/src/preprocess/dataprocess.py中unicode

 

  -1.作完以上4步,预处理算是完成了,但这种数据仍是不能放到神经网络中训练,还要选择相应的模型,如one-hot,或者word2vec之类的,将每个词转化为id才算能够用的数据字符串

相关文章
相关标签/搜索