यह कैसे काम करता है, यह जानने के कुछ वर्षों के बाद, यहाँ का अपडेटेड ट्यूटोरियल है
TextTiles की निर्देशिका के साथ NLTK कॉर्पस कैसे बनाएं?
मुख्य विचार nltk.corpus.reader पैकेज का उपयोग करना है । इस मामले में कि आपके पास अंग्रेजी में टेक्स्टफाइल्स की एक निर्देशिका है , यह प्लेनटेक्स्टकॉर्पस राइडर का उपयोग करना सबसे अच्छा है ।
यदि आपके पास एक निर्देशिका है जो इस तरह दिखती है:
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()
आपके ग्रंथों को वाक्यों और शब्दों में विभाजित करने के लिए होगा और ये फ़ंक्शन अंग्रेजी के लिए बनाए गए हैं, यह सभी भाषाओं के लिए काम नहीं कर सकता है ।
टेस्ट टेक्स्टफाइल्स के निर्माण और एनएलटीके के साथ कॉर्पस बनाने के लिए और विभिन्न स्तरों पर कॉर्पस तक पहुंचने के तरीके के साथ पूर्ण कोड यहां दिया गया है:
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])
अंत में, ग्रंथों की एक निर्देशिका को पढ़ने के लिए और दूसरी भाषाओं में एक एनएलटीके कॉर्पस बनाने के लिए, आपको पहले यह सुनिश्चित करना होगा कि आपके पास एक अजगर- कॉल करने योग्य शब्द टोकन और वाक्य टोकन मॉड्यूल है जो स्ट्रिंग / बेसस्ट्रिंग इनपुट लेता है और इसका आउटपुट उत्पन्न करता है:
>>> 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', '.']