0

I have hundreds of files containing text I want to use with NLTK. Here is one such file:

বে,বচা ইয়াণ্ঠা,র্চা ঢার্বিত তোখাটহ নতুন, অ প্রবঃাশিত।
তবে ' এ বং মুশায়েরা ' পত্রিব্যায় প্রকাশিত তিনটি লেখাই বইযে
সংব্যজান ব্যরার জনা বিশেষভাবে পরিবর্ধিত। পাচ দাপনিকেব
ড:বন নিয়ে এই বই তৈরি বাবার পরিব্যল্পনাও ম্ভ্রাসুনতন
সামন্তেরই। তার আর তার সহকারীদেব নিষ্ঠা ছাডা অল্প সময়ে
এই বই প্রব্যাশিত হতে পারত না।,তাঁদের সকলকে আমাধ
নমস্কার জানাই।
বতাব্যাতা শ্রাবন্তা জ্জাণ্ণিক
জানুয়ারি ২ ণ্ট ণ্ট ৮ 
Total characters: 378

Note that each line does not contain a new sentence. Rather, the sentence terminator - the equivalent of the period in English - is the '।' symbol.

Could someone please help me create my corpus? If imported into a variable MyData, I would need to access MyData.words() and MyData.sents(). Also, the last line should not appear in the corpus (it merely contains a character count).

Please note that I will need to run operations on data from all the files at once.

Thanks in advance!

4

2 回答 2

1

您不需要自己输入文件或提供wordssents方法。使用 阅读您的语料库PlaintextCorpusReader,它会为您提供这些。语料库阅读器构造函数接受文件的路径和文件名模式以及输入编码的参数(一定要指定它)。

构造函数还具有句子和单词标记化函数的可选参数,因此您可以将自己的方法传递给它以将文本分解为句子。如果单词和句子检测真的很简单,即如果| 字符还有其他用途,您可以从 nltk 的 RegexpTokenizer 系列中配置一个标记化功能,或者您可以从头开始编写自己的。(在编写自己的代码之前,请研究文档和代码或编写存根以找出调用它的输入类型。)

如果识别句子边界并非易事,您稍后可以弄清楚如何训练 nltk 的 PunktSentenceTokenizer,它使用无监督的统计算法来了解句子终止符的哪些使用实际上结束了一个句子。

如果您的语料库阅读器的配置相当复杂,您可能会发现创建一个专门用于PlaintextCorpusReader. 但很多时候这是不必要的。查看 NLTK 代码以了解古腾堡语料库是如何实现的:它只是一个PlainTextCorpusReader为构造函数提供适当参数的实例。

于 2012-04-07T12:33:02.137 回答
0

1)摆脱最后一行是相当简单的。

f = open('corpus.txt', 'r')
for l in f.readlines()[:-1]:
   ....

for 循环中的 [:-1] 将为您跳过最后一行。

2) 文件对象的内置 readlines() 函数通过使用换行符作为分隔符将文件中的内容分成几行。所以你需要写一些代码来缓存这些行直到'|' 可见。当一个'|' 遇到,把缓存的行当成一个句子放在你的 MyData类里

于 2012-04-05T08:02:14.693 回答