我正试图使用此库生成加密货币的情绪分数:
https://github.com/uclatommy/tweetfeels/blob/master/README.md
当我使用示例trump
中的代码时,它返回-0.00082536637608123106
的情感得分。
我已将标签更改为以下内容:
btc_feels = TweetFeels(login, tracking=['bitcoin'])
btc_feels.start(20)
btc_feels.sentiment.value
它仍然给我同样的价值。
我安装图书馆时确实注意到了一些奇怪的东西。
根据说明:
如果出于某种原因,PIP没有安装VADER词典:
Python 3-m nLTK.下载器VADEL词典
当我运行这个时,我得到:
/anaconda/lib/python3.6/runpy.py:125:运行时警告:
导入包“nltk”后在sys.modules中找到“nltk.downloader”,
但在执行“nltk.downloader”之前;这可能会导致
不可预测的行为警告(运行时警告(msg))
这可能是它看起来不起作用的原因吗?
最佳答案
默认情况下,tweetsfeel会在当前目录中创建一个数据库。下一次启动程序时,它将继续使用同一个数据库,并从中断的地方开始。我不知道tweetfeels是如何处理你更改它的关键字的,但是tweetfeels的这种行为可能是个问题。解决方案是对不同的关键字使用不同的数据库,然后将数据库的位置传递给tweetsfeel构造函数。
我不太了解tweetsfeel,它听起来很有趣,所以我下载了这个项目,我有一个工作脚本,可以对我给出的任何关键字执行情感分析。我可以在这里添加一个脚本的副本,如果你仍然有问题让tweetsfeel工作。
编辑:这里是我正在使用的脚本
我目前有以下问题与脚本。
1)我得到了一些与您得到的错误不同的错误,但是我可以通过将pip中的tweetfeels库替换为Github存储库中的最新代码来解决这个问题。
2)如果一个情绪值没有被报告,有时tweetsfeel无法完全停止,而没有强制发送ctrl+c键盘中断。
import os, sys, time
from threading import Thread
from pathlib import Path
from tweetfeels import TweetFeels
consumer_key = 'em...'
consumer_secret = 'aF...'
access_token = '25...'
access_token_secret = 'd3...'
login = [consumer_key, consumer_secret, access_token, access_token_secret]
try:
kw = sys.argv[1]
except IndexError:
kw = "iota"
try:
secs = int(sys.argv[2])
except IndexError:
secs = 15
for arg in sys.argv:
if (arg == "-h" or arg == "--help"):
print("Gets sentiment from twitter.\n"
"Pass in a search term, and how frequently you would like the sentiment recalculated (defaults to 15 seconds).\n"
"The keyword can be a comma seperated list of keywords to look at.")
sys.exit(0)
db = Path(f"~/tweetfeels/{kw}.sqlite").expanduser()
if db.exists():
print("existing db detected. Continueing from where the last sentiment stream left off")
else:
#ensure the parent folder exists, the db will be created inside of this folder
Path(f"~/tweetfeels").expanduser().mkdir(exist_ok=True)
feels = TweetFeels(login, tracking=kw.split(","), db=str(db))
go_on = True
def print_feels(feels, seconds):
while go_on:
if feels.sentiment:
print(f"{feels.sentiment.volume} tweets analyzed from {feels.sentiment.start} to {feels.sentiment.end}")
print(f'[{time.ctime()}] Sentiment Score: {feels.sentiment.value}')
print(flush=True)
else:
print(f"The datastream has not reported a sentiment value.")
print(f"It takes a little bit for the first tweets to be analyzed (max of {feels._stream.retry_time_cap + seconds} seconds).")
print("If this problem persists, there may not be anyone tweeting about the keyword(s) you used")
print(flush=True)
time.sleep(seconds)
t = Thread(target=print_feels, kwargs={"feels":feels,"seconds":secs}, daemon=True)
print(f'Twitter posts containing the keyword(s) "{kw}" will be streamed, and a new sentiment value will be recalculated every {secs} seconds')
feels.start()
time.sleep(5)
t.start()
try:
input("Push enter at any time to stop the feed...\n\n")
except (Exception, KeyboardInterrupt) as e:
feels.stop()
raise e
feels.stop()
go_on = False
print(f"Stopping feed. It may take up to {feels._stream.retry_time_cap} for the feed to shut down.\n")
#we're waiting on the feels thread to stop
关于python - Tweet Feel:无论标签如何,始终返回相同的情感分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48030920/