深度【文本分类】【关系抽取】模型中,如何读取并处理输出的训练文件(TXT格式)
来源:互联网 发布:windows找不到某个exe 编辑:程序博客网 时间:2024/06/05 19:12
1、一般在此类模型中,需要原始文件四个:
train.txt 一般格式为(分类类型 句子)或(关系类型 头实体 尾实体 句子)
test.txt 格式同上
relation2id.txt (关系类型 关系id)
vec.txt (word, vec1,...,vec50)假设Embedding的维度为50
注意:要保证这些txt文件都是utf-8编码的
2、先处理vec.txt文件
目的:
1得到一个wordembedding的矩阵,存放所有word的词向量。
2对这些word进行编号,因为我们后面在模型的输入部分,输入的是由单词编号组成的一个个句子,所以这里要先对word进行编号,其实就是按照文件的读取顺序,从0到len(vec)-1
f = open('./vec.txt', encoding = 'utf-8')
f.readline() #如果文件的第一行有不需要读入的一些注释或说明信息 或表头之类的 可以跳过
word2id = {} #存放词典,即word和其对应的id
wordembeddings = [] #这是词嵌入矩阵
while True:
content = f.readline()
if content == '':
break
content = content.strip().split() #删除字符串的前后空白,并且 按空格键隔开
word2id[content[0]] = len(word2id) #这里假设content[0]中存放的是word,也就是说第0列是word ,第1~50列是Embedding vector
content = content[1:] #去后50列 的 向量
content = [(float) (i) for i in content]#前面从文件里读取得到的是字符串类型的,这里要把它转化成float类
wordembeddings.append(content)
f.close() #养成良好的编程习惯,当你open一个file时,就应该想好在哪里去close它
#因为输入的句子要设置成定长的 比如都是70,所以当不足70时就应该补空,我们认为,这个空位的id是最后的,也就是len(word2id), 并随机给空位设一个对应的初始vector值.
blank = np.random.normal(size = embedding_size, loc = 0, scale = 0.05)
wordembeddings.append(blank)
word2id['']=len(word2id)
3、处理relation2id文件
f = open ('relation2id.txt',encoding ='utf-8')
relation2id={}
while True:
relation = f.readline()
if relation ==0:
break
relation = relation.strip().split()
relation2id[relation[0]] = int(relation[1])
f.close()
4、处理train.txt文件
目的:1 因为train.txt文件包含两部分,一个是关系或分类的类型,一个是训练样本也就是句子,所以这里的处理我们需要得到两个矩阵,一个矩阵A用来顺序存放分类类型,一个矩阵B用来顺序存放由单词id组成的句子,这两个矩阵的行应该一 一对应,即是:句子A的第i行应是矩阵B的第i行所对应的分类类型。
f = open('train.txt', encoding ='utf-8')
A = []
B = []
while True:
text = f.readline()
if text =='':
break
text = text.strip().split()
y = int(text[0])
b = [0 for i in range(len(word2id))]
b[y] = 1
B.append(b) #存放关系类型矩阵
sentence = text[1:]
for i in range(len(sentence)):
a.append(word2id[sentence[i]])
if len(a)<70: #不足70补
for i in range(len(a),70):
a.append(len(word2id))
if len(a)>70: #多于70删除
del a[70:]
A.append(a) #存放由word id组成的句子矩阵
f.close()
- 深度【文本分类】【关系抽取】模型中,如何读取并处理输出的训练文件(TXT格式)
- 读取一个文件夹下所有的txt文件,并保存到一个txt文本中
- MATLAB读取txt文件,并逐行处理字符串,写入到新的txt中
- 如何打开一个已存在的txt格式的文本文档 ,并显示在QTextEdit中
- HTML 内容抽取并将txt文本放到excel中
- 菜鸟笔记 读取assets文件下的txt(Json格式文本)
- 如何读取超大容量文本txt文件
- 文本情感分类---搭建LSTM(深度学习模型)做文本情感分类的代码
- NCL 读取 各种格式 然后把头文件重新定向输出到txt文件中
- 怎么从一个txt格式的文件中一次读取10个值并赋值给一个数组???
- 一个可以从txt文件中逐行(可设置)读取文本的方法
- Python中对文件夹下的特定格式图像全部读取并转化为数组保存(也可转化为txt文件)
- 使用Python将TXT文本内容读取后生成指定XML格式的文件
- 使用 PHP 读取文本(TXT)文件 并分页显示
- asp.net 按行读取包含中文的文本(txt)文件并取得行数
- asp.net 按行读取包含中文的文本(txt)文件并取得行数
- asp.net 按行读取包含中文的文本(txt)文件并取得行数
- 读取文本字符串,并生成以字符串命名的txt文件
- windows7环境下Eclipse集成Python开发环境+安装TensorFlow
- dexcachelist导致anr
- 八皇后
- 排序算法之快速排序
- Android开发---手机号码输入框(满11位自动跳到下个输入框)
- 深度【文本分类】【关系抽取】模型中,如何读取并处理输出的训练文件(TXT格式)
- Boost算法库——C++11算法(one_of)
- 牛客网答题运行时间改善
- Android出现:Your project path contains non-ASCII characters.
- c语言位运算符与逻辑运算符的区别
- css通用技巧
- 一位资深程序员大牛给予Java初学者的学习路线建议
- vue框架介绍及语法
- matlab画CDF曲线