Как создать текстовые файлы с тегами корпус

У меня есть множество простых текстовых файлов (в формате.txt). Мне нужно использовать размеченный читатель корпуса и иметь категории для моего проекта, для этого:


Сначала мне нужно, чтобы эти файлы были помечены POS для каждого слова.

Есть ли какая-либо библиотека или способ сделать это без кода сам для итерации каждого слова и поиска POS и добавления его с помощью "/" рядом со словом. Потому что, если я сделаю вручную другой абзац, все придет к одному


Код, который я написал для генерации текстового файла, в котором каждое слово содержит его POS (например, public станет public/JJ)

from nltk.corpus import PlaintextCorpusReader from nltk.tokenize import word_tokenize

import nltk

class CorpusInitialize:

    def loading_textfile(self):

        corpus_root = 'C:/Users/nkumarn/PycharmProjects/Corpus1/'
        wordlists = PlaintextCorpusReader(corpus_root,'.*')
        files=wordlists.fileids()
        for eachfile in files:
            textfile = wordlists.paras(fileids=eachfile)
            text=self.set_paragraphs(textfile)
            self.write_to_textfile(text,eachfile)



    def set_paragraphs(self, textfile):
        new_text = ""
        flag = 0
        for all_paras in textfile:
            for every_para in all_paras:
                if every_para != " ":
                    for every_word in every_para:
                        if new_text == "":
                            new_text = every_word
                        elif every_word == '.' or every_word == '?' or every_word == ',' or every_word == '!':
                            new_text = new_text + every_word
                        elif every_word == '@':
                            flag = 1
                            new_text = new_text + " " + every_word
                        else:
                            if flag == 1:
                                new_text = new_text + every_word
                            else:
                                new_text = new_text + " " + every_word

            if new_text != "":
                new_text = new_text + " " + '~'
        text= self.create_corpos(new_text)
        return text


    def create_corpos(self,new_text):
        words = word_tokenize(new_text)
        all_pos_words = nltk.pos_tag(words)
        text=""
        for every_pos_words in all_pos_words:
            if every_pos_words[0] == '~':
                text = text + '\n'
                continue

            if text == "":
                text = every_pos_words[0] + '/' + every_pos_words[1] + ' '
            else:
                text = text + every_pos_words[0] + '/' + every_pos_words[1] + ' '


        return text


    def write_to_textfile(self,textfile,fileid):

        file = open("C:/Users/nkumarn/PycharmProjects/taggedcorpus/%s"%(fileid,), "w")
        file.write(textfile)
        file.close()

Входные данные этого файла - обычный текстовый файл: Например:

"" "Неуправляемое обучение - это задача машинного обучения, заключающаяся в том, чтобы вывести функцию для описания скрытой структуры из немаркированных данных. Поскольку примеры, данные учащемуся, не имеют маркировки, нет никакого сигнала об ошибке или вознаграждении для оценки потенциального решения. Неуправляемое обучение тесно связано к проблеме оценки плотности в статистике.[1] Тем не менее, неконтролируемое обучение также включает в себя множество других методов, которые стремятся обобщить и объяснить ключевые особенности данных."""

и вывод этого файла будет таким.

Без присмотра /VBN-обучение / NN-это /VBZ /DT-машина / NN-обучение /VBG-задача /NN of/IN inferring/VBG a/DT-функция /NN to/TO описать / VB скрыто / JJ структура / NN из /IN unlabeled/ Данные JJ /NNS ./. Поскольку / IN / примеры DT / данные NNS /VBN для / TO ученика /DT / NN являются /VBP без метки /VBN,/, существует /EX /VBZ no/ ошибка DT / NN или / вознаграждение CC / сигнал JJ /NN to/TO оценить /VB a/ потенциал DT / решение JJ / NN./. Без присмотра / обучение VBN / NN близко /VBZ / связано с RB /VBN с / TO /DT проблема / NN из / IN плотность / оценка NN / NN в / IN статистика /NNS ./. [/$ 1/CD ]/NNP Однако /RB,/, без присмотра /JJ learning/NN также / RB включает /VBZ многие / JJ другие / JJ методы / NNS, которые /WDT ищут /VBP к / TO суммируют / VB и /CC объяснение / ключ VB / особенности JJ / NNS из / IN /DT data/NN ./.

Итак, возвращаясь к вопросу, есть ли библиотека или более простой, но эффективный способ придумать этот вывод. Я пытаюсь получить результат, похожий на коричневый корпус, чтобы я мог использовать все функции taggedcorperreader.

Я также работал с текстовым корпусом, но это то, что сейчас не нужно для моего проекта. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ НАЙТИ РЕШЕНИЕ... Я НАДЕЮСЬ, ЧТО ДОЛЖЕН БЫТЬ ПУТЬ, КОТОРЫЙ Я ПРОПУСТИТ

0 ответов

Другие вопросы по тегам