• NLP数据预处理


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

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

    程和简要代码,具体代码可以去https://github.com/Ericgoodboy/NLP查看,这个库持续更新,有兴趣的给个星星。话不多说开整。

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

    中文字符的范围,因为中文字符的unicode范围是一定的。可以尝试如下正则:

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

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

    import jieba
    jieba.cut(sentence)

       3.统计词频,因为我们不可能吧所有的词都用上。因为有些词的频率真的很小。对模型的影响很小,还会被当做噪声。所以我们只统计频率比较大的词代码也很简单

    如下:

    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中

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

  • 相关阅读:
    C#中有关string和byte[]转换的问题
    慎用HyperThreading Technology
    MSN不能登录 解决“0x81000370错误”
    Life Is a Gamble
    Application Wizard生成的项目文件简介
    在Word中如何进行半行输入
    几个有用的短语
    C#学习之接口
    C++中不容易记忆的访问属性问题
    进一步理解VC中的句柄
  • 原文地址:https://www.cnblogs.com/mayeye/p/10799322.html
Copyright © 2020-2023  润新知