作家
登录

使用TENSORFLOW训练循环神经网络语言模型

作者: 来源: 2017-08-29 09:10:08 阅读 我要评论

如许的前提概率固然好求,然则会损掉大年夜量的前面的词典信息,有时会对结不雅产生不良影响。是以若何选择一个有效的n,使得既能简化计算,又能保存大年夜部分的高低文信息。

以上均是传统说话模型的描述。如不雅不太深究细节,我们的义务就是,知道前面n个词,来计算下一?词出现的概率。并且应用说话模型来生成新的文本。

在本文中,我们加倍存眷的是,若何应用RNN来推想下一?词。

数据预备 TensorFlow的官方文档应用的是Mikolov预备好的PTB数据集。我们可以将其下载并解压出来: 
  1. f = _read_words('simple-examples/data/ptb.train.txt'
  2. print(f[:20]) 
获得: 
  1. ['aer''banknote''berlitz''calloway''centrust''cluett''fromstein''gitano''guterman''hydro-quebec''ipo''kia''memotec''mlx''nahb''punts''rake''regatta''rubens''sim'
构建词汇表,词与id互转: 
  1. def _build_vocab(filename): 
  2.     data = _read_words(filename) 
  3.  
  4.     counter = Counter(data) 
  5.     count_pairs = sorted(counter.items(), key=lambda x: -x[1]) 
  6.  
  7.     words, _ = list(zip(*count_pairs)) 
  8.     word_to_id = dict(zip(words, range(len(words)))) 
  9.  
  10.     return words, word_to_id 
  1. words, words_to_id = _build_vocab('simple-examples/data/ptb.train.txt'
  2. print(words[:10]) 
  3. print(list(map(lambda x: words_to_id[x], words[:10]))) 
输出: 
  1. $ wget http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz 
  2. $ tar xvf simple-examples.tgz 
部分数据如下,不常用的词转换成了<unk>标记,数字转换成了N: 
  1. ('the''<unk>''<eos>''N''of''to''a''in''and'"'s"
  2. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
将一个文件转换为id表示: 
  1. words_in_file = _file_to_word_ids('simple-examples/data/ptb.train.txt', words_to_id) 
  2. print(words_in_file[:20]) 
词汇表已根据词频进行排序,因为第一句话非英文,所以id靠后。 
  1. [9980, 9988, 9981, 9989, 9970, 9998, 9971, 9979, 9992, 9997, 9982, 9972, 9993, 9991, 9978, 9983, 9974, 9986, 9999, 9990] 

      推荐阅读

      调试神经网络让人抓狂?这有16条锦囊妙计送给你

    应用网格搜刮或随机搜刮或设备文件来调剂超参数 不要手动检查所有的参数,如许耗时并且低效。我平日对所有参数应用全局设备,检查运行结不雅之后,我拒绝一步研究改进的偏向。如不雅这种办法没有赞助,那么你可以应>>>详细阅读


    本文标题:使用TENSORFLOW训练循环神经网络语言模型

    地址:http://www.17bianji.com/lsqh/36985.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)