目标:在句子级别对推文中出现的情绪进行分类,这意味着我不想在句子中搜索正面或负面的单词,而是要在整体上下文中确定推文的意见。此练习的动机基于此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写为用户名,推文?