def talker() : tagger = MeCab.Tagger("-Ochasen") before = '' ss = u'' ss2 = u'' pub = rospy.Publisher('mecab_res', mecab, queue_size = 10) rospy.init_node('mecab', anonymous=True) r = rospy.Rate(10) msg = mecab() while True: f = open('/home/yhirai/mecab/test2.txt') line = f.readline() while line: line2 = line.rstrip() line = f.readline() f.close if before != line2: print line2 node = tagger.parseToNode(line2) while node: msg.word = node.surface m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) msg.part = m.group(0) print "%s %s"% (node.surface,node.feature) time.sleep(0.01) pub.publish(msg) node = node.next before = line2
def talker() : clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsock.connect((host,port)) tagger = MeCab.Tagger("-Ochasen") before = '' ss = u'' ss2 = u'' ok = 0 line2 = '' pub = rospy.Publisher('mecab_res', mecab, queue_size = 1000) rospy.init_node('mecab', anonymous=True) r = rospy.Rate(10) msg = mecab() while True: rcvmsg = clientsock.recv(1024) sf = clientsock.makefile() # for rcvmsg in sf.readlines(): rcvmsg = sf.readline() while rcvmsg != None : # print rcvmsg line = re.search('WORD=\"([^\"]+)\"',rcvmsg) ok1 = re.search('(<RECOGOUT>)',rcvmsg) ok2 = re.search('(</RECOGOUT>)',rcvmsg) if line != None: line2 += line.group(1) print line.group(0) elif ok1 != None: print 'ok' elif ok2 != None: ok = 1 if ok == 1: print line2 node = tagger.parseToNode(line2) msg.all = line2 i = 0 while node: msg.word[i] = node.surface m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) if m == None: m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) msg.part[i] = m.group(1).rstrip(',') print "%s %s"% (node.surface,node.feature) if m.group(1) == '動詞,': msg.part2[i] = m.group(2).rstrip(',') msg.part3[i] = m.group(6).rstrip(',') msg.part4[i] = m.group(7).rstrip(',') elif m.group(1) == '名詞,': msg.part2[i] = m.group(2).rstrip(',') msg.part3[i] = m.group(3).rstrip(',') node = node.next i += 1 msg.number = i-2; pub.publish(msg) ok = 0 line2 = "" rcvmsg = sf.readline()
def talker() : tagger = MeCab.Tagger("-Ochasen") before = '' ss = u'' ss2 = u'' pub = rospy.Publisher('mecab_res', mecab, queue_size = 1000) rospy.init_node('mecab', anonymous=True) r = rospy.Rate(10) msg = mecab() while True: f = open('/home/yhirai/mecab/test2.txt') line = f.readline() while line: line2 = line.rstrip() line = f.readline() f.close if before != line2: print line2 node = tagger.parseToNode(line2) msg.all = line2 i = 0 while node: msg.word[i] = node.surface m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) if m == None: m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) msg.part[i] = m.group(1).rstrip(',') print "%s %s"% (node.surface,node.feature) if m.group(1) == '動詞,': msg.part2[i] = m.group(2).rstrip(',') msg.part3[i] = m.group(6).rstrip(',') msg.part4[i] = m.group(7).rstrip(',') elif m.group(1) == '名詞,': msg.part2[i] = m.group(2).rstrip(',') # if m.group(3) == '人名,': msg.part3[i] = m.group(3).rstrip(',') # msg.part4[i] = m.group(7).rstrip(',') #time.sleep(0.05) node = node.next i += 1 msg.number = i-2; pub.publish(msg) before = line2
def talker() : clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsock.connect((host,port)) tagger = MeCab.Tagger("-Ochasen") before = '' ss = u'' ss2 = u'' ok = 0 line2 = '' pub = rospy.Publisher('mecab_res', mecab, queue_size = 1000) rospy.init_node('mecab', anonymous=True) r = rospy.Rate(10) msg = mecab() while True: """ f = open('/home/yhirai/mecab/test2.txt') line = f.readline() while line: line2 = line.rstrip() line = f.readline() f.close """ rcvmsg = clientsock.readline().strip() # rcvmsg = clientsock.readline() # rcvmsg = rcvmsg.readline().strip print '%s' % (rcvmsg) # line = re.search('WHYPO WORD=?\"(.*)\".*',rcvmsg) line = re.search('WORD=\"([^\"]+)\"',rcvmsg) ok1 = re.search('(<RECOGOUT>)',rcvmsg) ok2 = re.search('(</RECOGOUT>)',rcvmsg) # line2 = line3.group(1) # line2 = line.group(1) # print line.group(1) if line != None: # line2 = re.search('WORD=\"([^\"]+)\",rcvmsg',rcvmsg) # print line.group(1) line2 += line.group(1) print line.group(0) # print rcvmsg elif ok1 != None: print 'ok' elif ok2 != None: # line2 = line2.rstrip() # print line2 ok = 1 # if before != line2: if ok == 2: print line2 node = tagger.parseToNode(line2) msg.all = line2 i = 0 while node: msg.word[i] = node.surface m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) if m == None: m = re.search('(.*,)(.*,)(.*,)(.*,)(.*,)(.*,)',node.feature) msg.part[i] = m.group(1).rstrip(',') print "%s %s"% (node.surface,node.feature) if m.group(1) == '動詞,': msg.part2[i] = m.group(2).rstrip(',') msg.part3[i] = m.group(6).rstrip(',') msg.part4[i] = m.group(7).rstrip(',') elif m.group(1) == '名詞,': msg.part2[i] = m.group(2).rstrip(',') # if m.group(3) == '人名,': msg.part3[i] = m.group(3).rstrip(',') # msg.part4[i] = m.group(7).rstrip(',') #time.sleep(0.05) node = node.next i += 1 msg.number = i-2; pub.publish(msg) ok = 0 line2 = ""