몇 년 동안 작동 방식을 파악한 후 업데이트 된 튜토리얼은 다음과 같습니다.
텍스트 파일 디렉토리로 NLTK 말뭉치를 만드는 방법은 무엇입니까?
주요 아이디어는 nltk.corpus.reader 패키지를 사용하는 것입니다 . 영어로 된 텍스트 파일 디렉토리가있는 경우 PlaintextCorpusReader 를 사용하는 것이 가장 좋습니다 .
다음과 같은 디렉토리가있는 경우 :
newcorpus/
file1.txt
file2.txt
...
다음 코드 라인을 사용하면 코퍼스를 얻을 수 있습니다.
import os
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
corpusdir = 'newcorpus/'
newcorpus = PlaintextCorpusReader(corpusdir, '.*')
참고 : (가)하는 PlaintextCorpusReader
기본값을 사용 nltk.tokenize.sent_tokenize()
하고 nltk.tokenize.word_tokenize()
영어 문장과 단어와 이러한 기능에 빌드하여 텍스트를하는 분할, 그것은 수도에 NOT 모든 언어에 대한 작업.
다음은 테스트 텍스트 파일 생성과 NLTK를 사용하여 말뭉치 생성 방법 및 다양한 수준에서 말뭉치에 액세스하는 방법을 포함한 전체 코드입니다.
import os
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
txt1 = """This is a foo bar sentence.\nAnd this is the first txtfile in the corpus."""
txt2 = """Are you a foo bar? Yes I am. Possibly, everyone is.\n"""
corpus = [txt1,txt2]
corpusdir = 'newcorpus/'
if not os.path.isdir(corpusdir):
os.mkdir(corpusdir)
filename = 0
for text in corpus:
filename+=1
with open(corpusdir+str(filename)+'.txt','w') as fout:
print>>fout, text
assert os.path.isdir(corpusdir)
for infile, text in zip(sorted(os.listdir(corpusdir)),corpus):
assert open(corpusdir+infile,'r').read().strip() == text.strip()
newcorpus = PlaintextCorpusReader('newcorpus/', '.*')
for infile in sorted(newcorpus.fileids()):
print infile
with newcorpus.open(infile) as fin:
print fin.read().strip()
print
print newcorpus.raw().strip()
print
print newcorpus.paras()
print
print newcorpus.paras(newcorpus.fileids()[0])
print newcorpus.sents()
print
print newcorpus.sents(newcorpus.fileids()[0])
print newcorpus.words()
print newcorpus.words(newcorpus.fileids()[0])
마지막으로, 텍스트 디렉토리를 읽고 다른 언어로 NLTK 코퍼스를 생성하려면 먼저 문자열 /베이스 스트링 입력을 받아 이러한 출력을 생성 하는 파이썬 호출 가능 단어 토큰 화 및 문장 토큰 화 모듈이 있는지 확인해야합니다 .
>>> from nltk.tokenize import sent_tokenize, word_tokenize
>>> txt1 = """This is a foo bar sentence.\nAnd this is the first txtfile in the corpus."""
>>> sent_tokenize(txt1)
['This is a foo bar sentence.', 'And this is the first txtfile in the corpus.']
>>> word_tokenize(sent_tokenize(txt1)[0])
['This', 'is', 'a', 'foo', 'bar', 'sentence', '.']