任务: NLPCC2013跨语言情感分类(英语->中文)
环境: Ubuntu服务器(4个英特尔(R)至强(R)CPU E5-2609 v3@1.90GHz),Anacanda2.4(64位),python2.7
基本方法: (1)中文支持向量机分类; (2)英文SVM分类; (3)英文SVM自学
评估标准: 准确性
准确性= #system_correct / #system_total
其中#system_correct指示准确分类的评论数,而#system_total指示测试集中的评论总数.
2. 数据预处理
主要包括XML源文件解析,语料库翻译和特殊符号的删除.
(1)解析XML
所需模块:
from xml.etree import ElementTree as ET #引入解析xml文件的模块
importre
importgTrans
详细代码: googleTranslate.extractXMLEnglishText()
(2)调用google Translator API进行翻译
培训数据从中文翻译成英文,测试数据从中文翻译成英文. 翻译完成后,每个注释都有两种表示形式: 中文和英文.
所需模块:
importre
importstring
importurllib,urllib2 #引入接入网络接口API的模块
importgTrans
详细代码: googleTranslate.translate(文本,f,t)
参数说明: text是输入文本,f是原始语言,t是目标语言
(3)删除标点符号
语料库中有很多符号会影响分类效果,因此需要单独删除.
详细代码: googleTranslate.delPunctuationStr(str)
3. 模型训练
def subClassifier(language):
#合并同语言的训练数据,提取训练数据,代码省略
#classifier() 训练模型
classifier(train_data, train_target,test_data, test_target, language)
调用模块: 调用python的机器学习模块sklearn并使用pipline简化该过程.
算法: 朴素贝叶斯,支持向量机,随机森林.
(1)英语分类器
def classifier(train_data, train_target, test_data, test_target, ‘english’)
培训数据: 标记为英语的语料库+少量标记为中文的语料库翻译为英语标记为语料库
测试数据: 将未标记的中文测试语料库翻译成英语语料库
参数设置:
以SVM为例:
text_clf_svm = Pipeline([('vect', CountVectorizer(stop_words ='english')),
('tfidf', TfidfTransformer()),
('clf', svm.SVC( C=1,kernel = 'linear')),
])
(2)中文分类器
def classifier(train_data, train_target, test_data, test_target, ‘chinese’)
训练数据: 将带注释的英语语料翻译成中文带注释的语料+少量带注释的中文带语
测试数据: 未标记的中文测试语料
参数设置: 与(1)相同
(3)自学习分类器
def coTrain(train_data_list, train_target_list, iternum, language)
广州及时雨私家侦探(广州本地私家侦探公司)
微信:185-2064-4544
电话:185-2064-4544
地址:广州市天河区