BOT的认识:
- QA BOT:
- 问答机器人,有明确的目标,能够准确地返回结果
- 通过信息检索的方法完成
- TASK BOT:
- 任务机器人,通过机器人去完成具体的事情
- 语音转文本
- 意图识别、文本分类
- 槽位填充,
- CHAT BOT:
- 闲聊机器人,没有明确的目标
第一步 分词
str.strip([chars]);Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符
string.ascii_lowercase 输出时小写字母a到z word.lower() 将其变成小写字母 import jieba import config import fasttext import string import jieba.posseg as psg import stopwords # jieba.load_userdict(config.user_dict_path) #准备英文字符 letters=string.ascii_lowercase def cut_sentence_by_word(sentence): ''' 实现中英文分词只是实现的单个词的分词 :param sentence: :return: ''' result=[] temp="" for word in sentence: if word.lower() in letters:#是英文字符就加入temp temp+=word.lower() else:#不是就判断temp空不空 if temp!="": result.append(temp) temp="" result.append(word.strip()) if temp!='': result.append(temp.lower()) return result def cut(sentence,by_word=False,use_stopwords=False,with_sg=False): ''' :param sentence: str 句子 :param by_word: 是否按照单个字分词 :param use_stopwords:是否使用停用词 :param with_sg:是否返回词性 :return: ''' if by_word: result=cut_sentence_by_word(sentence) else: result=psg.lcut(sentence)#实现词性分词 result = [(i.word, i.flag) for i in result] if not with_sg: result = [i[0] for i in result] # 是否带词性当with_sg是false是不带词性的 if use_stopwords:#是否用停用词 result=[i for i in result if i not in stopwords.stopwords] return result # print(string.ascii_lowercase)#a到z的小写字母
第二步、文本分类:
- 对文本进行embedding的操作,转换为向量
- 之后在通过多层的神经网络进行线性和非线性的变化的结果
- 变换后的结果和目标值进行计算得到损失函数,比如:对数似然损失
- 通过最小化损失函数,去更新原来模型的参数
CNN 卷积神经网络 RNN 循环神经网络 DNN 深度神经网络 fasttext是什么:
用来获取向量,进行文本分类的模块
分类的效率得到词向量的效率高
没有语料集写不下去了,等换个项目写