我正在使用 spaCys NLP 模型来计算输入数据的 POS,以便我的马尔可夫链在语法上可以更加正确,就像此处找到的 python markovify 库中的示例一样。然而,spaCy 分割标记的方式使得重建它们变得困难,因为某些语法元素也被分割,例如"don't"变成["do", "n't"]。这意味着您不能再仅通过空格重新连接生成的马尔可夫链,而是需要知道标记是否组成一个单词。
我认为令牌的is_left_punct和is_right_punct属性可能与此相关,但似乎并不相关。我当前的代码仅考虑了PUNCT令牌,但do n't问题仍然存在。
是否有标记的属性可以用来告诉将句子连接在一起的方法何时省略空格或其他方式来了解这一点?
我正在尝试设置一个程序,它将从RabbitMQ中的每个队列中消耗,并根据某些消息运行某些脚本.不幸的是,当添加消费者时,如果它遇到单个错误(即没有找到超时或队列),则整个通道都已死亡.此外,队列来来去去,所以它必须经常刷新队列列表.这甚至可能吗?到目前为止,这是我的代码.
import pika
import requests
import sys
try:
host = sys.argv[1]
except:
host = "localhost"
def get_queues(host="localhost", port=15672, user="guest", passwd="guest", virtual_host=None):
url = 'http://%s:%s/api/queues/%s' % (host, port, virtual_host or '')
response = requests.get(url, auth=(user, passwd))
return response.json()
queues = get_queues(host)
def get_on_message(queue):
def on_message(channel, method_frame, header_frame, body):
print("message from", queue)
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
return on_message
connection = pika.BlockingConnection(pika.ConnectionParameters(host))
channel = connection.channel()
for queue in queues:
print(channel.is_open)
try:
channel.basic_consume(get_on_message(queue["name"]), queue["name"])
print("queue added",queue["name"])
except Exception as e:
print("queue failed",queue["name"])
sys.exit()
try:
channel.start_consuming()
except KeyboardInterrupt: …Run Code Online (Sandbox Code Playgroud)