【问题标题】:Not able to tag hindi sentence properly无法正确标记印地语句子
【发布时间】:2015-03-04 16:08:59
【问题描述】:

我最近开始了一个关于印地语数据处理的项目。我尝试执行以下某些代码,但没有得到预期的输出。

    e = u"पूर्ण प्रतिबंध हटाओ : इराक"
    tokens=nltk.word_tokenize(e)
    from nltk import pos_tag
    print tokens
    tag = nltk.pos_tag(tokens)
    print tag

我得到的输出如下图:

[u'\u092a\u0942\u0930\u094d\u0923', u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'\u0939\u091f\u093e\u0913', u':', u'\u0907\u0930\u093e\u0915']
[(u'\u092a\u0942\u0930\u094d\u0923', 'NN'), (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', '``'), (u'\u0939\u091f\u093e\u0913', ':'), (u':', ':'), (u'\u0907\u0930\u093e\u0915', ':')]

我的查询将我输入的第一个单词标记为名词,其余的标记不正确。相同的查询为英语数据提供了正确的输出。

我做错了什么?我必须使用任何特定功能来标记 d 印地语数据。

感谢您的帮助。

【问题讨论】:

    标签: python nltk tokenize hindi pos-tagger


    【解决方案1】:

    您可以使用tnt 标记器进行训练,然后使用您自己的数据进行测试。

    word_to_be_tagged = u"पूर्ण प्रतिबंध हटाओ : इराक"
    
    word_to_be_tagged_next = u"मैं बहुत हैरान हूँ"
    
    from nltk.corpus import indian
    
    train_data = indian.tagged_sents('hindi.pos')[:300] //used for training 
    test_data = indian.tagged_sents('hindi.pos')[301:] //used for testing 
    
    print train_data
    [[(u'\u092a\u0942\u0930\u094d\u0923', u'JJ'), (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'NN'), (u'\u0939\u091f\u093e\u0913', u'VFM'), (u':', u'SYM'), (u'\u0907\u0930\u093e\u0915', u'NNP')], [(u'\u0938\u0902\u092f\u0941\u0915\u094d\u0924', u'NNC'), (u'\u0930\u093e\u0937\u094d\u091f\u094d\u0930', u'NN'), (u'\u0964', u'SYM')], ...]
    
    print hindi_sents[0][0][0]
    पूर्ण
    
    print hindi_sents[0][0][1]
    JJ
    
    from nltk.tag import tnt
    tnt_pos_tagger = tnt.TnT()
    tnt_pos_tagger.train(train_data)
    tnt_pos_tagger.evaluate(test_data)
    0.6599664991624791
    
    tnt_pos_tagger.tag(nltk.word_tokenize(word_to_be_tagged))
    [(u'\u092a\u0942\u0930\u094d\u0923', u'JJ'),
     (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'NN'),
     (u'\u0939\u091f\u093e\u0913', u'VFM'),
     (u':', u'SYM'),
     (u'\u0907\u0930\u093e\u0915', u'NNP')]
    
    tnt_pos_tagger.tag(nltk.word_tokenize(word_to_be_tagged_next))
    [(u'\u092e\u0948\u0902', u'PRP'),
     (u'\u092c\u0939\u0941\u0924', u'INTF'),
     (u'\u0939\u0948\u0930\u093e\u0928', 'Unk'),
     (u'\u0939\u0942\u0901', 'Unk')]
    

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 2012-11-11
      • 2020-03-18
      • 1970-01-01
      • 2018-05-23
      • 2012-05-06
      • 2012-01-18
      • 1970-01-01
      • 2016-08-29
      相关资源
      最近更新 更多