基于SVM算法的意图识别

在这个项目里, 你需要完成一个意图识别的任务,主要使用的模型是SVM算法。使用的数据集是SMP2018中文人机对话技术评测,是由科大讯飞股份有限公司提供数据。具体的数据可以从以下的链接下载: https://worksheets.codalab.org/worksheets/0x27203f932f8341b79841d50ce0fd684f/#, 下载之后把是数据集解压在当前的工程的根目录下。 在这个任务里,你即将要完成的几个任务是:

  1. 读取文件、展示数据、并做并将label映射为数字index, 以及将index映射为类别。
  2. 使用分词工具对用户query进行切分。
  3. 下载停用词表:https://github.com/goto456/stopwords/blob/master/%E4%B8%AD%E6%96%87%E5%81%9C%E7%94%A8%E8%AF%8D%E8%A1%A8.txt,
    读取, 并对分词后结果进行过滤
  4. 统计词频,并过滤低频词
  5. 计算tfidf

下载tiny-word-embeddinghttps://github.com/Embedding/Chinese-Word-Vectors, 分别使用tfidf, word2vec 建立SVM模型, 并对比二者结果。

1. 下载数据和预处理

import numpy as np
import pandas as pd
import jieba  # 感谢这个magic package,你不必要担心如何分词。如果想了解细节,可以参考此文件。
import requests
import os
from collections import Counter
from sklearn.feature_extraction.text import TfidfTransformer    
from sklearn.feature_extraction.text import CountVectorizer
from gensim.models import Word2Vec
from sklearn.svm import SVC
from sklearn import metrics
from tqdm import tqdm
import pickle
import warnings

warnings.filterwarnings('ignore')
#下载数据,数据集为SMP2018
#训练集数据保存在同目录下的train.json文件中,测试集数据保存在同目录下的test.json文件中
#也可以使用! wget https://worksheets.codalab.org/rest/bundles/0x0161fd2fb40d4dd48541c2643d04b0b8/contents/blob/ 方式下载
if not os.path.exists('train.json'):
    trainData = requests.get("https://worksheets.codalab.org/rest/bundles/0x0161fd2fb40d4dd48541c2643d04b0b8/contents/blob/")
    with open("train.json", "wb") as f:
         f.write(trainData.content)
            
if not os.path.exists('test.json'):
    testData = requests.get("https://worksheets.codalab.org/rest/bundles/0x1f96bc12222641209ad057e762910252/contents/blob/")
    with open("test.json", "wb") as f:
         f.write(testData.content)
#读取数据至DataFrame中
train_df = pd.read_json("train.json").transpose()
test_df = pd.read_json("test.json").transpose()
# 先来查看一下数据,确保没有任何错误!
print ("训练数据和测试数据:", train_df.shape, test_df.shape)
print ("标签的种类: ", train_df.label.unique()) # 查看标签的个数以及标签种类,预计10个类别。
labelName = train_df.label.unique() #全部label列表

#实现文本label 与index的映射 hint : zip dict

label_index_dict = dict(zip(labelName,range(len(labelName))))

#查看label 与index 的映射关系

print(label_index
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值