我想做的只是找到任何给定字符串的情绪(积极/消极/中性)。在研究中,我遇到了斯坦福大学的NLP。但可悲的是它在爪哇。对于如何使它适用于Python有什么想法吗?
当前的最新版本(2020-05-25)是4.0.0:
wget https://nlp.stanford.edu/software/stanford-corenlp-4.0.0.zip https://nlp.stanford.edu/software/stanford-corenlp-4.0.0-models-english.jar
如果没有wget
,则可能有curl
:
curl https://nlp.stanford.edu/software/stanford-corenlp-4.0.0.zip -O https://nlp.stanford.edu/software/stanford-corenlp-4.0.0-models-english.jar -O
如果其他一切都失败,请使用浏览器;-)
unzip stanford-corenlp-4.0.0.zip
mv stanford-corenlp-4.0.0-models-english.jar stanford-corenlp-4.0.0
cd stanford-corenlp-4.0.0
java -mx5g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -timeout 10000
备注:
pip install pycorenlp
pip install git+https://github.com/sam-s/py-corenlp.git
from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')
res = nlp.annotate("I love you. I hate him. You are nice. He is dumb",
properties={
'annotators': 'sentiment',
'outputFormat': 'html" target="_blank">json',
'timeout': 1000,
})
for s in res["sentences"]:
print("%d: '%s': %s %s" % (
s["index"],
" ".join([t["word"] for t in s["tokens"]]),
s["sentimentValue"], s["sentiment"]))
0: 'I love you .': 3 Positive
1: 'I hate him .': 1 Negative
2: 'You are nice .': 3 Positive
3: 'He is dumb': 1 Negative
sentimentvalue
可以用来估计整个文本的情绪。中性
(2)和否定
(1)之间,范围从非常否定
(0)到非常肯定
(4)之间,这似乎相当罕见。kill$(lsof-ti tcp:9000)
来停止服务器。9000
是默认端口,您可以在启动服务器时使用-port
选项更改它。超时
(以毫秒为单位)。foment
只是一个注释符,还有更多的注释符,您可以请求多个注释符,并用逗号分隔它们:'annotators':'fomentity,lemma'
。ps.我不敢相信我添加了第9个答案,但是,我猜,我不得不这样做,因为现有的答案都没有帮助我(之前的8个答案中的一些现在被删除了,其他的一些被转换成评论)。