def postprocess(sent): morphs = api.morph(sent)['morphs'] query = list() for morph in morphs: query.append(u'{}:{}'.format(morph['norm_surface'], morph['pos'])) morphs = api.rewrite_morph(rewrite_rule, query)['morphs'] sent = u'' for morph in morphs[1:-1]: sent += u':'.join(morph.split(u':')[:-1]) return sent
def preprocess(text): #TODO とりあえず最初の文の最初の名詞を利用, なければ最初の形態素 sentences = api.sentences(text)['sentences'] morphs = api.morph(sentences[0])['morphs'] for morph in morphs: if '名詞' in morph['pos']: seed = morph break else: seed = morphs[1] return seed
def generate_seed(text): max_length = 0 for sentence in api.sentences(text)['sentences']: morphs = api.morph(sentence)['morphs'] for morph in morphs: if u'固有' in morph['pos'] or u'名詞' in morph['pos']: seed = morph break else: seed = morphs[1] return seed
def scenario_based(text): sent = api.sentences(text) text = [] for s in sent['sentences']: morphs = api.morph(s) query = list() for morph in morphs['morphs']: query.append(u'{}:{}'.format(morph['surface'], morph['pos'])) texts = api.trigger(scenario_file,query) for t in texts['texts']: text.append(t) if len(text)>0: r = random.randint(0,len(text)-1) return text[r] return None
print json.dumps(reps, ensure_ascii=False, indent=4) for rep in reps["replies"]: print "======================================================" if reps["grade"] == 0: scenario_file = "scenario_c09.txt" elif reps["grade"] == 1: scenario_file = "scenario_c09.txt" else: scenario_file = "scenario_c09.txt" sent = api.sentences(rep["text"]) text = [] for s in sent["sentences"]: print "-------------------------------------------------------" print s morphs = api.morph(s) print json.dumps(morphs, ensure_ascii=False, indent=4) query = list() for morph in morphs["morphs"]: query.append(u"{}:{}".format(morph["surface"], morph["pos"])) print json.dumps(query, ensure_ascii=False, indent=4) texts = api.trigger(scenario_file, query) print json.dumps(texts, ensure_ascii=False, indent=4) for t in texts["texts"]: text.append(t) print t if len(text) > 0: r = random.randint(0, len(text) - 1) print "++++++++++++++++++++++++++++++++++++++" print str(len(text)) print text[r]
reply_text = u'' for morph in api.markov_chain(seed)['morphs'][1:-1]: reply_text += u':'.join(morph.split(u':')[:-1])#morph.split(':')[0] return postprocess(reply_text) def reply_one(mention_id, user_name, text): reply_text = twitter_based(text) api.send_reply(mention_id, user_name, reply_text) if __name__ == '__main__': #api = get_api() api = api.API('https://52.68.75.108', 'secret', 'js2015cps') #rewrite_rule = 'team2_rewrite_{}.txt'.format(current_state) rewrite_rule = 'rule_test.txt' text = "どうして人間は魂の在処にこだわるの?" for morph in api.morph(text)['morphs']: print morph['norm_surface'] + "\t" + morph['pos'] print markov_based(text) print twitter_based(text) #result = api.get_reply() #current_state = result['grade'] #replies = result['replies'] #for sentence in api.sentences('おはよう。こんにちは。')['sentences']: # print sentence #for tweet in api.get_reply()['replies']: # print tweet['mention_id'] # print tweet['user_name'] # print tweet['text']