【发布时间】:2016-09-27 12:25:42
【问题描述】:
尝试使用模式创建主题对象极性图。
from pattern.en import parse,sentiment
print sentiment('The movie attempts to be surreal by incorporating various time paradoxes')
(0.125, 0.75)
from pattern.en import sentiment
print sentiment("He is good.")
(0.7, 0.6000000000000001)
from pattern.en import sentiment
print sentiment("The movie attempts to be surreal by incorporating various time paradoxes. He is good.")
(0.31666666666666665, 0.7000000000000001)
据我了解,分析会计算两个句子的极性并返回归一化值。是否可以逐行计算分数并返回,像这样
from pattern.en import sentiment
print sentiment("The movie attempts to be surreal by incorporating various time paradoxes. He is good.")
(0.125, 0.75)
(0.7, 0.6000000000000001)
第二部分:我希望使用 numpy 和 amtplotlib 将这一系列 x1,y1 值映射到散点图。有可能吗?
以您的代码为指导,我尝试通过添加模态值来改进现有代码。但我面对
编辑 1
for sentence in sentences:
modality(sentence)
#mind the difference for the last sentence, which contains two dots.
for sentence in complete_text.split("."):
modality(sentence)
b = np.array([ modality(sentence) for sentence in complete_text.split(".") ])
print "Modality: ", b[:,0]
输出错误
print "Modality: ", b[:,0]
IndexError: too many indices for array
我正在尝试根据在硬编码值时能够实现的模态范围更改标记符号。尝试将您的方法扩展到许多句子的模态。
编辑 2
图表看起来不错,但其中一项重要功能不存在。我需要单击标记点并希望返回单击所针对的特定句子,以便分析选择的特定句子。缩小到 onclick(事件)以返回句子。
fig = plt.figure()
ax = fig.add_subplot(111)
def onclick(event):
print('button=%d,' %(event.button))
cid = fig.canvas.mpl_connect('button_press_event', onclick)
不确定如何连接特定标记的调用语句?这完成了我尝试极性分析的最后一个缺失部分。
编辑 3
我非常喜欢用红色表示消极情绪,用绿色表示积极情绪,用标记表示四种形式。我使用以下功能修改了您的代码以满足需要
print "polarities: ", a[:,0]
print "subjectivities: ", a[:,1]
print "modalities: ", a[:,2]
s = np.array(a[:,2])
r = np.array(a[:,1])
############ Plotting ############
def markers(s):
if s > "0.5" and s< "1":
return 'o'
elif s > "0" or s < ".5":
return 'x'
elif s > "-.5" or s < "0":
return 'v'
else:
return '^'
def colors(r):
if r > "0" and r < "1":
return "g"
elif r < "0" or r > "-1":
return "r"
else:
return "r"
fig=plt.figure()
ax=fig.add_subplot(111)
ax.scatter(a[:,0], a[:,1], marker = markers(s), color= colors(r), s=100, picker=5)
但是对于所有变体,图表都会返回红色的 x 标记。不知道为什么?
编辑 4:
ax=fig.add_subplot(111)
ax.scatter (p[(p>0.0)&(p<=1)&(m>0.5)&(m<=1)], s[(p>0.0)&(p<=1)&(m>0.5)&(m<=1)], marker = "o", color= 'g', s=100, picker=5)
ax.scatter (p[(p>0.0)&(p<=1)&(m>0.0)&(m<=0.5)], s[(p>0.0)&(p<=1)&(m>0.0)&(m<=0.5)], marker = "v", color= 'g', s=100, picker=5)
ax.scatter (p[(p>0.0)&(p<=1)&(m>-0.5)&(m<=0.0)], s[(p>0.0)&(p<=1)&(m>-0.5)&(m<=0.0)], marker = "s", color= 'g', s=100, picker=5)
ax.scatter (p[(p>0.0)&(p<=1)&(m>=-1.0)&(m<=-0.5)], s[(p>0.0)&(p<=1)&(m>=-1.0)&(m<=-0.5)], marker = "x", color= 'g', s=100, picker=5)
ax.scatter (p[(p>=-1.0)&(p<=0)&(m>0.5)&(m<=1)], s[(p>=-1.0)&(p<=0)&(m>0.5)&(m<=1)], marker = "o", color= 'r', s=100, picker=5)
ax.scatter (p[(p>=-1.0)&(p<=0)&(m>0.0)&(m<=0.5)], s[(p>=-1.0)&(p<=0)&(m>0.0)&(m<=0.5)], marker = "v", color= 'r', s=100, picker=5)
ax.scatter (p[(p>=-1.0)&(p<=0)&(m>-0.5)&(m<=0.0)], s[(p>=-1.0)&(p<=0)&(m>-0.5)&(m<=0.0)], marker = "s", color= 'r', s=100, picker=5)
ax.scatter (p[(p>=-1.0)&(p<=0)&(m>=-1.0)&(m<=-0.5)], s[(p>=-1.0)&(p<=0)&(m>=-1.0)&(m<=-0.5)], marker = "x", color= 'r', s=100, picker=5)
ax.set_xlabel("polarity")
ax.set_ylabel("subjectivity")
def onpick(event):
index = event.ind
for i in index:
print i, sentences[i]
cid = fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
不确定为什么 def on pick 没有给出相关的句子,但总是在第一句话。
【问题讨论】:
-
您不应该通过删除问题的主要部分来编辑问题。其他人现在应该如何理解这个问题?
-
试图合并问题以使其简洁。采取的建议。幸运地找到了丢失的部分。
-
整合会有所帮助,是的。但是你不应该破坏编辑的结构,否则没有人可以跟随。现在,请参阅我的回答中的编辑 4。
标签: matplotlib nlp nltk