Как создать текстовые файлы с тегами корпус
У меня есть множество простых текстовых файлов (в формате.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.
Я также работал с текстовым корпусом, но это то, что сейчас не нужно для моего проекта. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ НАЙТИ РЕШЕНИЕ... Я НАДЕЮСЬ, ЧТО ДОЛЖЕН БЫТЬ ПУТЬ, КОТОРЫЙ Я ПРОПУСТИТ