Как отформатировать мой текстовый набор данных для обучения? - PullRequest
0 голосов
/ 28 мая 2019

Я новичок в питоне и машинном обучении, Я работаю над обучением чат-бота

Я собрал (или написал) большое количество возможных входных данных в файле Excel (.xlsx), я обучу свой набор данных с использованием LSTM и IOBES, я сделаю то же самое, что и здесь: https://www.depends -on-the-definition.com / гид-последовательность пометка-нейронные сети-питон /

В ссылке вы можете увидеть снимок набора данных, я хочу сделать свой набор данных похожим на него.

мои вопросы:

1- Есть ли способ разбить предложение на слова, чтобы я мог делать пометки для слов? (в Excel есть инструмент, я пробовал его, но он очень исчерпан). 2- Я пытался преобразовать свой файл в .cvs, но я столкнулся с множеством проблем (это с utf-8, потому что мой набор данных не на английском языке), есть ли другое расширение?

Я очень ценю вашу помощь и совет. Спасибо

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я использую 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 () удаляет лишние пробелы.

0 голосов
/ 28 мая 2019

Вы можете использовать pandas метод pd.read_excel('your_file.xlsx',sep=','), чтобы избежать преобразования вашего файла в csv.

Чтобы разбить предложение на слова, вам нужно использовать пакет Python Natural Language Processing (NLP), такой как nltk с английским словарем.Это будет учитывать пунктуацию, кавычки и т.д ..

...