2014-12-18 2 views
3

Я знакомлюсь с категорией NLTK и категорией текста в книге Джейкоба Перкинса «Обработка текста на Python с помощью кулинарной книги NLTK 2.0».Нужно установить категориальный читатель корпуса в NLTK и Python, текстовые тексты в одном файле, один текст в строке

В моих документах/текстах каждого документа содержится абзац текста, поэтому каждый из них находится в отдельной строке файла, а не в отдельном файле. Количество таких параграфов/строк составляет около 2 миллионов. Поэтому на машинных обучающих примерах около 2 миллионов.

Каждая строка в моем файле (абзац текста - комбинация названия домена, описания, ключевые слова), который является предметом извлечения функции: токенизация и т. Д., Чтобы сделать его экземпляром для алгоритма машинного обучения.

У меня есть два файла, подобные всем положительным и отрицательным.

Как загрузить его в категорию CororusReader? Является ли это возможным?

Я пробовал другие решения раньше, как scikit, и, наконец, выбрал NLTK, надеясь, что легче начать с результата.

ответ

2

Если предположить, что у вас есть два файла:

file_pos.txt, file_neg.txt

from nltk.corpus.reader import CategorizedCorpusReader 
reader = CategorizedCorpusReader('/path/to/corpora/', \ 
           r'file_.*\.txt', \ 
           cat_pattern=r'file_(\w+)\.txt') 

После этого, вы можете применить обычные Corpus функции ему нравится:

>>> reader.categories() 
['neg', 'pos'] 
>>> reader.fileids(categories=['neg']) 
['file_neg.txt'] 

Также как tagged_sents, tagged_words и т. Д.

Возможно, вам понравится этот урок о c reating изготовленный на заказ корпус: https://www.packtpub.com/books/content/python-text-processing-nltk-20-creating-custom-corpora

+0

Как вы извлекаете одиночный документ от corpus, в этом случае? Вы не можете использовать 'corpus.sents() [0]', 'corpus.paras() [0]', 'corpus.words() [0]', потому что эти методы дадут вам не первый документ. –

+0

Это справедливый вопрос. Одна вещь, которую вы могли бы сделать, - разделить предложения pos и neg в свои собственные файлы. Таким образом, это может быть немного более простым, чтобы получить их индивидуально. ** Редактировать: Когда я говорю в свои собственные файлы, я говорю, что они разбивают их на pos_1..N.txt и neg_1..N.txt ** –

 Смежные вопросы

  • Нет связанных вопросов^_^