[关闭]
@wuxin1994 2017-07-24T08:13:43.000000Z 字数 1486 阅读 1812

吴帆0710-进度总结

学习笔记17

A: 项目进度

1.程序步骤如下:

    a.下载维基语料库并预处理
    b.合并jieba自带的分词词典和项目用到的分词词典
    c.从topic.json中得到 description 并写入到 desc_texts.texts。同时,得到一个 tid-keywords 字典。
    d.对维基语料库和description语料库进行分词,并合并分词结果到segment.txt。(并得到句子和段落的语料库)
    e.利用分词结果训练word2vec模型(利用句子和段落语料库训练sent2vec,doc2vec模型)
    f.处理原始输入json文件,根据topic数目拆分,并根据tid-keywords字典加入keywords字段信息。
    g.分别处理各个字段,得到向量表示,并以json格式存储,然后写入到输出文件中。

2.项目程序代码已经基本写完,跟凌波师兄讨论了进度并请教了几个问题。不过目前还有三个待解决的问题:

  1. KeyError(u"word '\u74dc\u897f\u897f' not in vocabulary",)

B: 总结一下碰到的主要问题

图1

原因分析及解决办法:初始文件不是json结构,要让程序能直接load出json格式的数据流,存储格式为一个lists。

  1. import re
  2. description = re.findall(r"\"description\"\=\>\"[^\"]*\"",topic)#以读取description字段为例。
  1. TypeError: write() argument 1 must be unicode, not str

原因分析及解决办法:编码问题,写入的字段需要是unicode。

此处输入图片的描述
写入的文件每次总多一行空格,一直以为是显示bug,后来在数据写入时加上了一些if判断,问题解决。

  1. #办法1
  2. import sys
  3. reload(sys)
  4. sys.setdefaultencoding('utf-8')
  5. #办法2
  6. write(string.encoding('utf-8'))
  7. #办法3:可以先将需要输出或者写入的数据用for循环转成unicode字符串,然后再用write()方法写入。
  8. #办法4 :将unicode转换成汉字的方法
  9. print string.decode("unicode-escape")
  10. #办法4(写入json文件时)
  11. json.dump(new_topic_json,data_input,ensure_ascii=False)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注