利用Sentiwordnet进行文本情感分析(简)
1. 简介
利用python中的NLTK包对英文进行分词,得到词频,标注词性,得到单词得分,最后可再根据实际情况计算文本情感分。注:分词只能得到一个个单词,不能得到短语。(我的第一篇blog!!!)
2. 下载NLTK包和它内部的词典
-
使用pip下载nltk
pip install nltk -
利用nltk下载词典
先在代码行输入:import nltk nltk.download()
弹出下载框,可选all,一般下载book就够用了,不够的话在运行代码时会弹出错误提示你缺什么,再下载也可以。
3. 全过程代码详解
1. 导入所需包,函数
import pandas as pd #著名数据处理包
import nltk
from nltk import word_tokenize #分词函数
from nltk.corpus import stopwords #停止词表,如a,the等不重要的词
from nltk.corpus import sentiwordnet as swn #得到单词情感得分
import string #本文用它导入标点符号,如!"#$%&
2. 分词
-
导入文本
text = 'Nice quality, fairly quiet, nice looking and not too big. I bought two.'
-
载入停止词
stop = stopwords.words("english") + list(string.punctuation) >>> stop[:5] ['i', 'me', 'my', 'myself', 'we']
-
根据停止词表分词
>>>[i for i in word_tokenize(str(text).lower()) if i not in stop] ['nice', 'quality', 'fairly', 'quiet', 'nice', 'looking', 'big', 'bought', 'two']
``
3. 计数,给予词性标签
ttt = nltk.pos_tag([i for i in word_tokenize(str(text[77]).lower()) if i not in stop])
>>> ttt
[('nice', 'JJ'), ('quality', 'NN'), ('fairly', 'RB'), ('quiet', 'JJ'), ('nice', 'JJ'), ('looking', 'VBG'), ('big', 'JJ'), ('bought', 'VBD'), ('two', 'CD')]
>>> word_tag_fq = nltk.FreqDist(ttt)
>>> word_tag_fq
FreqDist({
('nice', 'JJ'): 2,