2014-12-18 4 views
3

Jacob Perkins의 저서 "Python Text Processing with NLTK 2.0 Cookbook"의 NLTK 및 텍스트 분류에 익숙해졌습니다.NLTK와 Python에서 분류 된 코퍼스 리더를 설정해야합니다. 하나의 파일에 코퍼스 텍스트가 한 줄에 하나씩 있습니다.

내 코퍼스 문서/텍스트는 각각 텍스트 단락으로 구성되어 있으므로 각 텍스트는 별도의 파일이 아니라 별도의 파일 행에 있습니다. 그러한 단락/줄의 수는 약 2 백만개입니다. 따라서 기계 학습 인스턴스에는 약 2 백만 명이 있습니다.

기계 학습 알고리즘의 인스턴스로 만들기 위해 필자의 파일 (텍스트 단락 - 도메인 제목, 설명, 키워드의 조합)의 각 줄, 피쳐 추출 : 토큰 화의 대상입니다.

나는 모든 긍정적 인 것과 negavives를 가진 그것 같이 2 개의 파일이있다.

어떻게 CategorizedCorpusReader에로드 할 수 있습니까? 가능한가?

나는 scikit과 같은 다른 솔루션을 시도하고 마침내 NLTK를 선택하여 더 쉬운 지점을 결과로 시작하기를 바라고 있습니다.

답변

2

당신이 두 개의 파일이 있다고 가정 :

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

:

file_pos.txt을이 후

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

을 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.sents() [0]','corpus.paras() [0]','corpus.words() [0]'을 사용할 수 없습니다. –

+0

그건 중요한 지적입니다. 당신이 할 수있는 한 가지는 pos와 neg 문장을 자신의 파일로 분리하는 것입니다. 그렇게하면 개별적으로 얻는 것이 더 간단 할 수 있습니다. **** 편집 : 자신의 파일에 내가 말할 때 pos_1..N.txt 및 neg_1..N.txt로 분할한다고합니다. ** –