コード例 #1
0
ファイル: markov.py プロジェクト: opuyoshi/chatbot
def main():
    markov = Markov()
    sep = r'[。??!!  ]+'
    filename = sys.argv[1]
    dicfile = '{}.dat'.format(filename)
    if os.path.exists(dicfile):
        markov.load(dicfile)
    else:
        with open(filename, encoding='utf-8') as f:
            sentences = []
            for line in f:
                sentences.extend(re.split(sep, line.strip()))
        for sentence in tqdm.tqdm(sentences):
            if sentence:
                markov.add_sentence(morph.analyze(sentence))
                print('.', end='')
                sys.stdout.flush()
        markov.save(dicfile)
    print('\n')

    while True:
        line = input('> ')
        if not line:
            break
        parts = morph.analyze(line)
        keyword = next(
            (word for word, part in parts if morph.is_keyword(part)), '')
        print(markov.generate(keyword))
コード例 #2
0
    def dialogue(self, text):
        """ユーザーからの入力を受け取り、Responderに処理させた結果を返す。
        呼び出されるたびにランダムでResponderを切り替える。
        入力をDictionaryに学習させる。"""
        chance = randrange(0, 100)
        if chance in range(0, 29):
            self._responder = self._responders['pattern']
        elif chance in range(30, 49):
            self._responder = self._responders['template']
        elif chance in range(50, 69):
            self._responder = self._responders['random']
        elif chance in range(70, 89):
            self._responder = self._responders['markov']
        else:
            self._responder = self._responders['what']

        # print(type(self._responder)) 封印 クラスを見るときに必要だったよ。
        parts = analyze(text)  # 追加
        if isinstance(self._responder, TemplateResponder):
            response = self._responder.response(parts)
        elif isinstance(self._responder, MarkovResponder):
            response = self._responder.response(parts)
        else:
            response = self._responder.response(text)

        # response = self._responder.response(text, parts) #これじゃ見れなかったよ?

        self._dictionary.study(text, parts)  # 変更
        return response
コード例 #3
0
ファイル: chat_data.py プロジェクト: yama-yeah/seq2seq
 def create_encoder_input(self, text):
     tokens = morph.analyze(text, 0)
     words = []
     for word, part in tokens:
         words.append(word)
     input_data = np.zeros((1, len(words)), dtype='float32')
     for t, word in enumerate(words):
         input_data[0][t] = self.index[word]
     return input_data
コード例 #4
0
ファイル: chat_data.py プロジェクト: yama-yeah/seq2seq
 def text2onehot(self, text):
     input_data = copy.deepcopy(self.encoder_input_data)
     text = text.strip()
     i_want_sleep = morph.analyze(text, 1)
     for t, w in enumerate(i_want_sleep):
         print(w)
         # t=time(文字の出た時の要素数)
         # one-hot表現
         input_data[0, t, self.index[w[0]]] = 1.
     return input_data
コード例 #5
0
ファイル: markov.py プロジェクト: k0825/markov_twiter
def markov_twitter(filename):
    markov = Markov()
    sep = r'[.??!!  ]+'
    dicfile = '{}.dat'.format(filename)
    if os.path.exists(dicfile):
        markov.load(dicfile)
    else:
        with open(filename, encoding='utf-8') as f:
            sentences = []
            for line in f:
                sentences.extend(re.split(sep, line.strip()))
        for sentence in tqdm.tqdm(sentences):
            if sentence:
                markov.add_sentence(morph.analyze(sentence))
        markov.save(dicfile)
    print('\n')

    line = '*'
    parts = morph.analyze(line)
    keyword = next((word for word, part in parts if morph.is_keyword(part)),
                   '')
    return markov.generate(keyword)
コード例 #6
0
ファイル: unmo.py プロジェクト: tagty/unmo_flask
    def dialogue(self, text):
        chance = randrange(0, 100)
        if chance in range(0, 39):
            self._responder = self._responders['pattern']
        elif chance in range(40, 69):
            self._responder = self._responders['template']
        elif chance in range(70, 89):
            self._responder = self._responders['random']
        else:
            self._responders = self._responders['what']

        parts = morph.analyze(text)
        response = self._responder.response(text, parts)
        self._dictionary.study(text, parts)
        return response
コード例 #7
0
ファイル: split.py プロジェクト: takahashikoji/ChatBot
    def dialogue(self, text):
        """ユーザーからの入力を受け取り、Responderに処理させた結果を返す。
        呼び出されるたびにランダムでResponderを切り替える。
        入力をDictionaryに学習させる。"""
        chance = randrange(0, 100)
        if chance in range(0, 39):
            self._responder = self._responders['pattern']
        elif chance in range(40, 69):
            self._responder = self._responders['template']
        elif chance in range(70, 89):
            self._responder = self._responders['random']
        else:
            self._responder = self._responders['what']

        parts = morph.analyze(text)
        response = self._responder.response(text, parts)
        self._dictionary.study(text, parts)
        return response
コード例 #8
0
    def dialogue(self, text):
        """ユーザーからの入力を受け取り,Responderに処理させた結果を返す.
        呼び出されるたびにランダムでResponderを切り替える."""
        chance = randrange(0, 100)
        if chance in range(0, 29):
            self._responder = self._responders['pattern']
        elif chance in range(30, 49):
            self._responder = self._responders['template']
        elif chance in range(50, 69):
            self._rensponder = self._responders['random']
        elif chance in range(70, 89):
            self._responder = self._responders['markov']
        else:
            self._responder = self._responders['what']

        parts = morph.analyze(text)
        response = self._responder.response(text, parts)
        self._dictionary.study(text, parts)
        return response
コード例 #9
0
    def dialogue(self, text, markov_training):
        """ユーザーからの入力を受け取り、Responderに処理させた結果を返す。
        呼び出されるたびにランダムでResponderを切り替える。
        入力をDictionaryに学習させる。"""
        chance = randrange(0, 100)
        chance = 80
        if chance in range(0, 29):
            self._responder = self._responders['pattern']
        elif chance in range(30, 49):
            self._responder = self._responders['template']
        elif chance in range(50, 69):
            self._responder = self._responders['random']
        elif (chance in range(70, 89)) or (markov_training==1):
            self._responder = self._responders['markov']
        else:
            self._responder = self._responders['what']

        parts = analyze(text)
        response = self._responder.response(text, parts)
        self._dictionary.study(text, parts)
        return response
コード例 #10
0
 def study(self, text, parts):
     """ランダム辞書、パターン辞書をメモリに保存する。"""
     self.study_random(text)
     self.study_pattern(text, morph.analyze(text))
     self.study_template(parts)