在python

时间:2015-08-18 07:57:44

标签: python twitter nlp nltk sentiment-analysis

目标:在句子级别对推文中出现的情绪进行分类,这意味着我不想在句子中搜索正面或负面的单词,而是要在整体上下文中确定推文的意见。此练习的动机基于此research paper

到目前为止我做了什么?鉴于以下代码,我已经能够清理推文并将它们写入文件。

我现在想做什么?如何在python中使用nlp包将其应用于已清理的推文文件,并在句子级别提取推文的情绪。作为python的新手,我正在开展这项活动,以加深我对编程语言的理解。

原始推文样本如下所示

pohpoh001,#changepenang #1MDB: Logik penangkapan Justo yang gagal difahami      

pro-Tun M: Kenyataan bekas Menteri Penerangan... http://t.co/aFRdliKMLw �
LimCaiHin,#changepenang #1MDB: Logik penangkapan Justo yang gagal difahami  

pro-Tun M: Kenyataan bekas Menteri Penerangan... http://t.co/4kjdCZN33A �
FarahinKafli,Sedangkan adik aku 10 tahun pun tahu pasal 1MDB. Malulah pokjib oi.
GlDulford,"Jika sokong Najib, isytihar juga sokong 1MDB - Tun �"
NA,"Better follow debat ""apa disebalik 1mdb"""

注意:这些推文是在Bahasa Melayu(马来语)中。我知道我将它与AFINN字典进行比较,后者是英文的,我的结果不正确。但这不是一个问题,因为它现在对我来说是一个学习练习。

当我执行以下代码时

import re,sys,os
fileAFINN = '/home/ashish/PyCharm_proj/data_cleaning/AFINN-111.txt'
outputFile=open("/home/ashish/PyCharm_proj/data_cleaning/clean_tweet_scored.csv","w")

def file_to_process():
    user_input = raw_input("Enter the path of your file (use /): ")
    assert os.path.exists(user_input), "I did not find the file at, "+str(user_input)
    the_file = open(user_input,'r+')
    print("Hooray we found your file!")
return the_file

def cleaner(file_inp,outputFile):
    expression=r"(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"
    afinn = dict(map(lambda (w, s): (w, int(s)), [ws.strip().split('\t') for ws in open(fileAFINN)]))
    pattern_split = re.compile(r"\W+")
    print "File processing started"
    with file_inp as myfile:
        for line in file_inp:
            line = line.lower()
            line_data = line.split(' ') # Split the line into a list, separated by spaces
            line=re.sub(expression," ",line)
            words = pattern_split.split(line.lower())
        outputFile.write(line+'\n') # write the cleaned tweets in outputFile

file_inp=file_to_process()
cleaned_tweets=cleaner(file_inp,outputFile)
print("File cleaning & analysis completed")
file_inp.close()
outputFile.close()

输出就像;

pohpoh001  changepenang  1mdb  logik penangkapan justo yang gagal difahami pro tun m  kenyataan bekas menteri penerangan          
limcaihin  changepenang  1mdb  logik penangkapan justo yang gagal difahami pro tun m  kenyataan bekas menteri penerangan          
farahinkafli sedangkan adik aku 10 tahun pun tahu pasal 1mdb  malulah pokjib oi  
gldulford  jika sokong najib  isytihar juga sokong 1mdb   tun na  better follow debat   apa disebalik 1mdb

问题1:如何将NLTK包应用于outputFile以便在句子级别获得情绪,或者您是否建议使用NLP的任何其他包?

问题2:注意outputFile每个句子中的第一个单词是用户名,如(pohpoh001,limcaihin,farahinkafli,gldulford)。如何以编程方式在用户名后添加逗号,以便将outputFile写为用户名,推文?

0 个答案:

没有答案