精华内容
参与话题
问答
  • NLP领域短文本分类非常的常见,那么我们今天分享一下NLP领域文本主要的应用场景

    TextCNN 短文本分类案例分享,学习更多工业界案例:数据分析可视化技术、TextCNN论文原理、词向量技术、tensorboardx效果可视化工具、TextCNN 短文本分类案例分享总结,让大家彻底掌握TextCNN 在文本分类领域应用,有任何问题请留言或者加入交流群:NLP技术交流群 ,让我们一起学习NLP。

    自然语言处理(NLP):08 TextCNN在短文本分类应用介绍
    自然语言处理(NLP):08-01 数据分析和文本分类效果对比
    自然语言处理(NLP):08-02 CNN文本分类论文讲解及TextCNN原理
    自然语言处理(NLP):08-03 词向量word2vec
    自然语言处理(NLP):08-04 tensorboardx 可视化
    自然语言处理(NLP):08-05 TextCNN短文本分类案例分享

    文本分类应用场景

    文章分类服务对文章内容进行深度分析,该技术在个性化推荐、文章聚合、文本内容分析等场景具有广泛的应用价值.
    这里列举几个工业界常用的几个文本案例
    在这里插入图片描述

    新闻分类

    根据文本描述的内容方向,针对新闻媒体的文章做自动分类,例如军事类、农业类、体育类、娱乐类等多种类别方向.
    在这里插入图片描述

    文本审核

    定制训练文本审核的分类模型,如判断文本中是否有交易、涉黄涉赌小广告等违规描述类型的内容

    电商评论分类

    电商业务可根据用户对商品的评价内容维度,做物流类、服务类、产品类等问题描述方向的自动分类

    舆情监控

    通过对需要舆情监控的实时文字数据流进行情感倾向性分析,把握用户对热点信息的情感倾向性变化

    外卖智能客服场景

    在这里插入图片描述

    • 数据特点:用户的 query 比较短,大概在 15 个汉字
    • 实验效果分析:不同分类模型效果分析
      在这里插入图片描述

    用 TextCNN 模型在 10ms 以内就可以解决,如果用 BERT 模型的话可能需要 70ms 左右,这个时间还是比较长的,实际上线的时候选择了 TextCNN 模型。

    智能语音平台语义理解

    在这里插入图片描述

    业界通用型的 NLU 一般会先过意图识别模型,再将识别出的意图传给槽位识别模型进行判断。整个 Pipeline 如下。其中: 意图识别是一个典型的短文本分类问题,可以使用 TextCNN 来进行文本分类.
    在这里插入图片描述

    注:语义理解中意图识别和槽位识别一般两个思路进行演进

    • 意图识别:分类问题;槽位填充:序列标注问题
      分别采用单独的模型进行推测,不足之处:意图和槽位是相互影响的
    • 意图识别和序列标注问题联合训练(这里不详细进行介绍,大家可以关乎后续更多内容)

    文本分类技术方案以及挑战

    文本分类作为文本理解的基本任务、能够服务于大量应用(如文本摘要、情感分析、推荐系统等等),更是长期以来学术界与工业界关注的焦点.

    针对长文本信息我们可以很容易挖掘信息,但是对于短文本来说的花,很难。

    文本分类处理方案

    在这里插入图片描述

    针对传统的机器学习文本分类,推荐个人博客:https://wenjie.blog.csdn.net/category_2379719.html

    短文本处理难点

    短文本由于内容简短,易于阅读和传播,被民众广泛使用,在新闻标题、社交媒体信息和短信、智能客服搜索、智能音箱语音交互等随处可见,但是内容简短、缺失会引起数据稀疏,与段落或者文章不同,短文本并不总能观察出句法,且短文本存在的多义和错误往往使内容不清楚,难以理解语义,导致模型分类没有足够特征进行类别判断,分类任务困难。

    技术方案整体介绍

    在这里插入图片描述

    本课程我们重点来学习下TextCNN 在文本分类中应用。

    分类器选择

    对于多分类问题,可以使用softmax函数作为分类器,最小化交叉熵(Cross Entropy)

    • 传统机器学习文本分类算法

    • 深度学习文本分类算法

    特征提取

    基于深度学习方法 (基于word2vec 或者 随机方式 进行实验对比):

    • 将所有词(或词频>阈值的词)组成一个词表,得到word2index字典和index2word字典;
    • 将词映射为index,并且进行padding,然后通过词对应的index对词向量矩阵进行Lookup,得到当前文本对应的word2vec;
    • 使用TextCNN模型在word2vec的基础上进行特征提取

    这里并没有使用学术界比较流行的BERT来进行讲解,因为目前很多公司文本分类处理线上系统TextCNN,FastText等用的还是比较普遍。关于BERT方面的学习,欢迎大家关注更多的内容

    深度学习工具

    这里基于PyTorch深度学习工具,TextCNN 模型训练

    模型在线预测

    对于大型项目在线服务功能,我们需要使用JAVA或者C++、Go 进行Web 服务部署,对于我们中小型项目我们采用Flask Web 框架进行部署

    处理流程

    • 原始文本数据分析以及可视化图表展示
    • 文本预处理:分词、数据离散化表示
    • 构建词表:构建<word,count> 、文本词 统一长度向量化表示
    • Embedding : 根据词index 获取词向量、随机或者预训练词向量初始化单词的Embedding 向量
    • 模型训练:CNN、效果评估
    • 分类器:softmax 获取文本对应类别最大概率
    • 在线服务部署

    在线服务预测

    http://127.0.0.1:5000/v1/p?q=昆明拟规定乘地铁禁止手机外放声音

    CNN 文本分类原理

    • CNN 论文精选

    《Convolutional Neural Networks for Sentence Classification.pdf》

    《A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification.pdf》

    词向量介绍

    《词向量word2vec.ipynb》

    tensorboardX 分类效果

    《tensorboardx 可视化.ipynb》

    短文本分类案例

    基于新闻领域的数据,完成文本分类项目主要 基于深度学习来完成。这里采用CNN完成短文本的分类,采用PyTorch 深度学习工具。

    $ tree -L 2
    .
    ├── api.py
    ├── config_file
    ├── data
    │   ├── ckpts
    │   ├── data
    │   ├── log
    ├── data_processing.py
    ├── dataset.py
    ├── docs
    ├── images
    ├── main.py
    ├── models
    │   ├── TextCNN.py
    ├── notebook
    ├── static
    │   ├── css
    │   ├── img
    │   └── js
    ├── templates
    │   └── index.htm
    └── utils.py
    
    • data 训练数据、模型存储以及日志记录、词向量
    • data_processing.py 数据预处理
    • notebook 技术方案、数据分析jupyter-notebook 文件以及词向量生成
    • dataset.py 自定义PyTorch数据集类
    • docs 深度学习文本分类论文以及课件
    • notebook 数据分析
    • config_file 训练参数文件
    • models 定义模型文件,例如:TextCNN,RCNN 等
    • main.py 程序入口
    • api.py static,templates 在线服务程序

    数据可视化分析

    详见: 《 02-文本数据分析以及短文本分类技术选型.ipynb》

    针对文本数据分析,目的是了解业务数据。重点关注的内容如:

    • pandas数据加载介绍
    • pandas 函数使用
    • 通过pyecharts,seaboard,matplotlib进行数据可视化
    • 文本分类深度学习模型工业界效果对比

    关于数据可视化大家如果不熟悉,可以上网搜索学习

    《Python数据可视化 pyecharts实战》
    《Python数据可视化 matplotlib实战》
    《Python数据可视化 seaborn实战》

    预处理

    构建词表

    Embedding

    模型训练

    CPU环境 vs GPU环境下短文本分类运行结果

    • 在CPU环境下训练 过程
    $ python main.py --model TextCNN  --dataset data --embedding pre_trained
    data_path =  data/data/data.txt
    0it [00:00, ?it/s]Building prefix dict from the default dictionary ...
    Loading model from cache /var/folders/y4/m077y_dj1pd7blyvjrx9y30w0000gn/T/jieba.cache
    Loading model cost 0.859 seconds.
    Prefix dict has been built succesfully.
    200000it [00:26, 7614.50it/s]
    total_examples =  200000
    label count =  10
    sentences samples =  [['词汇', '阅读', '是', '关键', ' ', '08', '年', '考研', '暑期', '英语', '复习', '全', '指南'], ['中国', '人民', '公安大学', '2012', '年', '硕士', '研究生', '目录', '及', '书目']]
    lables samples =  [3, 3]
    max_seq_len =  21
    vocab size= 100002
    device =  cpu
    pre_trained init embedding 
    models =  Model(
      (embedding): Embedding(100002, 300)
      (convs): ModuleList(
        (0): Sequential(
          (0): Conv1d(300, 256, kernel_size=(2,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=20, stride=20, padding=0, dilation=1, ceil_mode=False)
        )
        (1): Sequential(
          (0): Conv1d(300, 256, kernel_size=(3,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=19, stride=19, padding=0, dilation=1, ceil_mode=False)
        )
        (2): Sequential(
          (0): Conv1d(300, 256, kernel_size=(4,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=18, stride=18, padding=0, dilation=1, ceil_mode=False)
        )
      )
      (fc): Linear(in_features=768, out_features=10, bias=True)
    )
    Epoch[1/10]
    Iter:      0,  Train Loss:   2.4,  Train Acc:  7.81%,  Val Loss:   2.4,  Val Acc: 10.94%,  Time: 0:00:38 *
    Iter:    100,  Train Loss:  0.55,  Train Acc: 82.81%,  Val Loss:  0.52,  Val Acc: 83.78%,  Time: 0:02:11 *
    Iter:    200,  Train Loss:  0.33,  Train Acc: 90.62%,  Val Loss:  0.41,  Val Acc: 87.03%,  Time: 0:03:44 *
    Iter:    300,  Train Loss:  0.32,  Train Acc: 88.28%,  Val Loss:  0.37,  Val Acc: 88.26%,  Time: 0:05:17 *
    Iter:    400,  Train Loss:  0.36,  Train Acc: 89.84%,  Val Loss:  0.35,  Val Acc: 89.14%,  Time: 0:06:50 *
    Iter:    500,  Train Loss:  0.41,  Train Acc: 88.28%,  Val Loss:  0.35,  Val Acc: 89.07%,  Time: 0:08:19 *
    Iter:    600,  Train Loss:  0.31,  Train Acc: 92.97%,  Val Loss:  0.34,  Val Acc: 89.49%,  Time: 0:09:51 *
    Iter:    700,  Train Loss:  0.46,  Train Acc: 87.50%,  Val Loss:  0.32,  Val Acc: 89.84%,  Time: 0:11:31 *
    Iter:    800,  Train Loss:  0.18,  Train Acc: 92.97%,  Val Loss:  0.31,  Val Acc: 90.14%,  Time: 0:13:12 *
    Iter:    900,  Train Loss:  0.28,  Train Acc: 89.06%,  Val Loss:  0.32,  Val Acc: 89.95%,  Time: 0:14:54 
    Iter:   1000,  Train Loss:  0.37,  Train Acc: 90.62%,  Val Loss:   0.3,  Val Acc: 90.68%,  Time: 0:16:37 *
    Epoch[2/10]
    Iter:   1100,  Train Loss:  0.34,  Train Acc: 89.06%,  Val Loss:  0.29,  Val Acc: 90.89%,  Time: 0:18:27 *
    Iter:   1200,  Train Loss:  0.17,  Train Acc: 93.75%,  Val Loss:   0.3,  Val Acc: 90.91%,  Time: 0:20:18 
    Iter:   1300,  Train Loss:  0.25,  Train Acc: 94.53%,  Val Loss:   0.3,  Val Acc: 90.95%,  Time: 0:22:08 
    Iter:   1400,  Train Loss:   0.2,  Train Acc: 92.19%,  Val Loss:  0.29,  Val Acc: 90.92%,  Time: 0:23:59 
    Iter:   1500,  Train Loss:  0.24,  Train Acc: 92.19%,  Val Loss:   0.3,  Val Acc: 90.89%,  Time: 0:25:50 
    Iter:   1600,  Train Loss:  0.18,  Train Acc: 93.75%,  Val Loss:  0.29,  Val Acc: 91.20%,  Time: 0:27:41 *
    Iter:   1700,  Train Loss: 0.088,  Train Acc: 97.66%,  Val Loss:  0.29,  Val Acc: 91.09%,  Time: 0:29:31 
    Iter:   1800,  Train Loss:  0.22,  Train Acc: 93.75%,  Val Loss:   0.3,  Val Acc: 91.10%,  Time: 0:31:16 
    Iter:   1900,  Train Loss:   0.2,  Train Acc: 92.97%,  Val Loss:  0.29,  Val Acc: 91.27%,  Time: 0:33:06 *
    Iter:   2000,  Train Loss:  0.25,  Train Acc: 92.97%,  Val Loss:  0.29,  Val Acc: 91.37%,  Time: 0:34:58 *
    Iter:   2100,  Train Loss:  0.17,  Train Acc: 96.09%,  Val Loss:  0.29,  Val Acc: 91.33%,  Time: 0:36:40 
    Epoch[3/10]
    Iter:   2200,  Train Loss:  0.16,  Train Acc: 96.09%,  Val Loss:  0.29,  Val Acc: 91.32%,  Time: 0:38:22 
    Iter:   2300,  Train Loss: 0.049,  Train Acc: 99.22%,  Val Loss:  0.31,  Val Acc: 91.27%,  Time: 0:40:03 
    Iter:   2400,  Train Loss:  0.18,  Train Acc: 93.75%,  Val Loss:   0.3,  Val Acc: 91.31%,  Time: 0:41:48 
    Iter:   2500,  Train Loss: 0.038,  Train Acc: 99.22%,  Val Loss:  0.31,  Val Acc: 91.16%,  Time: 0:43:32 
    Iter:   2600,  Train Loss: 0.077,  Train Acc: 98.44%,  Val Loss:  0.32,  Val Acc: 91.16%,  Time: 0:45:15 
    Iter:   2700,  Train Loss: 0.079,  Train Acc: 98.44%,  Val Loss:  0.32,  Val Acc: 91.04%,  Time: 0:46:58 
    Iter:   2800,  Train Loss:  0.18,  Train Acc: 95.31%,  Val Loss:  0.32,  Val Acc: 91.30%,  Time: 0:48:40 
    Iter:   2900,  Train Loss: 0.088,  Train Acc: 98.44%,  Val Loss:  0.33,  Val Acc: 90.93%,  Time: 0:50:22 
    Iter:   3000,  Train Loss:  0.17,  Train Acc: 96.09%,  Val Loss:  0.34,  Val Acc: 90.90%,  Time: 0:52:05 
    No optimization for a long time, auto-stopping...
    Test Loss:  0.29,  Test Acc: 91.38%
    Precision, Recall and F1-Score...
                   precision    recall  f1-score   support
    
          finance     0.9052    0.8966    0.9009      5986
           realty     0.9383    0.9245    0.9313      6024
           stocks     0.8487    0.8679    0.8582      6057
        education     0.9328    0.9653    0.9488      6053
          science     0.8871    0.8476    0.8669      6018
          society     0.9169    0.9012    0.9090      6023
         politics     0.8878    0.9034    0.8955      5893
           sports     0.9732    0.9577    0.9654      5999
             game     0.9144    0.9306    0.9224      5966
    entertainment     0.9349    0.9435    0.9392      5981
    
      avg / total     0.9139    0.9138    0.9138     60000
    
    Confusion Matrix...
    [[5367   62  366   22   28   38   54    7   23   19]
     [  62 5569  144   27   33   74   55   11   22   27]
     [ 324  117 5257   15  160    8  120   14   24   18]
     [   4    6   11 5843   22   68   57   10   11   21]
     [  52   35  220   57 5101   85  128    9  289   42]
     [  39   58    8  141   69 5428  167   11   25   77]
     [  44   43  142   73   89  125 5324   10   18   25]
     [   7   10   17   19   10   20   23 5745   49   99]
     [  12   13   25   16  203   12   29   39 5552   65]
     [  18   22    4   51   35   62   40   47   59 5643]]
    
    • 在GPU训练过程执行日志
    $ python main.py --model TextCNN  --dataset data --embedding pre_trained
    data_path =  data/data/data.txt
    0it [00:00, ?it/s]Building prefix dict from the default dictionary ...
    Loading model from cache /var/folders/y4/m077y_dj1pd7blyvjrx9y30w0000gn/T/jieba.cache
    Loading model cost 0.859 seconds.
    Prefix dict has been built succesfully.
    200000it [00:26, 7614.50it/s]
    total_examples =  200000
    label count =  10
    sentences samples =  [['词汇', '阅读', '是', '关键', ' ', '08', '年', '考研', '暑期', '英语', '复习', '全', '指南'], ['中国', '人民', '公安大学', '2012', '年', '硕士', '研究生', '目录', '及', '书目']]
    lables samples =  [3, 3]
    max_seq_len =  21
    vocab size= 100002
    device =  cuda
    pre_trained init embedding 
    
    models =  Model(
      (embedding): Embedding(100002, 300)
      (convs): ModuleList(
        (0): Sequential(
          (0): Conv1d(300, 256, kernel_size=(2,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=31, stride=31, padding=0, dilation=1, ceil_mode=False)
        )
        (1): Sequential(
          (0): Conv1d(300, 256, kernel_size=(3,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=30, stride=30, padding=0, dilation=1, ceil_mode=False)
        )
        (2): Sequential(
          (0): Conv1d(300, 256, kernel_size=(4,), stride=(1,))
          (1): ReLU()
          (2): MaxPool1d(kernel_size=29, stride=29, padding=0, dilation=1, ceil_mode=False)
        )
      )
      (fc): Linear(in_features=768, out_features=10, bias=True)
    )
    Epoch[1/10]
    Iter:      0,  Train Loss:   2.4,  Train Acc:  7.81%,  Val Loss:   2.4,  Val Acc: 11.23%,  Time: 0:00:03 *
    Iter:    100,  Train Loss:  0.58,  Train Acc: 79.69%,  Val Loss:   0.5,  Val Acc: 84.18%,  Time: 0:00:08 *
    Iter:    200,  Train Loss:  0.46,  Train Acc: 85.94%,  Val Loss:  0.41,  Val Acc: 87.05%,  Time: 0:00:12 *
    Iter:    300,  Train Loss:  0.38,  Train Acc: 88.28%,  Val Loss:  0.37,  Val Acc: 88.56%,  Time: 0:00:16 *
    Iter:    400,  Train Loss:  0.25,  Train Acc: 91.41%,  Val Loss:  0.36,  Val Acc: 88.75%,  Time: 0:00:20 *
    Iter:    500,  Train Loss:   0.4,  Train Acc: 88.28%,  Val Loss:  0.34,  Val Acc: 89.34%,  Time: 0:00:24 *
    Iter:    600,  Train Loss:  0.38,  Train Acc: 88.28%,  Val Loss:  0.33,  Val Acc: 89.65%,  Time: 0:00:28 *
    Iter:    700,  Train Loss:  0.44,  Train Acc: 82.81%,  Val Loss:  0.32,  Val Acc: 90.08%,  Time: 0:00:32 *
    Iter:    800,  Train Loss:  0.31,  Train Acc: 86.72%,  Val Loss:  0.31,  Val Acc: 90.39%,  Time: 0:00:35 *
    Iter:    900,  Train Loss:  0.32,  Train Acc: 89.06%,  Val Loss:   0.3,  Val Acc: 90.62%,  Time: 0:00:39 *
    Iter:   1000,  Train Loss:  0.28,  Train Acc: 89.06%,  Val Loss:   0.3,  Val Acc: 90.65%,  Time: 0:00:43 
    Epoch[2/10]
    Iter:   1100,  Train Loss:  0.12,  Train Acc: 97.66%,  Val Loss:  0.29,  Val Acc: 91.02%,  Time: 0:00:47 *
    Iter:   1200,  Train Loss:  0.13,  Train Acc: 96.09%,  Val Loss:   0.3,  Val Acc: 90.77%,  Time: 0:00:50 
    Iter:   1300,  Train Loss:  0.14,  Train Acc: 94.53%,  Val Loss:  0.29,  Val Acc: 91.25%,  Time: 0:00:54 *
    Iter:   1400,  Train Loss:  0.27,  Train Acc: 92.19%,  Val Loss:   0.3,  Val Acc: 90.99%,  Time: 0:00:57 
    Iter:   1500,  Train Loss:  0.16,  Train Acc: 94.53%,  Val Loss:  0.29,  Val Acc: 91.25%,  Time: 0:01:01 
    Iter:   1600,  Train Loss:  0.23,  Train Acc: 96.09%,  Val Loss:  0.29,  Val Acc: 91.13%,  Time: 0:01:04 
    Iter:   1700,  Train Loss:  0.16,  Train Acc: 95.31%,  Val Loss:  0.29,  Val Acc: 91.38%,  Time: 0:01:07 
    Iter:   1800,  Train Loss:  0.39,  Train Acc: 89.06%,  Val Loss:  0.29,  Val Acc: 91.26%,  Time: 0:01:11 
    Iter:   1900,  Train Loss:  0.15,  Train Acc: 95.31%,  Val Loss:  0.29,  Val Acc: 91.23%,  Time: 0:01:14 
    Iter:   2000,  Train Loss:  0.16,  Train Acc: 97.66%,  Val Loss:  0.29,  Val Acc: 91.11%,  Time: 0:01:18 
    Iter:   2100,  Train Loss: 0.099,  Train Acc: 97.66%,  Val Loss:  0.29,  Val Acc: 91.23%,  Time: 0:01:21 
    Epoch[3/10]
    Iter:   2200,  Train Loss:  0.12,  Train Acc: 96.09%,  Val Loss:  0.29,  Val Acc: 91.37%,  Time: 0:01:25 
    Iter:   2300,  Train Loss:  0.12,  Train Acc: 94.53%,  Val Loss:   0.3,  Val Acc: 91.50%,  Time: 0:01:28 
    No optimization for a long time, auto-stopping...
    Test Loss:  0.29,  Test Acc: 91.16%
    Precision, Recall and F1-Score...
                   precision    recall  f1-score   support
    
          finance     0.8914    0.9015    0.8964      5818
           realty     0.9416    0.9176    0.9294      5969
           stocks     0.8400    0.8616    0.8506      5988
        education     0.9594    0.9419    0.9506      6046
          science     0.8873    0.8451    0.8657      5945
          society     0.8812    0.9274    0.9037      6022
         politics     0.8752    0.9108    0.8927      5885
           sports     0.9656    0.9632    0.9644      5998
             game     0.9352    0.9134    0.9242      5959
    entertainment     0.9448    0.9328    0.9388      5969
    
      avg / total     0.9123    0.9116    0.9118     59599
    
    Confusion Matrix...
    [[5245   64  340    7   22   61   48    8   10   13]
     [  77 5477  173   18   26   84   64   15   13   22]
     [ 350   95 5159   10  140   11  171   12   20   20]
     [  16    7   16 5695   31  146   93   14    6   22]
     [  66   29  242   27 5024  117  151   11  235   43]
     [  33   54   13   80   46 5585  139   16   13   43]
     [  43   39  131   51   67  164 5360   15    5   10]
     [  15   13   21    9   11   24   24 5777   26   78]
     [  15   16   40   11  256   31   33   40 5443   74]
     [  24   23    7   28   39  115   41   75   49 5568]]
    Time usage: 0:00:02
    

    tensorboardX 可视化

    $tensorboard --logdir 06-26_16.32
    在这里插入图片描述

    在线服务

    启动后端服务,python api.py
    最后,上述内容每个环节我们都将通过代码的方式实现,希望通过本章节的学习,可以让大家实际工业届如何使用深度学习进行短文本分类的。

    curl http://localhost:12345/predict \
    -H "Content-Type:application/json" \
    -X POST \
    --data '{"q": "妮可-里奇网上分享美发心得 推出自家品牌首饰","lang":"en"}'
    

    参考资料

    [1] all kinds of text classification models and more with deep learning

    非常重要

    https://github.com/brightmart/text_classification

    [2] 2018达观杯长文本分类智能处理挑战赛 18解决方案

    https://github.com/nlpjoe/daguan-classify-2018

    [3] 知乎看山杯 第二名 解决方案

    https://github.com/Magic-Bubble/Zhihu

    [4] tensorboardX 使用

    https://github.com/lanpa/tensorboardX

    [5] 百度NLP

    https://ai.baidu.com/tech/nlp_apply/topictagger

    [6] 文章标签

    https://ai.baidu.com/tech/nlp_apply/doctagger

    [7] 词向量表示

    https://ai.baidu.com/tech/nlp_basic/word_embedding

    [8] 自然语言处理 NLP

    https://cloud.tencent.com/product/nlp

    [9] 中文文本分类 pytorch实现

    https://zhuanlan.zhihu.com/p/73176084

    展开全文
  • 1.对于短文本分类问题,它的主要特点是词空间很大,如果用词袋模型表示,会产生高纬稀疏向量,这给运算带来麻烦 2.短文本分类问题,它的 document 和 features 都很多,这也是文本分类问题共同的特点,短文本的短...

    1.对于短文本分类问题,它的主要特点是词空间很大,如果用词袋模型表示,会产生高纬稀疏向量,这给运算带来麻烦

    2.短文本分类问题,它的 document 和 features 都很多,这也是文本分类问题共同的特点,短文本的短带来了稀疏,同时短文本也     有自己独特的特点,它有很明显的主谓宾结构,绝大多数情况下一句话就是一个document。

    3.通常的文本分类问题的步骤为:

          a. 分词,去除停用词

          b. 提取特征和scaling

          c. 选择模型

          d. cross-validation and grid-seasrch

          e. 模型生成与预测

    目前问题主要集中在提取特征方面。

    在此之前,对于分词操作要不要加入特殊的正则匹配,如phone类别数据中有很多  打电话给幺八三四四五五五六三八 这样的数据  是否要匹配出这些号码数据,然后用一个词来替换如 电话号码  ,对于不易区分的类别,如 story 和 music ,这两者都是,我想听...  那么他们的区分在于具体想听的内容,如何去分辨宾语所指的到底是一个music还是一个story

    特征提取,到底如何表示词,进一步,如何表示短文本? 显而易见的是如果采取one-hot 向量,用全部词空间大小的维度来表示,不太合理,词与词之间基于完全独立性假设。目前了解到的用word2vec 表示词,能够很好的压缩维度,并且能够很好的表示词之间的相似度,那么word2vec可以表示词,同样的思想用sentence2vec表示一句话。用它作为输入,但是会涉及到变长输入的问题。

    另外,文本分类关注点是关键词,在本数据集中由于document就是一句话所以在这句话里面出现重复关键词的情况很少,我的意思是一个document里的词频似乎没有多大的作用。对于这样的一些词语:他们在其他类别中几乎不出现,而在本类别中的绝大多数文本中都出现,这样的词是最能够给定分类判别的

    从关键词的角度出发,使用无监督的聚类,首先聚类出来那么几个主题,挑选出这样的关键词,用于辅助特征提取是否有益处,具体可以怎么实现,这是另外一个思考。能不能先分出来按照无监督聚类出来的类别,然后再在一些聚类里面再细分类别,比如可以先分出来music , news  ,weather 这样具有明显差异的大类,然后再在大类里面去区分,story 和 music 。alarm 和 schedule ,这样难以区分的小类。

     

     

    展开全文
  • 针对短文本的特征稀疏性和上下文依赖性两个问题,提出一种基于隐含狄列克雷分配模型的短文本分类方法。利用模型生成的主题,一方面区分相同词的上下,降低权重; 另一方面关联不同词以减少稀疏性,增加权重。
  • 短文本分类概述

    万次阅读 2018-07-17 00:57:52
    Table of Contents 定义 特点及难点 分类方法(转 有修改) -传统文本分类方法 ...短文本分类任务的目的是自动对用户输入的短文本进行处理,得到有价值的输出。在chatbot的构建过程中,对用户的意图进...

    Table of Contents

    定义

    特点及难点

    分类方法(转 有修改)

    -传统文本分类方法

    -深度学习文本分类方法

    评价指标


    定义

    短文本通常是指长度比较短,一般不超过160个字符的文本形式,如微博、聊天信息、新闻主题、观点评论、问题文本、手机短信、文献摘要等。短文本分类任务的目的是自动对用户输入的短文本进行处理,得到有价值的输出。在chatbot的构建过程中,对用户的意图进行识别是其中比较重要的一个部分,而意图识别的核心问题是如何对短文本进行分类。

    特点及难点

    1. 稀疏性:短文本的内容较短,通常只包含几个到十几个有实际意义的词语,难以抽取有效的特征词。
    2. 实时性:短文本更新速度快、易于扩散。
    3. 海量性:短文本大量存在于人们的生活中,由于短文本的及时更新和快速传播,使互联网中积累了海量的短文本数据,这要求对于短文本的处理计算必须具有很高的速度。
    4. 不规范性:短文本表述简洁,简称、不规范用语以及网络流行用语被广泛使用,使文本噪音较大。如“天朝”-网络用语,“杯具”-谐音用法,“666”-新词汇。

    短文本的特点使文本分类面临以下难点:

    1. 短文本特征词少,用传统的基于词条的向量空间模型表示,会造成向量空间的稀疏。另外,词频、词共现频率等信息不能得到充分利用,会丢失掉了词语间潜在的语义关联关系。
    2. 短文本的不规范性,使文本中出现不规则特征词和分词词典无法识别的未登录词,导致传统的文本预处理和文本表示方法不够准确。
    3. 短文本数据的规模巨大,在分类算法的选择上往往更倾向于非惰性的学习方法,避免造成过高的时间复杂度。

    因此,短文本分类一般在预处理、文本表示、分类器的构建等环节中进行优化和改进,以提高分类效果和精度。

    分类方法( 有修改)

    -传统文本分类方法

    伴随着统计学习方法的发展,特别是90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典方法,整个文本分类问题就拆分成了特征工程和分类器两部分。

    1.1 特征工程

    特征工程在机器学习中往往是最耗时耗力的,但却极其的重要。抽象来讲,机器学习问题是把数据转换成信息再提炼到知识的过程,特征是“数据-->信息”的过程,决定了结果的上限,而分类器是“信息-->知识”的过程,则是去逼近这个上限。然而特征工程不同于分类器模型,不具备很强的通用性,往往需要结合对特征任务的理解。

    文本分类问题所在的自然语言领域自然也有其特有的特征处理逻辑,传统分本分类任务大部分工作也在此处。文本特征工程分为文本预处理、特征提取、文本表示三个部分,目的是把文本转换成计算机可理解的格式,并封装足够用于分类的信息,即很强的特征表达能力。

    (1)文本预处理

    文本预处理过程是在文本中提取关键词表示文本的过程,中文文本处理中主要包括文本分词和去停用词两个阶段。之所以进行分词,是因为很多研究表明特征粒度为词粒度远好于字粒度,其实很好理解,因为大部分分类算法不考虑词序信息,基于字粒度显然损失了过多“n-gram”信息。

    具体到中文分词,不同于英文有天然的空格间隔,需要设计复杂的分词算法。传统算法主要有基于字符串匹配的正向/逆向/双向最大匹配;基于理解的句法和语义分析消歧;基于统计的互信息/CRF方法。近年来随着深度学习的应用,WordEmbedding + Bi-LSTM+CRF方法逐渐成为主流,本文重点在文本分类,就不展开了。而停止词是文本中一些高频的冠词助词代词连词介词等对文本分类无意义的词,通常维护一个停用词表,特征提取过程中删除停用表中出现的词,本质上属于特征选择的一部分。

    (2)文本表示和特征提取

    文本表示:

    文本表示的目的是把文本预处理后的转换成计算机可理解的方式,是决定文本分类质量最重要的部分。传统做法常用词袋模型(BOW, Bag Of Words)或向量空间模型(Vector Space Model),最大的不足是忽略文本上下文关系,每个词之间彼此独立,并且无法表征语义信息。一般来说词库量至少都是百万级别,因此词袋模型有个两个最大的问题:高纬度、高稀疏性。词袋模型是向量空间模型的基础,因此向量空间模型通过特征项选择降低维度,通过特征权重计算增加稠密性。

    特征提取:

    向量空间模型的文本表示方法的特征提取对应特征项的选择特征权重计算两部分。

    特征选择的基本思路是根据某个评价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项。常用的评价有文档频率、互信息、信息增益、χ²统计量等。

    信息增益特征提取方法:该方法基于信息熵的原理,通过计算各个特征在不同类别样本中的分布情况,通过统计比较发现具有较高类别区分度的特征。信息增益能较好的描述不同特征对不同类别的区别能力,信息增益值越高则区别能力越强,在特征选择时保留较大IG 值,在分类时就更容易得到正确的分类结果,而且能降低特征的维度。

    卡方检验特征选择方法:该方法主要基于相关性检验原理,通过计算某属性与某一类的相关性,来衡量特征候选项项的重要性,该方法考虑到了反相关的属性。在这里反相关的特征候选项同样存在有用信息,反相关的信息量对分类和聚类算法都有积极作用。

    特征权重主要是经典的TF-IDF及其扩展方法,主要思路是一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比。

    (3)特征扩展

    由于短文本的特征少,固需要对文本向量进行特征扩展。当前对于短文本信息分类的研究主要聚焦于短文特征的扩展问题之上。特征扩展方法有基于WordNet、Wik ipedia或其他知识库等的特征扩展方法,然而这些方法来说一些的不足之处,对于短文本数据,尤其是即时数据来说,这些方法并不十分合适,因为这些知识库依靠的更多是人工参与编辑,信息相对滞后,扩展特征不够全面,缺乏全局性与一致性。另外一个更重要的原因是网络信息检索本身就会出现噪声问题。这些都会将错误因素累积,所以必须对检索结果进一步筛选。

    为了解决这些问题,一些研究人员通过从新计算短文本与检索结果的相似度,验证并实现了多种方法,包括语义分析等。短文本计算相似度时有一定得困难,短文本包含的特征太少,若直接使用相同特征作为度量标准的话,很多短文本之间的相似度为零。为了解决这个问题,需要采用一种适合短文本相似度计算的方法,常见的相似度计算方法有:1.基于本体词典的规则化方法;2.基于知识库的规则化方法;3.基于搜索引擎的方法;4.基于统计的方法;5.句子层面语义相似度计算方法。

    (4)基于语义的文本表示

    传统做法在文本表示方面除了向量空间模型,还有基于语义的文本表示方法,比如LDA主题模型、LSI/PLSI概率潜在语义索引等方法,一般认为这些方法得到的文本表示可以认为文档的深层表示,而word embedding文本分布式表示方法则是深度学习方法的重要基础。

    1.2 分类器

    分类器基本都是统计分类方法了,基本上大部分机器学习方法都在文本分类领域有所应用,比如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵和神经网络等。

    各分类算法优缺点:文本分类的算法总结

    -深度学习文本分类方法

    传统做法主要问题的文本表示是高纬度高稀疏的,特征表达能力很弱,而且神经网络很不擅长对此类数据的处理;此外需要人工进行特征工程,成本很高。而深度学习最初在之所以图像和语音取得巨大成功,一个很重要的原因是图像和语音原始数据是连续和稠密的,有局部相关性。应用深度学习解决大规模文本分类问题最重要的是解决文本表示,再利用CNN/RNN等网络结构自动获取特征表达能力,去掉繁杂的人工特征工程,端到端的解决问题。

    详参:深度学习在文本分类中的应用

    评价指标

    文本分类其本质上是一个映射过程,所以评估文本分类系统的标志是映射的准确程度。文本分类中常用的性能评估指标有:查准率P(Precision)、查全率R(Recall)和F测试值(F-measure),设a-实际和预测都为A;b-实际非A预测为A;c-实际是A预测非A

    • 精确率(Precision,p) p=a/(a+b)

    精确率是所有判断的文本中与人工分类结果吻合的文本所占的比率,p描述了分类结果中的准确程度,即分类结果中有多少是正确的。

    • 召回率(Recall,R) r=a/(a+c)

    召回率又称查全率,是人工分类结果应有的文本中与分类系统吻合的文本所占的比率,r描述了正确分类的能力,即已知的文本中,有多少被正确分类。

    • F测试值(F-measure)

    对于一次测试,准确率和召回率一般是成反比的。一般而言,查准率会随着查全率的升高而降低,多数情况下需要将两者综合考虑,得到一种新的平均指标:

    F测试值。计算公式如下:

    F1Score = 2*(Precision * Recall)/(Precision + Recall)

    F1值越大,表示分类器的性能越好,文本分类的效果越理想。

     

    附短文本分类模型、代码和效果比较:

    https://github.com/brightmart/text_classification

    展开全文
  • 短文本分类总结

    千次阅读 2018-06-01 15:17:04
    一:分词1、常用中文分词工具:jieba、SnowNLP(MIT)、pynlpir、thulac, 其中jieba比较常用2、去除停用词这个主要需要导入并构建停用词表,然后删除分词结果中停用词表中的词。简单说就是删除一些语气词了,这些...
    一:分词

    1、常用中文分词工具:jieba、SnowNLP(MIT)、pynlpir、thulac, 其中jieba比较常用

    2、去除停用词

    这个主要需要导入并构建停用词表,然后删除分词结果中停用词表中的词。简单说就是删除一些语气词了,这些词语并不能有效的代表句子的特征。

    3、特征提取

    中文分词和去除停用词后,需要对分词结果进行文本特征提取,常用的传统方法有:TFIDF,信息增益法,词频法,X^2统计法,互信息等等。

    from sklearn import feature_extraction  
    from sklearn.feature_extraction.text import TfidfTransformer  
    from sklearn.feature_extraction.text import CountVectorizer  
      
    if __name__ == "__main__":  
        corpus=["我 来到 北京 清华大学",#第一类文本切词后的结果,词之间以空格隔开  
            "他 来到 了 网易 杭研 大厦",#第二类文本的切词结果  
            "小明 硕士 毕业 与 中国 科学院",#第三类文本的切词结果  
            "我 爱 北京 天安门"]#第四类文本的切词结果  
        vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频  
        transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值  
       tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个
    代码中有一个地方需要注意,此时变量tfidf是使用稀疏矩阵的存储方式来节省内存,如果需要得到矩阵形式的表示的话,需要使用tfidf.toarray()来获得,当数据量特别大的时候慎用,很容易内存就爆了。
    IG的代码就不放上来了。见这个帖子就好了http://eip.teamshub.com/t/3313542。有一个小点说明下,帖子中附的论文使用TFIDFIG来改善效果,但是在短文本情况下效果不大。因为通常来说得到的特征矩阵过于稀疏,简单说是本来TFIDF矩阵中很多都是零。你再乘个IG(特征词的信息增益)的值,也还是零,对结果影响不大。代码的实现也可以使用gensim库实现,gensim是一个非常完备的文本相关的Python库。地址https://radimrehurek.com/gensim/


    3、这时候样本特征矩阵就构建好了,可以使用一些传统的分类器进行分类预测了,比如LR,NB,SVM,RF等等。下面写一个logistics的例子,其他的类似,就是参数选择不同而已,可以查看sklearn官方文档的用法:

    文本挖掘引入词嵌入思想方法讲述
    1、主要概念:
    新方法和传统方法的主要区别就是新方法引入了word embedding的思想。简单说就是打破了原版传统方法把一个个特征词作为独立特征的情况,原传统方法的处理,将一个个分词结果作为一个个特征词来处理,其实默认假设了词之间的独立。但其实现实中的语句中,词之间通常是存在一定的联系的。1986年HINTON第一次提出了词的分布式表示,将词作为一个个等长的向量来表示。
    2003年Bengio《A Neural Probabilistic Language Model》的文章提出了神经网络语言模型,可以词进行分布式表示,将一个个词表示为等长的向量,用于后续的语义分析。但是由于其提出的网络结构存在隐层,且在处理多个输入词的投影层中采用了拼接的方式,导致向量长度过长,进行网络参数学习的BP时计算量偏大。所以在2013年Google 的 Tomas Mikolov 在《Efficient Estimation of Word Representation in Vector Space》提出了word2vec,对其进行了改进,提出了一个简单的三层神经网络,是一种语言模型的浅层神经网络表示方式。主要区别是在输入理多个层处词向量时采用的是相加的方式,这样使得向量的长度急剧减少,而且在输出层采用了根据词频构建的霍夫曼树作为输出,切高频词位于树的浅层,可以有限减少寻找次数,采用霍夫曼树+softmax层作为加速技巧,使得训练速度加快了很多。本地测试过程,在语料不大的情况下,训练时间都小于5分钟。当然其也存在一定的问题,就是越简单的模型就越需要更多的数据,才能表现的更好,而复杂的模型可以在小数据上表现不错。所以该方法,通常在大量预料下能表现不凡。之后更是开源了该项目,为文本分析提供了强大的工具。通过gensim也可以高效的调用word2vec方法,通过word2vec可以学习到词的表达方法,处理之后每一个词可以表示为一个个同维的向量。word2vec的学习方法主要有两种,分别是CBOW和Skip-Gram,简单说就是CBOW方法是通过上下文来推断出这个词的表达,Skip-Gram则相反,是通过这个的词来推断他的上下文。详见http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf和http://blog.csdn.net/wangyangzhizhou/article/details/77073023
    https://zhuanlan.zhihu.com/p/26306795
    https://www.zybuluo.com/Dounm/note/591752
    实例:
    ​#导入word2vec模块
    from gensim.models import Word2Vec
    #训练word2vec模型
    model = Word2Vec(LineSentence('word2vec.txt'),min_count=1,size=200,iter=10)
    #获取每个词和其表征向量
    w2v = dict(zip(model.wv.index2word, model.wv.syn0))
    通常来说在该方法在大量语料的时候能获得更好的效果,word2vec.txt是每条记录的分词结果,分词结果用空格隔开,每条记录用回车区分,如:
    踢 下线 国际社区支局
    合同号 推送 电子发票 可否 天宫殿支局
    回不了笼 普子支局
    在训练之后,可以先把模型保存下来再导入,如:
    model.save('word2vec')
    model = Word2Vec.load('word2vec')
    在获得了每个词的词向量表达之后主要就是要通过不同的方法来构建句向量了,各种不同方法的讨论可以见论文《基于机器学习的汉语短文本分类方法研究与实现 》,文章中引入了深度学习中pooling层的方法,将处理之后的句向量可以作为特征尝试使用传统的分类器进行学习,也可以导入LSTM等深度学习模型进行尝试。fasttext也是一个用于文本挖掘的库,作者和word2vec是同一个人。fasttext相当于是在word2vec的CBOW训练的词向量的基础上加了一个,softmax层来计算得出各类别的概率,最后得出所属类别。
    fasttext可以参见资料:《Bag of Tricks for Efficient Text Classification》和一些CSDN上的相关博客


    2、深度学习方法
    使用深度学习的方法来做文本分类网上也很多资料了。CNN 和RNN都可以做,如果把一个一个词看成存在某种时序,序列的一种数据的输入。使用RNN来做是比较好的,其可以通过memory cell来捕获上一时刻和当前时刻的信息,大部分实验结果也表明在文本上面RNN表现更佳。而在RNN网络中可以考虑使用LSTM来进行模型的训练,当然具体还要看实际的业务场景。

    展开全文
  • 02 短文本分类划分 03 深度CNN结合知识进行文本分类[1] 3.1 概述 3.2 整体步骤 一:利用知识库概念化短文本 二:模型整体结构设计 3.3 实验 04 主题记忆机制[4] 4.1 概述 4.2 模型结构设计 4.3 实验 05 ...
  • 短文本分类问题

    2019-04-25 15:48:09
    转载:::https://textgrocery.readthedocs.io/zh/latest/index.html
  • 长文本分类的总结

    万次阅读 2018-08-28 08:43:17
    笨妞很少做文本分类,因为工作中文本分类确实不怎么用得到,唯一一个项目用到短文本分类,验证集acc和f1都到90%以上,所以在笨妞印象中文本分类应该是很简单的分类问题,都不属于NLP问题。偶然碰到DC竞赛中“达观杯...
  • 中文短文本分类

    千次阅读 热门讨论 2018-10-23 15:49:31
    特征提取+朴素贝叶斯模型: import random import jieba import pandas as pd #加载停用词 stopwords=pd.read_csv('D://input_py//day06//stopwords.txt',index_col=False,quoting=3,sep=&...
  • 短文本分类小结

    万次阅读 2018-03-27 11:42:38
    文本分类方法经过长期的研究在很多场景下已经得到了应用,但是短文本分类问题起步较晚,且一直也没有什么通用的,效果良好的方法,短文本分类的重点在特征处理环节和分类算法上面。因为其存在两个问题,1、短文本...
  • 场 Chat 和《NLP 中文短文本分类项目实践(上)》可以看做姊妹篇,在上一篇的基础上,篇主要讲一下文本分类在集成学习和深度学习方面的应用,由于内容比较多,笔者不可能面面俱到。下面我们先从集成学习说起。 ...
  • 文本分类短文本分类

    千次阅读 2018-09-13 11:49:25
    文本分类短文本分类 应用场景:我们在和智能产品(如智能音箱,服务机器人,智能电话,车机,手机助手等)对话时。产生的一般都是口语化的短文本。那么如何对短文本进行分类来识别用户意图呢。下面介绍一下集中...
  • [NLP自然语言处理]谷歌BERT模型深度解析

    万次阅读 多人点赞 2018-10-15 17:49:18
    我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑...
  • 1、自然语言处理圣经---《自然语言处理综论》2、视频课程《深度学习与自然语言处理-2018》3、Natural Language Processing (NLP)4、吴恩达经典课程 - Machine Learning —Coursera5、斯坦福 Natural Language ...
  • 国内外自然语言处理(NLP)研究组

    万次阅读 多人点赞 2015-04-05 20:26:26
    *博客地址... *排名不分先后。收集不全,欢迎留言完善。 中国大陆地区: 腾讯人工智能实验室(Tencent AI Lab) ... https://ai.tencent.com/ailab/nlp/ ...苏州大学自然语言处理实验室 http:/...
  • 自然语言处理(NLP)入门

    万次阅读 多人点赞 2017-11-21 20:32:26
    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。什么是NLP?简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序...
  • 自然语言处理NLP)学习路线总结

    千次阅读 多人点赞 2019-03-20 21:01:53
    目录 自然语言处理概述 ...自然语言处理入门基础 ...自然语言处理的主要技术范畴 ...自然语言处理(Natural Language Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究人与计算机之间...
  • 自然语言处理NLP)知识结构总结

    万次阅读 多人点赞 2018-03-17 18:04:35
    自然语言处理知识太庞大了,网上也都是一些...主要参考书为宗成庆老师的《统计自然语言处理》,虽然很多内容写的不清楚,但好像中文NLP书籍就这一全一些,如果想看好的英文资料,可以到我的GitHub上下载: http://...
  • 自然语言处理NLP)简介

    千次阅读 2020-05-30 00:00:29
    简单地说,自然语言处理就是用计算机来处理、理解以及运用人类语言(如中文、英文等),它属于人工智能的一个分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学。由于自然语言是人类区别于其他动物的根本...
  • 第一部分:文本分类 训练文本分类器过程见下图: 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个 ...文本分类处理大致分为文本预处理、文本特征提取、分类模型构建等。...
  • NLP自然语言处理简介

    千次阅读 2019-09-05 23:41:46
    作者:刘知远。清华大学计算机系副教授、博士生导师。...承担多项国家自然科学基金。曾获清华大学优秀博士学位论文、中国人工智能学会优秀博士学位论文、清华大学优秀博士后、中文信息学会青年创新奖...
  • Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。 安装:pip install nltk 2、Gensim 可以用来从文档中自劢提取语义主题。它包含了很多非监督学习算法如:TF/IDF,潜在语义...
  • 中文自然语言处理可能是 NLP 中最难的?

    万次阅读 热门讨论 2018-06-22 13:22:21
    在人工智能背景技术下,自然语言处理NLP)技术被越来越多的人看好,并受到重视。其中,以微软小冰为代表的聊天机器人,如今却成了网红,迅速刷爆了微信和朋友圈,一个17岁纯情少女懂礼貌、有素质和会作诗,众多...
  • 本文整理自阿里巴巴iDST自然语言处理部总监郎君博士的题为“NLP技术的应用及思考”的演讲。本文从NLP背景开始谈起,重点介绍了AliNLP平台,接着分享了NLP相关的应用实例,最后对NLP的未来进行了思考。 背景介绍 ...
  • 【总结】自然语言处理NLP)算法:概述与分类

    万次阅读 多人点赞 2018-07-29 23:51:35
    主要参考自然语言处理NLP)知识结构总结和知乎上的一些问答。 目录 NLP界神级人物 NLP知识结构 1.概述 2.形式语言与自动机 3.语言模型 4.概率图模型,生成模型与判别模型,贝叶斯网络,马尔科夫链与隐...
  • 自然语言处理nlp全领域综述

    万次阅读 多人点赞 2018-07-18 16:05:49
    ************************* 精华总结,时间不够只看这个部分就行了 1.书和课 Michael Collins:COMS W4705: Natural Language Processing (Spring 2015)(重要) Jason Eisner的Lecture Notes:600.465 - Natural ...
  • 中文自然语言处理入门实战

    万次阅读 多人点赞 2018-07-03 02:45:10
    达人课,作为中文自然语言处理边学边实战的入门级教程,以小数据量的“简易版”实例,通过实战带大家快速掌握 NLP 在中文方面开发的基本能力。 课程共包含 18 节。各小节之间并没有紧密耦合,但是整个内容还是...
  • 作为计算机应用的重要方向,人工智能和自然语言处理自然更不例外,与现实应用紧密相关,技术发展日新月异,常给人今是昨非之感。在这种情况下,传统学术期刊的那种投稿1-2年才能见刊的模式已经赶不上技术革新的速度...
  • 自然语言处理NLP(10)——语义分析

    万次阅读 多人点赞 2019-09-19 20:09:09
    在上一部分中,我们介绍了句法分析中的局部句法分析以及依存关系分析(自然语言处理NLP(9)——句法分析c:局部句法分析、依存关系分析),至此,繁复冗长的句法分析部分就结束了。 在这一部分中,我们将要介绍NLP...
  • NLP汉语自然语言处理原理与实践是一研究汉语自然语言处理方面的基础性、综合性书籍,涉及NLP的语言理论、算法和工程实践的方方面面,内容繁杂。 本书包括NLP的语言理论部分、算法部分、案例部分,涉及汉语的发展...

空空如也

1 2 3 4 5 ... 20
收藏数 369,016
精华内容 147,606
关键字:

短文本分类