使用NLTK创建和利用带标签的语料库

时间:2018-07-31 08:45:27

标签: python nltk corpus pos-tagger

我正在尝试用马达加斯加语(我的母语)创建带标签的语料库。我按照文档 Python文本处理自然语言处理以及页面https://www.nltk.org/book/ch05.html中的说明进行操作。 我已经基于通用词性标签集和一个带标签的语料库创建了自己的词性标签集。 这是我的代码:

        import os, os.path
        path = os.path.expanduser('D:/Mes documents/MY_POS_tagger/nltk_data')
        if not os.path.exists(path):
            os.mkdir(path)
        print("OS path done :%s"%os.path.exists(path))


        import nltk.data
        nltk.data.path.append('D:/Mes documents/MY_POS_tagger/nltk_data')
        print("NLTK data path done:%s"%(path in nltk.data.path))

        #read a POSfile
        import nltk
        from nltk.corpus.reader import TaggedCorpusReader
        from nltk.tag import UnigramTagger

   #there's only one document malagasy.pos, it's there where my tagged corpora.

    reader = TaggedCorpusReader('D:/Mes documents/MY_POS_tagger/nltk_data/corpora/cookbook', r'.*\.pos')


    train_sents=reader.tagged_sents()
    tagger=UnigramTagger(train_sents)

#dago.txt contain just sentences without tag, i just wanted to test if the tag i assign on the POS file will work 

    text=(nltk.data.load('corpora/cookbook/dago.txt', format='raw'))
    text_tokenized=nltk.word_tokenize(text)
    print tagger.tag(text_tokenized)

我有这个结果:

OS path done :True
NLTK data path done:True
[('Matory', u'VB'), ('ny', None), ('alika', u'NN')]

所以我可以看到它是有效的,但是我在上面的文档中读到了我必须训练我的标记器。因此,我问是否有人可以建议我该怎么做,因为我读到我需要腌制受过训练的标记器,并训练和组合Ngram标记器,但我不知道泡菜的含义或作用。而且我不知道我现在在做什么,是否是使用NLTK创建和利用带标签语料库的正确路径。 谢谢

1 个答案:

答案 0 :(得分:0)

  

我需要腌制训练有素的标记器,并训练和组合Ngram标记器,但我不知道泡菜的含义或作用

根据问题的这一部分,Pickle是Python中的一个库,该库允许在您的硬盘驱动器上转储和加载二进制数据,并与您选择的任何python对象相关。

此处的信息:https://docs.python.org/3/library/pickle.html

但是建议您做的是使用经过预训练的标记器,该标记器可能属于另一种语言,并添加从已构建的马达加斯加语带标记语料库中提取的ngram。但是,如果您有使用自己的语言编写的足够多的带标记的文档集,则对您自己和NLP社区开发特定于马达加斯加语的标记器可能会更有用。经过快速研究,我在网上找不到任何东西,因此准备一个东西会很有用。