美文网首页
PaddlePaddle中文文本分类实践

PaddlePaddle中文文本分类实践

作者: sweetsky0901 | 来源:发表于2018-01-15 18:23 被阅读0次

当我有个文本文件,里面的内容

窝沟封闭 , xx科室
牙龈肿痛, yy科室
……

那么我现在想做的是通过文本分类的model。得到我输入龋齿,告诉我应该到哪个科室的效果。

做的过程的如下:

第一步 分词做词典

我使用的方法是调用nlp.baidu.com上的词法分析接口。
分出来词之后,去重形成词典。

第二步 做好词表emb

根据上面的词典,调用词向量表示的接口,构造词表,但是过程中可能发现某些词调用的时候,获取不到向量。
建议的做法是分词的时候分的详细一点。

第三步 改model

paddlepaddle提供的文本分类的模型,要进行适当的修改,才可以接受自己定义的数据,词典和词表。
官网的model
这个model里面,写的是支持自定义的数据集。但是实际探索的过程中,总结一下更具体的用法。

待训练的数据

格式应该是

好评\t菜品 很 好,很 喜欢 吃,味道 鲜美,入口 就化
差评\t难吃 死了,有 苍蝇

这里要特别注意的就是分类和内容之间,一定是\t分隔的。
并且内容里面,要先分好词。当然如果是英文的训练数据,就不用先走分词这步了。
等待训练的数据,要放到一个路径中。

word_dict

word词典,model可以根据训练数据构建
词频大于5的。会被加到word_dict里,后面是词频。

lable_dict

lable词典,model也是可以自动构建的

注意词典也可以使用步骤一的分词结果自己构建出来。

要注意的是word_dict里面别忘记第一行加<UNK>

然后就可以输入命令,开始训练了

python train.py --train_data_dir=/home/work/sweetsky/model/text_classification/train_data/ --word_dict=/home/work/sweetsky/model/text_classification/word_dict --label_dict=/home/work/sweetsky/model/text_classification/lable_dict 

但是这个时候,会发现步骤二的词向量没有用到,并且如果训练数据量小的话,训练的效果并不好。那么自定义的词向量就登场了

第四步 model使用自定义的词向量

先写一个加载词向量的函数
def load_parameter(file_name, h, w):                                                                
    with open(file_name, 'rb') as f:                                                                
        f.read(16)  # skip header.                                                                  
    return np.fromfile(f, dtype=np.float32).reshape(h, w)
在创建参数的时候,把词向量加载进来

词向量的文件,是二进制保存的,行是每个词的向量。用行的index表示词的id

    # create parameters                                                                                
    parameters = paddle.parameters.create(cost)                                                        
    parameters.set('emb', load_parameter(文件名, 行数, 词向量的维度))
在定义网络的时候修改成
 # embedding layer                                                                                  
    emb_para = paddle.attr.Param(name='emb', initial_std=0., is_static=True)                           
    emb = paddle.layer.embedding(size=词向量维度, input=x, param_attr=emb_para)                          
    #emb = paddle.layer.embedding(input=data, size=emb_dim)

相关文章

  • PaddlePaddle中文文本分类实践

    当我有个文本文件,里面的内容 窝沟封闭 , xx科室牙龈肿痛, yy科室…… 那么我现在想做的是通过文本分类的mo...

  • NLP 中文短文本分类项目实践(下)

    本场 Chat 和《NLP 中文短文本分类项目实践(上)》可以看做姊妹篇,在上一篇的基础上,本篇主要讲一下文本分类...

  • 中文文本分类应用实践

    文本分类是NLP领域非常常见的应用场景,在现实生活中有着非常多的应用,例如舆情监测、新闻分类等等。在文本分类中,常...

  • 【paddlepaddle速成】paddlepaddle图像分类

    这一次我们讲讲paddlepadle这个百度开源的机器学习框架,一个图像分类任务从训练到测试出结果的全流程。 将涉...

  • 搜狐新闻文本分类:机器学习大乱斗

    目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比...

  • 文本分类

    1.基于深度学习的文本分类 2.THUCTC: 一个高效的中文文本分类工具包 3.Text Classificat...

  • 意图识别

    1.使用fastText对文本进行分类--小插曲 2.对话系统原理和实践 3.新闻上的文本分类:机器学习大乱斗

  • 期盼数月的召唤|PaddlePaddle中文文档利剑来袭

    发布三年之后,百度深度学习框架PaddlePaddle有了官方中文版文档。 今年11月份,PaddlePaddle...

  • 技术特色

    技术特色 一、智能化中文文本校对技术特色   (1)提出了中文本错误的“非多字词错误”与“真多字词错误”的分类思想...

  • Spark中文文本分类

    文本分类是指将一篇文章归到事先定义好的某一类或者某几类,互联网时代到来,数据以指数级增长,自媒体的兴起,让文本的增...

网友评论

      本文标题:PaddlePaddle中文文本分类实践

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