【问题标题】:Posting data to Sentiment140 for Sentiment Analysis将数据发布到 Sentiment140 以进行情绪分析
【发布时间】:2018-05-10 01:27:17
【问题描述】:

我的目标是对从 twitter 收集的数据执行至少 3 种不同类型的情感分析。

我正在尝试对使用 Python 和 Twitter API 收集并存储在数据库(MySQL 和 PhpMyAdmin)中的推文执行情绪分析。我遇到了 3 个问题:

  1. 执行情绪分析的 API 并不多(任何建议都会有所帮助)
  2. 我正在尝试连接到 Sentiment140 API,但我的代码返回以下错误

TypeError: POST 数据应该是字节、字节的可迭代或文件对象。它不能是 str 类型。

  1. 是否有一种通用方法可以将 Sentiment140 API(或任何其他情绪分析 API)与我的 MySQL 数据库连接以分析数据库中的文本列?

Python

import urllib.request
import json

url = 'http://www.sentiment140.com/api/bulkClassifyJson'
values = {'data': [{'text': 'I love Titanic.'}, {'text': 'I hate Titanic.'}]} 

data = json.dumps(values) # instead of urllib.urlencode(values)
response = urllib.request.urlopen(url, data)
page = response.read()

所有帮助将不胜感激,谢谢!

【问题讨论】:

  • 请告诉我您正在使用的python 的版本。 2个还是3个?
  • 我正在使用 python 3

标签: python mysql twitter sentiment-analysis naivebayes


【解决方案1】:

urllib docs 中所述,您必须先将 strs 转换为字节,然后再将其提供给 urlopen:

请注意,从 urlencode 输出的参数在作为数据发送到 urlopen 之前被编码为字节。

您可以通过在data 上调用.encode() 来做到这一点:

import urllib.request
import json

url = 'http://www.sentiment140.com/api/bulkClassifyJson'
values = {'data': [{'text': 'I love Titanic.'}, {'text': 'I hate Titanic.'}]} 

data = json.dumps(values)
response = urllib.request.urlopen(url, data=data.encode("utf-8"))
page = response.read()

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2015-09-23
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多