延续上几个月写的一段代码,可按照几率生成随机话单内容

来源:互联网 发布:过期杂志如何处理 知乎 编辑:程序博客网 时间:2024/06/02 14:07
  1. # -*- coding: cp936 -*-
  2. #===============================================================================
  3. # Author: nilxin@21cn.com
  4. # Time:2008-10-28
  5. # Function:
  6. # 1.实现分析内容自动生成功能
  7. # 2.实现自动从一个数据字典中获得某种类型的词组加入到原始话单中
  8. #==============================================================================
  9. import os,math,random
  10. global number
  11. def GetKeyWord():
  12.     #获取关键字
  13.     #key_words= raw_input("请输入原始话单语句:")
  14.     key_words = "想起当年俺们宿舍一哥们抢别人的包子吃,边吃边说:就这玩意儿,只配塞屁股"
  15.     return key_words
  16. def ReadDict():
  17.     #获得当前文件所在路径
  18.     newpath = os.getcwd()+"//config//WordData.date"
  19.     read_list = open(newpath,'r')
  20.     #读取词库信息缓存到内存中
  21.     read_dict = read_list.readlines()
  22.     #初始化字典
  23.     data_dict = {}
  24.     #temp_dict = []
  25.     number = 0
  26.     #获取前200个词组,并存放在10个队列中,构成一个数据字典
  27.     for y in range(10):
  28.         temp_dict = []
  29.         for i in range(20):
  30.             #全局变量number用来控制每个队列取多少个词组
  31.             number += 1
  32.             #数据字段:data_dict,分别存在放在10个队列中
  33.             temp_dict.append(str(read_dict[number][:-1]))
  34.         temp_change = temp_dict
  35.         data_dict[y] = temp_change
  36.     #返回词组字典
  37.     return data_dict
  38. def Assorted():
  39.     key_words = GetKeyWord()
  40.     data_dict = ReadDict()
  41.     rule_dict = {0:(0,30),1:(40,60),2:(60,100)}
  42.     #print len(dict.values())
  43.     #获取字典索引数组长度,应该是9位(0-9)
  44.     for y in range(len(rule_dict.keys())):
  45.         #print "test=",data_dict[y]
  46.         #初始化变量
  47.         sentence = ""
  48.         rule_temp = 0
  49.         #获得每组数据,并对每组数据进行排序,随机抽取5个词汇组成一个句子
  50.         #print len(data_dict.values()[y])
  51.         random_count = random.randint(0,len(data_dict.values()[y]))
  52.         #规则字典来取得每组数据的几率,则每次话单调用时会根据随机数所在区间,来获取相应级别的关键字
  53.         rule_temp = random.randint(0,len(rule_dict.keys())-1)
  54.         #print "test",len(rule_dict.keys())-1,rule_dict[0]
  55.         rule_value = rule_dict[rule_temp]
  56.         random_value = random.randint(0,100)
  57.        #print "random_value",random_value
  58.         for i in range(len(rule_dict.keys())):
  59.             try:
  60.                 if random_value in range(rule_dict.values()[i][0],rule_dict.values()[i][1]):
  61. #                    print "rule_value",rule_dict.values()[i][0],rule_dict.values()[i][1]
  62. #                    print i
  63.                     sentence += data_dict[i][random_count]
  64.                     break;
  65.             except:
  66.                 continue;
  67.         #print "---------------------------------------"
  68.     print "关键字等级:%d,关键字内容:%s" % (i,(key_words)+sentence)
  69. if __name__ == "__main__":
  70.     #调用方法
  71.     for i in range(100):
  72.         Assorted()
原创粉丝点击