python脚本,完成mulan项目的输入文件生成
这个脚本是我要完成特定任务而写的,可以提高我的科研效率,如果你是python语言的爱好者,或者是多标签分类的研究生,获取会有一点启示。但说实话,这个任务太具体,不具有普遍性,如果没有具体的正确格式文件,甚至很难跑通,所以不要抱有太大的希望,如果只是感兴趣,倒是还行,我的目的仅是为我以后的查阅而已。代码如下#! /usr/bin/python# coding=utf-8# 此脚本的功能是:将ide
·
这个脚本是我要完成特定任务而写的,可以提高我的科研效率,如果你是python语言的爱好者,或者是多标签分类的研究生,获取会有一点启示。但说实话,这个任务太具体,不具有普遍性,如果没有具体的正确格式文件,甚至很难跑通,所以不要抱有太大的希望,如果只是感兴趣,倒是还行,我的目的仅是为我以后的查阅而已。
代码如下
#! /usr/bin/python
# coding=utf-8
# 此脚本的功能是:将idea生成的词向量自动生成相应的arff文件和xml文件
# # 步骤是: 1. 去除词向量中的 '[' ']' 和 ','
# # 2. 将词向量与标签拼接
# # 3. 写arff文件和xml文件
# 这个脚本使用的时候需注意: 1.修改三个参数即可: min_dimension、max_dimension、size(具体意义看注释)
# 2.目录文件需清空(这两个文件为该脚本的输出):/root/多标签分类实验文件/词向量+标签组成的记录/中英文、数字和.和
# /root/多标签分类实验文件/arff和xml文件/中英文、数字和.
# 3.该脚本输入为词向量,文件目录为:/root/多标签分类实验文件/词向量文件/中英文、数字和.
# 这个文件一定要注意文件名的格式正确,内容格式正确,该文件来源于spark word2vec
import re
import time
import sys
min_dimension = 10 # 词向量最小维数
max_dimension = 850 # 词向量最大维数
size = 10 # 词向量维数间隔
global_x = min_dimension # 写arff文件和xml文件的迭代索引(从最小维数到最大维数)
label_count = 70 # 标签个数
my_pattern1 = re.compile("[\[\]]")
my_pattern2 = re.compile("[,]")
# 缓冲区
buf1 = [] # 词频信息去掉数字.txt
buf2 = [] # 校对替换终2#.txt
buf3 = [] # 词向量txt文件
# i加的数,即i = i + number
def add():
global global_x
global_x += size
start_time = str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
print(start_time + "------开始步骤一和步骤二......")
# -----------------------------------------------分割线--------------------------------------------------------------
while global_x <= max_dimension:
# 1.去除词向量中的 '[' ']' 和 ','
time.sleep(1)
print('......')
time.sleep(2)
print('......')
time.sleep(0.5)
print('......')
time.sleep(0.2)
print('......')
print('处理中。。请不要关闭')
# ----------------------------------------------------------------分割线----------------------------------------------------
# 2.将词向量与标签拼接
term_fre_file = open('/root/多标签分类实验文件/拼接标签用到的文件/词频信息去掉数字.txt', 'r')
term_place_file = open('/root/多标签分类实验文件/拼接标签用到的文件/校对替换终2#.txt', 'r')
term_file = open('/root/多标签分类实验文件/词向量文件/中英文、数字和./1-11303词向量1_没有符号' + str(global_x) + '.txt', 'r')
result_file = open('/root/多标签分类实验文件/词向量+标签组成的记录/中英文、数字和./1-11303词向量+标签1_没有符号' + str(global_x) + '.txt', 'a')
for data in term_fre_file.readlines():
buf1.append(data)
for data in term_place_file.readlines():
buf2.append(data)
for data in term_file.readlines():
result = my_pattern2.sub(' ', my_pattern1.sub('', str(data).strip()))
buf3.append(result)
term_fre_file.close()
term_place_file.close()
term_file.close()
for x in range(0, len(buf2)):
ss = str(buf2[x])[7:].split(' ')
sss = buf3[x]
for y in range(0, label_count):
s = '0'
for z in range(len(ss)):
if str(ss[z]).strip() == str(buf1[y]).strip():
s = '1'
temp = ' ' + s
sss += temp
if x != len(buf2) - 1:
result_file.write(sss + '\n')
else:
result_file.write(sss)
result_file.flush()
result_file.close()
buf1.clear()
buf2.clear()
buf3.clear()
print(global_x)
add()
global_x = min_dimension
time.sleep(5)
print("步骤一和步骤二完成.......")
time.sleep(5)
print("开始步骤三.......")
time.sleep(5) # 保证文件前面的文件写完
print('处理中。。请不要关闭')
time.sleep(2)
# --------------------------------------------------------------分割线-----------------------------------------------------------------
# 3.写arff文件和xml文件
while global_x <= max_dimension:
# save_arff_file = open('/root/eclipse-workspace/mulan/' + str(i) + '-' + str(label_count) + '再除噪_没有符号.arff', 'a')
save_arff_file = open('/root/多标签分类实验文件/arff和xml文件/中英文、数字和./' + str(global_x) + '-' + str(label_count) + '再除噪_没有符号.arff', 'a')
# save_xml_file = open('/root/eclipse-workspace/mulan/' + str(i) + '-' + str(label_count) + '再除噪_没有符号.xml', 'a')
save_xml_file = open('/root/多标签分类实验文件/arff和xml文件/中英文、数字和./' + str(global_x) + '-' + str(label_count) + '再除噪_没有符号.xml', 'a')
# --------------开始写arff文件------------------------------------------------------------------
save_arff_file.write("@relation Mymedical\n\n")
for x in range(1, global_x + 1):
save_arff_file.write("@attribute feature_" + str(x) + " numeric\n")
for y in range(1, label_count + 1):
save_arff_file.write('@attribute label_' + str(y) + ' {0,1}\n')
save_arff_file.write('\n')
save_arff_file.write('@data\n')
# 数据部分文件路径
src_file_path = '/root/多标签分类实验文件/词向量+标签组成的记录/中英文、数字和./1-11303词向量+标签1_没有符号' + str(global_x) + '.txt'
data_file = open(src_file_path, 'r')
for data_line in data_file.readlines():
save_arff_file.write(str(data_line))
data_file.close()
save_arff_file.flush()
save_arff_file.close()
# --------------开始写xml文件-------------------------------------------------------------------
save_xml_file.write('''<?xml version="1.0" encoding="utf-8"?>\n<labels xmlns="http://mulan.sourceforge.net/labels">\n''')
for z in range(1, label_count + 1):
save_xml_file.write(''' <label name="label_''' + str(z) + '''"></label>\n''')
save_xml_file.write('</labels>')
save_xml_file.flush()
save_xml_file.close()
add()
end_time = str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
print(end_time + '任务完成')
year = int(end_time[:4]) - int(start_time[:4])
month = int(end_time[5:7]) - int(start_time[5:7])
day = int(end_time[8:10]) - int(start_time[8:10])
hour = int(end_time[11:13]) - int(start_time[11:13])
minitue = int(end_time[14:16]) - int(start_time[14:16])
second = int(end_time[17:]) - int(start_time[17:])
if second < 0:
second = 60 - second
minitue = minitue - 1
if minitue < 0:
minitue = 60 - minitue
hour = hour - 1
print('共用时:' + str(year) + '年 ' + str(month) + '月 ' + str(day) + '日 '
+ str(hour) + '时 ' + str(minitue) + '分 ' + str(second) + '秒')
更多推荐
已为社区贡献2条内容
所有评论(0)