Я пытаюсь создать свой собственный корпус из набора текстовых файлов. Тем не менее, я хочу выполнить некоторую предварительную обработку текстовых файлов, прежде чем они будут корпусизированы, и я не могу понять, как это сделать, если только не создать сценарий для запуска каждого отдельного текстового файла, выполнить предварительную обработку текста, сохранить новый текстовый файл, а затем создать корпус для новых, обработанных файлов. (Сейчас это кажется неэффективным, потому что у меня есть ~ 200 МБ файлов, которые мне нужно было бы прочитать дважды, и это не очень масштабируемо, если бы у меня был гораздо больший корпус.)
Предварительная обработка, которую я хочу сделать, является очень простой текстовой манипуляцией:
- Сделать каждое слово, как указано в корпусе в нижнем регистре
- Удалите все элементы, полностью заключенные в скобки, например, [кашель]
- Удалить цифры в начале каждой строки (это номера строк из исходной транскрипции), которые являются первыми четырьмя символами каждой строки
Критически, я хочу сделать эту предварительную обработку ДО того, как слова войдут в корпус - я не хочу, например, «[кашлять]» или «0001» как запись в моем корпусе, и вместо «ДЕРЕВО» я хочу "дерево".
У меня есть базовый код для чтения корпуса, но проблема в том, что я не могу понять, как изменить сопоставление с образцом, когда он читает файлы и создает корпус. Есть ли хороший способ сделать это?
corpusdir = "C:/corpus/"
newcorpus = PlaintextCorpusReader(corpusdir, '.*')
corpus_words = newcorpus.words() # get words in the corpus
fdist = nltk.FreqDist(corpus_words) # make frequency distribution of the words in the corpus
Этот ответ вроде как на правильном пути, но соответствующие слова уже есть в корпусе, и плакат хочет игнорировать / убрать пунктуацию перед маркировкой корпуса. Я хочу затронуть, какие типы слов вообще вводятся (то есть считаются) в корпусе вообще.
Заранее спасибо!