需要帮助管道Python twitter脚本到NLP Bash脚本(Sed,grep等…)

2024-05-15 02:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我对编程非常陌生,几周前才开始。如果我能得到一些帮助,我将不胜感激。提前谢谢!

  1. 我的python脚本(流)_推特.py)每分钟从twitter上传200-300条tweet。脚本位于“/home/computer/Twitter/examples/stream”中_推特.py'

  2. 我有一个NLP(自然语言处理)bash脚本,它分析句子并在bash上打印出来。NLP脚本(corenlp.sh公司)位于“/家/电脑/斯坦福德”/corenlp.sh公司'

  3. 如果我创建了一个新的bash脚本,如何将tweet传输到NLP中?这个脚本看起来怎么样?

  4. 我的python tweet脚本(流)_推特.py)需要以utf-8格式输出文本,如何更改脚本才能这样做。

  5. NLP需要一段时间来加载,如果tweets正在冲进NLP,而NLP还没有加载,它会影响我的脚本吗?如果是的话,我能做什么?怎么做?

  6. 看看这条小溪_推特.py脚本

     from TwitterAPI import TwitterAPI
     TRACK_TERM = ‘keyword1,keyword2,keyword3'
     CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     ACCESS_TOKEN_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
     api = TwitterAPI(CONSUMER_KEY,
                      CONSUMER_SECRET,
                      ACCESS_TOKEN_KEY,
                      ACCESS_TOKEN_SECRET)
     r = api.request('statuses/filter', {'track': TRACK_TERM})
     for item in r:
         print(item['text'] if 'text' in item else item)
    
  7. 看看NLP脚本

     OS=`uname`
     # Macs (BSD) don't support readlink -e
     if [ "$OS" == "Darwin" ]; then
         scriptdir=`dirname $0`
     else
         scriptpath=$(readlink -e "$0") || scriptpath=$0
         scriptdir=$(dirname "$scriptpath")
     fi
     echo java -mx3g -cp \"$scriptdir/*\"            edu.stanford.nlp.pipeline.StanfordCoreNLP $*
     java -mx3g -cp "$scriptdir/*" edu.stanford.nlp.pipeline.StanfordCoreNLP $*
    

Tags: keypy脚本bashtokensecretnlpaccess
1条回答
网友
1楼 · 发布于 2024-05-15 02:21:37

在Linux shell上,可以通过管道将一个命令的输出作为另一个命令的输入,如下所示:

$ program_a | program_b

所以在你的例子中,这看起来是这样的:

$ python /home/computer/Twitter/examples/stream_tweets.py | /home/computer/Standford/corenlp.sh

但是为了使这项工作正常,您可能需要更改corenlp.sh,以便调用java StanfordCoreNLP程序的最后一个命令在本例中从管道(/dev/stdin)读取输入。因此,将最后一行改为:

java -mx3g -cp "$scriptdir/*" edu.stanford.nlp.pipeline.StanfordCoreNLP $* < /dev/stdin

为了使python脚本打印UTF-8编码的字符串,您需要将python脚本最后更改为:

import sys
for item in r:
    text = item['text'] if 'text' in item else item
    sys.stdout.buffer.write(text.encode('utf-8'))
    sys.stdout.buffer.write('\n')

我不认为当Java程序需要一些时间来启动时会有问题,我认为python脚本会被阻塞,直到管道缓冲区被清空。你知道吗

相关问题 更多 >

    热门问题