gpt4 book ai didi

python - 用于 python 的斯坦福 nlp

转载 作者:IT老高 更新时间:2023-10-28 20:43:20 24 4
gpt4 key购买 nike

我要做的就是找到任何给定字符串的情绪(正面/负面/中立)。在研究过程中,我遇到了斯坦福 NLP。但遗憾的是它在Java中。关于如何使它适用于 python 的任何想法?

最佳答案

使用 py-corenlp

下载Stanford CoreNLP

此时(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

启动server

cd stanford-corenlp-4.0.0
java -mx5g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -timeout 10000

注意事项:

  1. timeout 以毫秒为单位,我在上面设置为 10 秒。如果向服务器传递巨大的 blob,则应该增加它。
  2. more options ,您可以使用 --help 列出它们。
  3. -mx5g 应该分配足够的memory ,但 YMMV,如果您的盒子功率不足,您可能需要修改该选项。

安装python包

标准包

pip install pycorenlp

是否适用于 Python 3.9,所以您需要这样做

pip install git+https://github.com/sam-s/py-corenlp.git

(另见 the official list)。

使用它

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': '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

注意事项

  1. 您将整个文本传递给服务器,服务器将其拆分为句子。它还将句子拆分为标记。
  2. 情感归因于每个句子,而不是整个文本mean跨句子的sentimentValue可以用来估计整个文本的情绪。
  3. 句子的平均情绪介于 Neutral (2) 和 Negative (1) 之间,范围从 VeryNegative (0)到 VeryPositive (4) 这似乎相当罕见。
  4. 您可以stop the server通过在您启动它的终端上键入 Ctrl-C 或使用 shell 命令 kill $(lsof -ti tcp:9000)9000 是默认端口,您可以在启动服务器时使用 -port 选项更改它。
  5. 如果遇到超时错误,请增加服务器或客户端中的 timeout(以毫秒为单位)。
  6. sentiment只是一个注释器,有many more ,您可以请求多个,用逗号分隔它们:'annotators': 'sentiment,lemma'
  7. 请注意,情绪模型有些特殊(例如,the result is different depending on whether you mention David or Bill)。

附言。我不敢相信我添加了 9th 答案,但是,我想,我不得不这样做,因为现有的答案都没有帮助我(之前的 8 个答案中的一些现在已被删除,其他一些已被删除)转换为评论)。

关于python - 用于 python 的斯坦福 nlp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com