【Natural Language Processing】跨语言情感分析(NLP&CC 2013)

本文介绍了NLP&CC 2013跨语言情感分析任务,涉及数据预处理、特征提取(词汇特征、主题模型、doc2vec)和机器学习分类(SGDClassifier、GradientBoostingClassifier)。实验结果显示正确率超过70%,但验证集表现优于测试集,提示未来改进方向。
摘要由CSDN通过智能技术生成

一、任务介绍

        本任务是NLP&CC 2013的跨语言情感分析,主要是在英文资源的前提下,对测试集内的每条中文评论进行倾向性分类。

        本任务的所有数据均由主办方提供,主要包含三部分:

        ①  英文标注数据和英文情感词典;

        ②  中文未标注语料;

        ③  中文测试集。

        数据均采用XML格式, UTF-8 编码存储。除组织方提供的数据外,不得使用任何中英文标注数据、中英文未标注数据和中英文情感词典等资源。不得人工干预评测结果,不得对测试集进行人工标注。

二、实验环境

        Anaconda2-4.3.1(Python2.7),genism。

三、数据预处理

3.1  解析XML

        主要是对XML原文件进行解析,去除英文标注语料的标点符号,同时对于过长的英文句子只取前100个词汇。

对应代码:ENProcess.py

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import codecs
import xml.etree.ElementTree as ET
from nltk.tokenize import RegexpTokenizer

def nltkProcess(sentence):
    if not sentence:
        print("Empty sentence in nltkProcess()!")

    tokenizer = RegexpTokenizer(r'\w+')
    tokens = tokenizer.tokenize(sentence)
    #tokens = [w.lower() for w in tokens ]
    return tokens

def process(inputFile,outputfile):
    result= codecs.open(outputfile, "w", "utf-8")
    tree = ET.parse(inputFile)
    root = tree.getroot()
    for i,item in enumerate(root.findall('item')):
        summary = item.find('summary').text
        text = item.find('text').text
        label=item.find('polarity').text
        texts = summary + "," + text
        result.write(str(label) + '\t')
        results = nltkProcess(texts)
        for j,word in enumerate(results):
            if j>100:
                continue
            result.write(word + " ")
        result.write("\n")
        print i
    result.close()


if __name__ == '__main__':
    #process('../NLPCC2013/RawData/Train_EN/book/train.data', '../NLPCC2013/Process/TrainBookEN.data')
    #process('../NLPCC2013/RawData/Train_EN/music/train.data', '../NLPCC2013/Process/TrainMusicEN.data')
    process('../NLPCC2013/RawData/Train_EN/dvd/train.data', '../NLPCC2013/Process/TrainDvdEN.data')

3.2  谷歌翻译中文语料

        主要是对XML原文件进行解析后调用谷歌翻译进行翻译成英文,再对所得到的未标注语料去除标点符号。

        对应代码:GoogleTranslate.py、CNtoENProcess.py

        可见另外一篇博客:python爬虫Google翻译的实现

四、实验方法

4.1  提取特征

        ①词汇特征,通过观察发现评论的句子里含有大量的good和bad单词,并且通常分别对应的标注是positive和negative,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值