Я пытаюсь создать корпус с POS-тегами из внешних файлов .txt
для фрагментации и извлечения сущностей и отношений. До сих пор я нашел громоздкое многошаговое решение:
Чтение файлов с помощью простого текстового корпуса:
from nltk.corpus.reader import PlaintextCorpusReader my_corp = PlaintextCorpusReader(".", r".*\.txt")
Корпус тегов со встроенным POS-теггером Penn:
my_tagged_corp= nltk.batch_pos_tag(my_corp.sents())
(Кстати, на этом понте Питон выдал ошибку: NameError: name 'batch' is not defined
)
Запишите отмеченные предложения в файл:
taggedfile = open("output.txt" , "w") for sent in dd_tagged: line = " ".join( w+"/"+t for (w, t) in sent ) taggedfile.write(line + "\n") taggedfile.close ()
И, наконец, снова прочитайте этот вывод как помеченный корпус:
from nltk.corpus.reader import TaggedCorpusReader my_corpus2 = TaggedCorpusReader(".",r"output.txt")
Все это очень неудобно для довольно распространенной задачи (чанкинг всегда требует размеченного корпуса). Мой вопрос: есть ли более компактный и элегантный способ реализовать это? Например, программа для чтения корпусов, которая одновременно получает необработанные входные файлы и тегировщик?
nltk_data/corpora
. Не могли бы вы подробно описать этапы его создания? - person Aditi   schedule 26.09.2017