如何格式化我的文本数据集进行训练?

时间:2019-05-28 11:37:34

标签: python machine-learning nlp training-data file-format

我是python和机器学习的新手, 我正在训练聊天机器人

我在excel文件(.xlsx)中收集(或编写了)大量可能的输入,我将使用LSTM和IOBES标签训练我的数据集,我将在这里做同样的事情: https://www.depends-on-the-definition.com/guide-sequence-tagging-neural-networks-python/

在链接中,您可以看到数据集的快照,我想使我的数据集像这样。

我的问题是:

1-是否可以将句子拆分为单词,以便对单词进行标记? (Excel中有一个工具,我试过了,但是很累)。 2-我试图将文件转换为.cvs,但是遇到了很多问题(因为我的数据集不是英语,所以是utf-8),是否还有另一个扩展名?

非常感谢您的帮助和建议。 谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用pandas方法pd.read_excel('your_file.xlsx',sep=',')来避免将文件转换为csv。

要将句子拆分成单词,您需要使用自然语言处理(NLP)python程序包,例如nltk和英语词汇。这将考虑标点符号,引号等。

答案 1 :(得分:0)

我正在使用openpyxl将excel文件直接加载到内存中。例如,

from openpyxl import load_workbook
trainingFile = './InputForTraining/1.labelled.Data.V2.xlsx'
trainingSheet = 'sheet1'
TrainingFile = load_workbook(trainingFile)
sheet = TrainingFile[trainingSheet]

然后,您不必将excel转换为csv。有时候,如果数据结构很复杂,那么转换就不是那么简单。您仍然必须编写一些代码来形成结构。 如果您的句子很干净,则拆分句子非常容易。 Python具有功能split(),可根据空间将字符串拆分为单词列表。例如,

wordsList = yourString.split()

但是您需要注意标点符号。通常在一个字之后。您可以使用regEx将标点符号拆分为一个单词。例如,

pat = re.compile(r"([.,;:()/&])")
return_text = pat.sub(" \\1 ", return_text)
wordList = return_text.split()

因此[。,; ::()/&]将与单词分开。 或者,甚至根本不需要,甚至可以从句子中删除标点符号。并将其替换为空间。例如,

return_text = re.sub("[^a-zA-Z\s1234567890]+", ' ', text).strip().rstrip()

然后将仅保留字母和数字。 .strip()。rstrip()正在删除多余的空格。