如何格式化 textsum data_convert_example 的输入数据
How to format input data for textsum data_convert_example
我希望有人能看到我在这里失败的地方。所以我从 buzzfeed 中抓取了一些数据,现在我正在尝试格式化一个文本文件,然后我可以用它发送到 data_convert_examples text_to_data 格式化程序。
我以为我已经找到了几次答案,但当我将其作为二进制文件处理然后尝试针对数据进行训练时,我仍然运行碰壁。
我所做的是 运行 玩具数据集上的 binary_to_text 然后在记事本++中打开 windows 下的文件,显示所有字符,并匹配我认为是格式。
我对下面的长函数表示歉意,但我真的不确定问题出在哪里,我认为这是提供足够信息的最佳方式。有人有什么想法或建议吗?
def processPath(self, toPath):
try:
fout = open(os.path.join(toPath, '{}-{}'.format(self.baseName, self.fileNdx)), 'a+')
for path, dirs, files in os.walk(self.fromPath):
for fn in files:
fullpath = os.path.join(path, fn)
if os.path.isfile(fullpath):
#with open(fullpath, "rb") as f:
with codecs.open(fullpath, "rb", 'ascii', "ignore") as f:
try:
finalRes = ""
content = f.readlines()
self.populateVocab(content)
sentences = sent_tokenize((content[1]).encode('ascii', "ignore").strip('\n'))
for sent in sentences:
textSumFmt = self.textsumFmt
finalRes = textSumFmt["artPref"] + textSumFmt["sentPref"] + sent.replace("=", "equals") + textSumFmt["sentPost"] + textSumFmt["postVal"]
finalRes += (('\t' + textSumFmt["absPref"] + textSumFmt["sentPref"] + (content[0]).strip('\n').replace("=", "equals") + textSumFmt["sentPost"] + textSumFmt["postVal"]) + '\t' +'publisher=BUZZ' + os.linesep)
if self.lineNdx != 0 and self.lineNdx % self.lines == 0:
fout.close()
self.fileNdx+=1
fout = open(os.path.join(toPath, '{}-{}'.format(self.baseName, self.fileNdx)), 'a+')
fout.write( ("{}").format( finalRes.encode('utf-8', "ignore") ) )
self.lineNdx+=1
except RuntimeError as e:
print "Runtime Error: {0} : {1}".format(e.errno, e.strerror)
finally:
fout.close()
经过进一步分析,问题的根源似乎更多是与源数据及其构建方式有关,而不是data_convert_example.py本身。我要关闭它,因为标题不是 in-line 问题的根源。
我发现问题的根源是 "Article" 和等号之间有一个 space。删除后我能够成功训练。
我希望有人能看到我在这里失败的地方。所以我从 buzzfeed 中抓取了一些数据,现在我正在尝试格式化一个文本文件,然后我可以用它发送到 data_convert_examples text_to_data 格式化程序。
我以为我已经找到了几次答案,但当我将其作为二进制文件处理然后尝试针对数据进行训练时,我仍然运行碰壁。
我所做的是 运行 玩具数据集上的 binary_to_text 然后在记事本++中打开 windows 下的文件,显示所有字符,并匹配我认为是格式。
我对下面的长函数表示歉意,但我真的不确定问题出在哪里,我认为这是提供足够信息的最佳方式。有人有什么想法或建议吗?
def processPath(self, toPath):
try:
fout = open(os.path.join(toPath, '{}-{}'.format(self.baseName, self.fileNdx)), 'a+')
for path, dirs, files in os.walk(self.fromPath):
for fn in files:
fullpath = os.path.join(path, fn)
if os.path.isfile(fullpath):
#with open(fullpath, "rb") as f:
with codecs.open(fullpath, "rb", 'ascii', "ignore") as f:
try:
finalRes = ""
content = f.readlines()
self.populateVocab(content)
sentences = sent_tokenize((content[1]).encode('ascii', "ignore").strip('\n'))
for sent in sentences:
textSumFmt = self.textsumFmt
finalRes = textSumFmt["artPref"] + textSumFmt["sentPref"] + sent.replace("=", "equals") + textSumFmt["sentPost"] + textSumFmt["postVal"]
finalRes += (('\t' + textSumFmt["absPref"] + textSumFmt["sentPref"] + (content[0]).strip('\n').replace("=", "equals") + textSumFmt["sentPost"] + textSumFmt["postVal"]) + '\t' +'publisher=BUZZ' + os.linesep)
if self.lineNdx != 0 and self.lineNdx % self.lines == 0:
fout.close()
self.fileNdx+=1
fout = open(os.path.join(toPath, '{}-{}'.format(self.baseName, self.fileNdx)), 'a+')
fout.write( ("{}").format( finalRes.encode('utf-8', "ignore") ) )
self.lineNdx+=1
except RuntimeError as e:
print "Runtime Error: {0} : {1}".format(e.errno, e.strerror)
finally:
fout.close()
经过进一步分析,问题的根源似乎更多是与源数据及其构建方式有关,而不是data_convert_example.py本身。我要关闭它,因为标题不是 in-line 问题的根源。
我发现问题的根源是 "Article" 和等号之间有一个 space。删除后我能够成功训练。