我正在使用NLTK包,它有一个函数可以告诉我给定的句子是肯定的、否定的还是中性的:
from nltk.sentiment.util import demo_liu_hu_lexicon
demo_liu_hu_lexicon('Today is a an awesome, happy day')
>>> Positive
问题是,该函数没有return语句-它只是将“Positive”、“Negative”或“Neutral”输出到stdout。它隐式返回的是一个NoneType
对象。(Here是函数的源代码。)
有什么方法可以捕获这个输出(除了在我的机器上弄乱NLTK源代码之外)?在
TL;DR
demo_liu_hu_lexicon
函数是演示如何使用opinion_lexicon
的函数。用于测试,不应直接使用。在很长时间内
让我们看看这个函数,看看如何重新创建一个类似的函数https://github.com/nltk/nltk/blob/develop/nltk/sentiment/util.py#L616
好吧,导入存在于函数内部是一个奇怪的用法,但这是因为它是一个用于简单测试或文档的演示函数。在
而且,
treebank.TreebankWordTokenizer()
的用法相当奇怪,我们可以简单地使用nltk.word_tokenize
。在让我们移出导入并将
^{pr2}$demo_liu_hu_lexicon
重写为simple_sentiment
函数。在接下来,我们看看
^{3}$功能
x
和y
为以后的一些绘图而初始化,所以我们忽略它。在如果我们进一步深入函数:
循环只需遍历每个标记并检查单词是否在正/负词典中。
最后,它检查正负字数并返回标记。
现在让我们看看我们是否可以有一个更好的
simple_sentiment
函数,现在我们知道了demo_liu_hu_lexicon
的作用。在无法避免步骤1中的标记化,因此我们有:
第2-5步有一个懒散的方法,就是复制并粘贴并更改
print()
->;return
现在,你有一个功能,你可以做任何你想做的事。在
顺便说一句,这个演示真的很奇怪。。在
当我们看到一个正的单词加1,当我们看到一个否定的单词时,我们加
-1
。 当pos_words > neg_words
时,我们说某些东西是正的。在这意味着整数列表的比较遵循一些可能没有语言或数学逻辑的python序列比较(参见What happens when we compare list of integers?)
这样使用:
^{pr2}$相关问题 更多 >
编程相关推荐