tensorflow对字典排序

按照value值降序排列:

sorted(dict.items(),key=lambda k:k[1],reverse=True)

按照value值升序排序:

sorted(dict.items(),key=lambda k:k[1],reverse=False)或者sorted(dict.items(),key=lambda k:k[1])

按照key值降序排列:

sorted(dict.items(),key=lambda k:k[0],reverse=True)

按照key值升序排列:

sorted(dict.items(),key=lambda k:k[0])或者sorted(dict.items(),key=lambda k:k[0],reverse=False)

#-*- coding: utf-8 -*-
file_object=open("english")
dict={}
for line in file_object:
 line=line.replace(","," ")
 line=line.replace("."," ")
 line=line.replace("!"," ")
 strs= line.split();
 for str in strs:
   if dict.has_key(str):
     dict[str]+=1
   else:
     dict[str]=1
result=sorted(dict.items(),key=lambda k:k[1],reverse=True)
print result     
python读取一个英文文件,并记录每个单词出现的次数,降序输出
参考:http://www.mamicode.com/info-detail-1634632.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Tensorflow、自然语言处理和LSTM搭建智能聊天机器人的代码实现: 1. 导入必要的库和模块: ```python import tensorflow as tf import numpy as np import random import json import nltk from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() ``` 2. 加载和预处理数据集: ```python words = [] classes = [] documents = [] ignore_words = ['?', '!'] data_file = open('intents.json').read() intents = json.loads(data_file) for intent in intents['intents']: for pattern in intent['patterns']: # 将句子分词 w = nltk.word_tokenize(pattern) words.extend(w) # 将句子、分类、标记添加到文档中 documents.append((w, intent['tag'])) # 将分类添加到分类列表中 if intent['tag'] not in classes: classes.append(intent['tag']) # 对单词进行词形还原和去重 words = [lemmatizer.lemmatize(w.lower()) for w in words if w not in ignore_words] words = sorted(list(set(words))) # 对分类进行排序 classes = sorted(list(set(classes))) # 打印统计信息 print (len(documents), "documents") print (len(classes), "classes", classes) print (len(words), "unique lemmatized words", words) ``` 3. 创建训练和测试数据集: ```python # 创建训练数据 training = [] output_empty = [0] * len(classes) for doc in documents: # 初始化一个空的单词列表 bag = [] # 获取已知单词列表中的词形还原单词 pattern_words = doc[0] pattern_words = [lemmatizer.lemmatize(word.lower()) for word in pattern_words] # 将单词添加到单词列表中 for w in words: bag.append(1) if w in pattern_words else bag.append(0) # 创建训练样本 output_row = list(output_empty) output_row[classes.index(doc[1])] = 1 training.append([bag, output_row]) # 打乱训练数据并将其转换为numpy数组 random.shuffle(training) training = np.array(training) # 创建训练和测试集 train_x = list(training[:,0]) train_y = list(training[:,1]) ``` 4. 创建模型: ```python # 定义模型参数 input_layer = tf.keras.layers.Input(shape=(len(train_x[0]),)) hidden_layer_1 = tf.keras.layers.Dense(8, activation='relu')(input_layer) hidden_layer_2 = tf.keras.layers.Dense(8, activation='relu')(hidden_layer_1) output_layer = tf.keras.layers.Dense(len(train_y[0]), activation='softmax')(hidden_layer_2) # 创建模型 model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` 5. 训练模型: ```python # 训练模型 history = model.fit(np.array(train_x), np.array(train_y), epochs=1000, batch_size=8, verbose=1) ``` 6. 将模型保存为HDF5文件: ```python # 将模型保存为HDF5文件 model.save('chatbot_model.h5', history) ``` 7. 加载模型并进行预测: ```python # 加载模型 model = tf.keras.models.load_model('chatbot_model.h5') # 创建一个字典将单词映射到索引 words_dict = {word: i for i, word in enumerate(words)} # 创建一个函数用于将输入句子转换为模型输入 def bag_of_words(sentence, words_dict): # 初始化一个空的单词列表 bag = [0] * len(words_dict) # 将输入句子分词并进行词形还原 sentence_words = nltk.word_tokenize(sentence) sentence_words = [lemmatizer.lemmatize(word.lower()) for word in sentence_words] # 将句子中存在于已知单词列表中的单词标记为1 for w in sentence_words: if w in words_dict: bag[words_dict[w]] = 1 return np.array(bag) # 创建一个函数用于获取模型预测结果中具有最高概率的标签 def predict_class(sentence, model): # 将输入句子转换为模型输入 bow = bag_of_words(sentence, words_dict) # 根据模型预测输出结果 result = model.predict(np.array([bow]))[0] # 获取预测输出结果中具有最高概率的标签 threshold = 0.25 results = [[i, r] for i, r in enumerate(result) if r > threshold] # 将结果按概率值排序 results.sort(key=lambda x: x[1], reverse=True) return_list = [] for r in results: return_list.append({'intent': classes[r[0]], 'probability': str(r[1])}) return return_list # 创建一个函数用于获取对话机器人的响应 def get_response(intents_list, intents_json): tag = intents_list[0]['intent'] list_of_intents = intents_json['intents'] for i in list_of_intents: if i['tag'] == tag: result = random.choice(i['responses']) break return result # 进行对话 while True: message = input("") intents_list = predict_class(message, model) result = get_response(intents_list, intents) print(result) ``` 注意:以上代码仅为示例,实际使用时需要根据数据集和问题的特定情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值